我以前从未见过这种情况。我有一些非常简单的代码来显示一个Sprite并移动它。我首先用这段代码将它添加到舞台上:
public var floor:Floor;
public var char:Character;
public function Game()
{
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event):void{
floor = new Floor();
addChild(floor);
char = new Character();
addChild(char);
char.x = stage.stageWidth - char.width;
var item:Sprite = new Sprite();
item.graphics.beginFill(0x666600);
item.graphics.drawRect(400, 400, 50, 50);
item.addEventListener(MouseEvent.CLICK, moveEast);
addChild(item);
}
图形的最后一点仅用于测试;基本上,我想要一个按钮,我可以按下并让它将所有内容移动50像素。这是moveEast函数:
public function moveEast(e:Event):void {
floor.x += 50;
}
如您所见,这非常简单。理论上,我应该添加我的Floor对象,然后每当按下按钮时将其移动到右侧50像素。然而,在实践中,所发生的是两种变化而不是变化。具体来说,它确实转变;我可以将它一直移动到舞台上并让整个物体移动。但是,它还保留原始位置的对象副本。我有信心,我没有意外地在某个地方添加了另一个孩子。如果我从代码中删除单个addChild(floor)行,则不显示任何内容。关于为什么会这样做的任何想法?