0

每次按下按钮时如何在舞台上添加一个孩子(实例)而不替换现有的孩子?

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

这是我到目前为止。谢谢

4

2 回答 2

0

您应该将所有可添加/可移除的精灵放在同一个容器中,我们称之为container. 然后添加按钮将如下所示:

private function onCLICK(s:MouseEvent)
{
    container.addChild(new all(new Symbol1()));
}

和删除按钮:

private function onCLICK(s:MouseEvent)
{
    container.removeChildAt(0);
}

当移除第 0 层上的孩子时,其他孩子将向下一层,下一个要移除的孩子将在 0 上。

于 2013-04-24T08:38:45.773 回答
0

感谢科迪亚克的帮助!

我终于成功了。我不确定这是否是正确的方法,但至少它有效。

我有三个类: 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
    }
}
于 2013-04-24T17:06:02.507 回答