0

今天除了错误什么都没有!如果能在这方面得到一些帮助,那就太好了。

我正在为 AIR 应用程序调用外部子 swfs;超级简单 - 使用按钮调用它们,并使用“主页”按钮删除它们,就是这样。但是我得到了这些错误,我无法发布,即使是测试,也不会导致整个系统崩溃。请帮忙!从字面上看,我已经坚持了好几个星期了!

这是错误:

TypeError: Error #2007: Parameter child must be non-null.
at flash.display::DisplayObjectContainer/removeChild()
at pocketDinos_fla::MainTimeline/fl_ClickToGoToAndStopAtFrame_20_1()  
[pocketDinos_fla.MainTimeline::frame162:18]
Test Movie terminated.

这就是我认为导致主时间轴上的问题的原因(这是主时间轴上的所有代码):

 stop();

//home button

button_home.addEventListener(MouseEvent.CLICK, fl_ClickToLoadUnloadSWF_01_1,false,0,true);

function fl_ClickToLoadUnloadSWF_01_1(event:MouseEvent):void
{
removeChild(fl_ProLoader_01);
fl_ProLoader_01.unloadAndStop();
fl_ProLoader_01 = null;
}

button_home.addEventListener(MouseEvent.CLICK,     
fl_ClickToGoToAndStopAtFrame_01_1,false,0,true);

function fl_ClickToGoToAndStopAtFrame_01_1(event:MouseEvent):void
{
removeChild(fl_ProLoader_01);

}
button_home.addEventListener(MouseEvent.CLICK, fl_ClickToStopAllSounds_01_1,false,0,true);

function fl_ClickToStopAllSounds_01_1(event:MouseEvent):void
{
SoundMixer.stopAll();
}

button_home.addEventListener(MouseEvent.CLICK,     
fl_ClickToGoToAndStopAtFrame_01_2,false,0,true);

function fl_ClickToGoToAndStopAtFrame_01_2(event:MouseEvent):void
{
gotoAndStop("home");
}

//back to time period button

back_to_triassic.addEventListener(MouseEvent.CLICK,    
fl_ClickToLoadUnloadSWF_01_2,false,0,true);

function fl_ClickToLoadUnloadSWF_01_2(event:MouseEvent):void
{
removeChild(fl_ProLoader_01);
fl_ProLoader_01.unloadAndStop();
fl_ProLoader_01 = null;
}

back_to_triassic.addEventListener(MouseEvent.CLICK,   
fl_ClickToGoToAndStopAtFrame_01_3,false,0,true);

function fl_ClickToGoToAndStopAtFrame_01_3(event:MouseEvent):void
{
removeChild(fl_ProLoader_01);

}
back_to_triassic.addEventListener(MouseEvent.CLICK,    
fl_ClickToStopAllSounds_01_2,false,0,true);

function fl_ClickToStopAllSounds_01_2(event:MouseEvent):void
{
SoundMixer.stopAll();
}

back_to_triassic.addEventListener(MouseEvent.CLICK,    
fl_ClickToGoToAndStopAtFrame_01_4,false,0,true);

function fl_ClickToGoToAndStopAtFrame_01_4(event:MouseEvent):void
{
gotoAndStop("TRI_home");
}


//start button

start_button_TRI_coelophysis.addEventListener(MouseEvent.CLICK,   
fl_ClickToLoadUnloadSWF_01_3,false,0,true);

import fl.display.ProLoader;
import flash.events.Event;

var fl_ProLoader_01:ProLoader;

function fl_ClickToLoadUnloadSWF_01_3(event:MouseEvent):void
{
if(fl_ToLoad_01)
{
    fl_ProLoader_01 = new ProLoader();
    fl_ProLoader_01.load(new URLRequest("dinofilms/triassic_coelophysis.swf"));

fl_ProLoader_01.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete_01)
    addChild(fl_ProLoader_01);
    fl_ProLoader_01.x = 0;
    fl_ProLoader_01.y = 144;
}
else
{
    if(fl_ProLoader_01!=null) {
        removeChild(fl_ProLoader_01);
        fl_ProLoader_01.unloadAndStop();
        fl_ProLoader_01 = null;
    }
}
fl_ToLoad_01 = !fl_ToLoad_01;

}

function onComplete_01(e:Event):void {
e.currentTarget.content.addEventListener(Event.ENTER_FRAME,OEF_01);
}

function OEF_01(e:Event):void {
if(e.currentTarget.currentFrame==e.currentTarget.totalFrames) {
    e.currentTarget.stop();
    e.currentTarget.removeEventListener(Event.ENTER_FRAME,OEF_01);

    removeChild(fl_ProLoader_01);
    fl_ProLoader_01.unloadAndStop();
    fl_ProLoader_01 = null;
}
}
4

2 回答 2

0

我想它已经解决了!

stop();

//home button

button_home.addEventListener(MouseEvent.CLICK,     
fl_ClickToGoToAndStopAtFrame_01_1,false,0,true);
function fl_ClickToGoToAndStopAtFrame_01_1(event:MouseEvent):void
{
if(fl_ProLoader_01 && fl_ProLoader_01.stage){ 
 fl_ProLoader_01.parent.removeChild(fl_ProLoader_01);}
 gotoAndStop("home");
 }


button_home.addEventListener(MouseEvent.CLICK, fl_ClickToStopAllSounds_01_1,false,0,true);
function fl_ClickToStopAllSounds_01_1(event:MouseEvent):void
{
SoundMixer.stopAll();
}



//back to time period button


back_to_triassic.addEventListener(MouseEvent.CLICK,     
fl_ClickToGoToAndStopAtFrame_01_3,false,0,true);
function fl_ClickToGoToAndStopAtFrame_01_3(event:MouseEvent):void
{
if(fl_ProLoader_01 && fl_ProLoader_01.stage){ 
 fl_ProLoader_01.parent.removeChild(fl_ProLoader_01);}
 gotoAndStop("TRI_home");
 }

back_to_triassic.addEventListener(MouseEvent.CLICK,     
fl_ClickToStopAllSounds_01_2,false,0,true);
function fl_ClickToStopAllSounds_01_2(event:MouseEvent):void
{
SoundMixer.stopAll();
}

但是,我仍然遇到子文件没有加载到设备本身的问题 - 奇怪 - 它们在“测试”导出时加载正常,但在我发布到设备时加载(在这种情况下为 ios)。有没有人有任何想法?

于 2013-08-17T15:40:35.623 回答
0

在你的function fl_ClickToGoToAndStopAtFrame_01_1你说removeChild(fl_ProLoader_01);,但你也叫它function fl_ClickToLoadUnloadSWF_01_1。两个函数都分配给同一个 MovieClip/Button,因此它会在第 18 行再次在同一个 MovieClip/Button 上调用 removeChild 时给出它为 null 的错误。

于 2013-08-16T17:25:51.230 回答