我试图通过随机告诉从数组到哪里将元素从一个位置移动到另一位置。但这并不像我希望的那样。
代码是这个
public class Main extends MovieClip
{
private var positions:Array = [ 0, 100, 200 ];//different X positions
public function Main()
{
for( var i:int = 0; i < 3; i++)
{
var box:Sprite = new Sprite();
box.graphics.beginFill( Math.random()*0xffffff );
box.graphics.drawRect( 100* i, 0, 80, 80);
box.graphics.endFill();
this.addChild( box );
box.addEventListener(MouseEvent.CLICK, onBoxClick);
}
}
private function onBoxClick( ev:MouseEvent ):void
{
var currentObj:Sprite = ev.currentTarget as Sprite;
var randomNumber:int = Math.random() * positions.length;
currentObj.x = positions[ randomNumber ];
currentObj.y = 200;
positions.splice( randomNumber, 1 );
}
}
如您所见,我删除了给定的X位置,以便2个元素可以在舞台上具有相同的位置。但是代码所做的是它获取了元素的当前X位置并将其添加到新的X位置。因此,如果我单击元素1并获得位置2,单击元素2并获得位置1并单击元素3并获得位置0,它将是这样的:
element1.x (0) + 200 = 200;
element2.x (100) + 100 = 200;
element3.x (200) + 0 = 200;
他们将全部位于同一地点(比其他地点多1个地点)。
我想要做的是:
element1.x (no matter where it is ) + 200 = 200;
element2.x (no matter where it is ) + 100 = 100;
element3.x (no matter where it is ) + 0 = 0;
我尝试这样做
currentObj.x = 0 + positions[ randomNumber ];
或者
currentObj.x = stage.x + positions[ randomNumber ];
但随后(当前元素)仍将其当前位置计为“ 0”并添加到该位置。
我想念什么吗?
更改此行:
box.graphics.drawRect( 100* i, 0, 80, 80);
这样 :
box.graphics.drawRect(0, 0, 80, 80);
box.x = 100 * i;
然后应该会更好。
您的问题是您是从“盒子”中的位移点开始绘制的。因此,当您将其移动为x时,位移即为总和。
将其绘制在0点将允许您删除该偏移量。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句