当我想要做的只是减小宽度时,我似乎遇到矩形从指定位置移动的问题。我正在研究的游戏模拟带有保险丝的爆炸物。随着时钟倒计时,保险丝尺寸减小。我认为问题与本地坐标与全局坐标有关,但我不确定如何纠正问题。这是一些代码:
//fuse
_fuse = new Sprite();
_fuse.graphics.beginFill(0x000000);
_fuse.graphics.drawRect(630, 340, (_fuseCounter / _fuseWidth) * 120, 20);
_fuse.graphics.endFill();
这是我每帧减小宽度的地方:
//decrease fuse to give the player a visual of urgency.
_fuseCounter--;
_fuse.width = (_fuseCounter/ _fuseWidth) * 120;
我的代码中没有任何地方保险丝的x位置发生变化。除了这个问题之外,rect的功能正是我想要的。任何有关此问题的帮助表示赞赏。
答案 0 :(得分:1)
你的问题是你在630,340处绘制矩形,然后减小它周围的宽度。
想象这个
0 100
-----------------------
| |
| ----- |
| | | |
| ----- |
| |
| |
-----------------------
当您减小宽度时,您实际上是将外部动画片段的左边缘拉向右边缘,随时缩放嵌套内容。导致像这样的事情
0 75
-------------------
| |
| --- |
| | | |
| --- |
| |
| |
-------------------
所以为了解决这个问题,你可以筑巢。添加一个新的精灵到_fuse并缩放
var s:Sprite = new Sprite();
s.x =630;
s.y = 340
s.graphics.drawRect(0, 0, (_fuseCounter / _fuseWidth) * 120, 20);
fuse.addChild(s);
然后缩放s.width
如果你不想嵌套你也可以只做一个graphics.clear()并将rect重绘为新的,更小的宽度