0

我有一个项目,用户可以选择按 5 个键盘键中的任何一个,每个键加载一个不同的 .swf 文件。我希望用户按下任何键来卸载当前正在播放的任何 swf 并加载与按下的键相关联的任何一个。

我用两个 .swf 对此进行编码没有问题——每个加载并同时卸载另一个——但是当我添加第三个时,它变得不稳定并且第三个 removeChild 函数无法正常工作。

似乎问题在于一次只能应用一个 removeChild 。有没有解决的办法?

我正在使用的代码位于主时间轴内的帧上,并且它与直接加载 swf 的舞台以外的容器无关:

var myLoader:Loader = new Loader();
var myRequest:URLRequest=new URLRequest("swf/darker.swf");

var Loader2:Loader = new Loader();
var Request2:URLRequest=new URLRequest("swf/animalinside.swf");

var Loader3:Loader = new Loader();
var Request3:URLRequest=new URLRequest("swf/berlin1.swf");


stage.addEventListener(KeyboardEvent.KEY_DOWN, Darker);

function Darker(e:KeyboardEvent):void {
    if (e.charCode == 51) { //51=3
        myLoader.load(myRequest); 
        addChild(myLoader); 
        removeChild(Loader2);
        removeChild(Loader3);
    }
}

stage.addEventListener(KeyboardEvent.KEY_DOWN, animalInside);

function animalInside(e:KeyboardEvent):void {
    if (e.charCode == 52) { //52=4
         Loader2.load(Request2); 
         addChild(Loader2); 
         removeChild(myLoader);
         removeChild(Loader3);
    }
}


stage.addEventListener(KeyboardEvent.KEY_DOWN, Berlin1);

function Berlin1(e:KeyboardEvent):void {
    if (e.charCode == 53) {   //53=5
        Loader3.load(Request3);
        addChild(Loader3);  
        removeChild(myLoader);
        removeChild(Loader2);
    }
}

我曾尝试在removeChild()括号中添加多个实例,如下所示:
removeChild(Loader3, Loader2, Loader4, ...);但是它不起作用。

堆叠removeChild似乎也不起作用:

removeChild(myLoader);
removeChild(Loader2);
removeChild(Loader3);
//etc.

不知道如何进行,任何帮助将不胜感激!

提前致谢,

利弗雷

4

1 回答 1

0

我会走这条不同的路线。实际上是一条更容易的路线。看看我在下面写的代码。我还没有测试过,但我很确定这会奏效

var swfs:Array = ["swf/darker.swf","swf/animalinside.swf","swf/berlin1.swf"];
var swfHolder:Sprite = new Sprite();
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);

function keyDownHandler(e:KeyboardEvent):void
{
    //remove any previous children in swfHolder
    while (swfHolder.numChildren > 0) swfHolder.removeChildAt(0);

    //-- new loader and load the swf
    var loader = new Loader();

    switch (e.charCode)
    {
        case 51:
            loader.load(new URLRequest(swfs[0]));
            break;
        case 52:
            loader.load(new URLRequest(swfs[1]));
            break;
        case 53:
            loader.load(new URLRequest(swfs[2]));
            break;
    }
    swfHolder.addChild(loader);
}
addChild(swfHolder);
于 2013-06-06T18:39:46.203 回答