AS3:每次按下按钮而不更换现有的孩子,我怎样才能在舞台上添加一个孩子(实例)?

时间:2013-04-23 23:05:37

标签: actionscript-3 replace instance removechild addchild

每次按下按钮而不更换现有的孩子,我怎样才能在舞台上添加孩子(实例)?

我有四个类: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(?);
    }
}

我到目前为止。 感谢

2 个答案:

答案 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
    }
}