Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 减小宽度时如何防止矩形从其位置移动_Actionscript 3_Flash_Rect - Fatal编程技术网

Actionscript 3 减小宽度时如何防止矩形从其位置移动

Actionscript 3 减小宽度时如何防止矩形从其位置移动,actionscript-3,flash,rect,Actionscript 3,Flash,Rect,当我只想减小矩形的宽度时,我似乎对矩形从指定位置移动有问题。我正在做的一个游戏是用导火索模拟炸药。当时钟倒数到0时,保险丝的尺寸减小。我认为这个问题与局部坐标和全局坐标有关,但我不确定如何纠正这个问题。下面是一些代码: //fuse _fuse = new Sprite(); _fuse.graphics.beginFill(0x000000); _fuse.graphics.drawRect(630, 340, (_fuseCounter / _fuseWidth) * 120, 20); _

当我只想减小矩形的宽度时,我似乎对矩形从指定位置移动有问题。我正在做的一个游戏是用导火索模拟炸药。当时钟倒数到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的功能完全符合我的要求。在此问题上的任何帮助都将不胜感激

你的问题是你在630340处画矩形,然后缩小它周围的宽度

这样想吧

0                    100
-----------------------
|                     |
|          -----      |
|         |     |     |
|          -----      |
|                     |
|                     |
-----------------------
0                  75  
-------------------
|                 |
|      ---        |
|     |   |       |  
|      ---        |
|                 |
|                 |
-------------------
减小宽度时,实际上是将外部movieclip的左边缘拉向右边缘,同时缩放嵌套内容。结果是这样的

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宽度


如果不想嵌套,也可以执行graphics.clear()并将矩形重新绘制为新的较小宽度

更改显示对象的大小将根据矩形的注册点更改大小。如果要从左向右调整大小,请将注册点设置在图形的左侧(将
0
放入
drawRect()
的第三个参数中)。@Marty Wallace这并没有完全解决问题,但我学到了一些关于精灵实际绘制方式的关键知识。谢谢我在添加新的精灵方面没有太大的成功,但是重新绘制原来的rect就成功了。谢谢