每次按下按钮而不更换现有的孩子,我怎样才能在舞台上添加孩子(实例)?
我有四个类:Symbol1,Symbol3,Symbol4,all。
当我按下Symbol3这是一个按钮时,我想通过类all.as在舞台上创建一个Symbol1实例。使用Symbol4我想在舞台上按创建顺序删除一个创建的实例。 示例:我已按下Symbol3三次,并在舞台上创建了三个Symbol1实例。现在,如果我按下Symbol4,我将删除第一个创建的实例。如果我再次按下Symbol4,我将删除第二个创建的实例。
public class Symbol3 extends SimpleButton
{
private var creator:all;
private var child:Symbol1 = new Symbol1 ;
private var child2:Symbol1 = new Symbol1 ;
private var child3:Symbol222 = new Symbol222 ;
public function Symbol3()
{
addEventListener(MouseEvent.CLICK, onCLICK);
}
private function onCLICK(s:MouseEvent)
{
creator = new all(child);
stage.addChild(creator);
}
}
public class all extends MovieClip
{
private var _thief1:MovieClip;
public function all(par1:MovieClip)
{
_thief1 = par1;
addEventListener(Event.ADDED_TO_STAGE, onADDED_TO_STAGE);
}
private function onADDED_TO_STAGE(e:Event)
{
removeEventListener(Event.ADDED_TO_STAGE, onADDED_TO_STAGE);
this.addChild(_thief1);
_thief1.x = Math.random() * 200;
_thief1.y = Math.random() * 200;
}
}
public class Symbol4 extends SimpleButton
{
public function Symbol4()
{
addEventListener(MouseEvent.CLICK, onCLICK);
}
private function onCLICK(s:MouseEvent)
{
stage.removeChild(?);
}
}
我到目前为止。 感谢
答案 0 :(得分:0)
您应该将所有可添加/可移动的精灵放在同一个容器中,我们称之为container
。
然后添加按钮将如下所示:
private function onCLICK(s:MouseEvent)
{
container.addChild(new all(new Symbol1()));
}
删除按钮:
private function onCLICK(s:MouseEvent)
{
container.removeChildAt(0);
}
在第0层移除子项时,其他子项将向下一层,下一个要删除的子项将为0。
答案 1 :(得分:0)
感谢Kodiak的帮助!
我终于做到了。我不确定这是否是正确的方法,但至少它是有效的。
我有三个类: AddChild2.as - 与Button的链接 Creator.as Ship2.as - 与MovieClip的链接
棘手的时刻是舞台必须作为参数转移以避免错误:1009。另一个想法是Creator的空构造函数,它使代码更加灵活和独立。现在Creator可以生成任何传递的movieClip。我再次相信还有另一种更好的方法,所以任何改进都是值得欢迎的。
public class AddChild2 extends SimpleButton
{
private var creatorche:Creator = new Creator;
private var s:Ship2;
public function AddChild2()
{
// constructor code
addEventListener(MouseEvent.CLICK, onCLICK)
}
private function onCLICK(e:MouseEvent)
{
s = new Ship2;
creatorche.onCreator(s, stage);
}
}
public class Creator extends MovieClip
{
private var ship:MovieClip;
public function Creator()
{
// constructor code
}
public function onCreator(par1:MovieClip, par2:Stage)
{
ship = par1;
par2.addChild(ship);
ship.x = Math.random() * 200;
ship.y = Math.random() * 200;
}
}
public class Ship2 extends MovieClip
{
public function Ship2()
{
// constructor code
}
}