我有一个项目,用户可以选择按下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()
parens中添加多个实例,如下所示:
removeChild(Loader3, Loader2, Loader4, ...);
然而它不起作用。
堆叠removeChild
似乎也不起作用:
removeChild(myLoader);
removeChild(Loader2);
removeChild(Loader3);
//etc.
不确定如何继续,非常感谢任何帮助!
提前致谢,
Llyfre
答案 0 :(得分: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);