0

当我想要做的只是减小它们的宽度时,我似乎遇到了矩形从指定位置移动的问题。我正在开发的一款游戏模拟了带有保险丝的炸药。随着时钟倒计时到 0,保险丝的尺寸减小。我认为问题与局部坐标与全局坐标有关,但我不知道如何解决这个问题。这是一些代码:

//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 的功能完全符合我的要求。对此问题的任何帮助表示赞赏。

4

1 回答 1

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() 并将矩形重绘为新的、更小的宽度

于 2012-04-12T01:55:36.103 回答