我试图通过随机告知从阵列到哪里来将元素从一个地方移动到另一个地方。但它并没有像我希望的那样发挥作用。
代码就是这个
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 ];
但是它(当前元素)仍将其当前位置计为&#39; 0&#39;并加入其中。
我错过了什么吗?
答案 0 :(得分:1)
更改此行:
box.graphics.drawRect( 100* i, 0, 80, 80);
由此:
box.graphics.drawRect(0, 0, 80, 80);
box.x = 100 * i;
它应该更好。
你的问题是你从&#34;框&#34;中的移位点抽签。所以,当你移动它的x时,位移就是总结。
将其绘制在0点将允许您移除该偏移。