【问题标题】:External swf still loading to other scenes? How to properly unload?外部 swf 仍然加载到其他场景?如何正确卸货?
【发布时间】:2014-02-10 15:04:59
【问题描述】:

我遇到了同样的问题,但在不同的场景中,我有 4 个场景,在我的第 4 个场景中,我有 3 个按钮,用于加载和卸载外部 swf。在第 4 个场景中它运行良好,但是当我尝试点击我的主导航(链接到场景 1,2 和 3)时,外部 swf 仍在加载到其他场景......这太疯狂了,我尝试了很多方法,但它不起作用。

这是我的脚本:场景 4

import flash.display.MovieClip;
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.MouseEvent;

var Xpos:Number = 525;
var Ypos:Number = 200;
var swf:MovieClip;
var loader:Loader=new Loader();

var defaultSWF:URLRequest=new URLRequest("Steps/intro.swf");


loader.load(defaultSWF);
loader.x = Xpos;
loader.y = Ypos;
addChild(loader);
//button function 
function btnCLICK(event:MouseEvent):void{ removeChild(loader);
var newSWFRequest:URLRequest = new URLRequest("Steps/" + event.target.name + ".swf");   
loader.load(newSWFRequest); loader.x = Xpos; loader.y = Ypos; //addChild(loader);

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, function(){ 
loader.content.height = 140;
loader.content.scaleX = loader.content.scaleY;});
addChild(loader);

}

//button listeners
NewBusinessPermit.addEventListener(MouseEvent.CLICK, btnCLICK);
RenewBusinessPermit.addEventListener(MouseEvent.CLICK, btnCLICK);
RPTAPayment.addEventListener(MouseEvent.CLICK, btnCLICK);

我把这个脚本放到所有其他场景 (1,2,3) 中以从场景 4 中卸载电影

if(stage.contains(loader)){
removeChild(loader);
}
else{
loader = null;  // 've also tried replacing this with gotoAndPlay ("frame name");
}

**我实际上想在此声明 IT 在这些场景 (1,2 0r 3) 中仍然存在仍在加载的外部子 swf 的痕迹,将其从舞台上移除并继续播放其中的任何补间动画现在的这个场景。否则,如果您跟踪它没有,只需继续并在当前场景中播放补间动画。

不幸的是,我遇到了错误,我不知道我的脚本是否符合目标。帮忙?

【问题讨论】:

    标签: actionscript-3 flash


    【解决方案1】:

    您可以尝试卸载已加载的 swf:

    loader.unloadAndStop( true ); 
    if( stage.contains(loader) )    removeChild( loader );
    loader = null;
    

    您可以查看文档here

    或者您也可以尝试停止加载程序中的所有剪辑:

    MovieClip(loader.content).stopAllMovieClips();
    if( stage.contains(loader) )    removeChild( loader );
    loader = null;
    

    您可以查看文档here

    我认为第一种方法应该不错。

    【讨论】:

    • 我已经尝试了这两个脚本并且我得到了这个错误:italic TypeError:错误#1009:无法访问空对象引用的属性或方法。在 demo_fla::MainTimeline/frame130()[demo_fla.MainTimeline::frame130:2]
    • 这一行的代码是什么?它是在您加载的 swf 上还是在您的主 swf 上?
    • 请调试您的电影 (ctrl+shift+enter) 而不是运行它 (ctrl+enter),您将看到更好的错误信息和发生错误的行。您也可以看到变量的状态,这非常有用!
    • 我不能使用第二个脚本,因为每个场景里面都有一个自动播放的影片剪辑。每个场景都会弹出错误(外部 swf 的场景持有者除外)。每个场景都有一个按钮编码。
    • OK 那不回答问题 ;) 但尝试添加对 loader 的验证仍然存在: if( loader != null ){ loader. ... };确定如果你将 loader 变量设为 null 并仍然尝试访问它,它会抛出错误...
    猜你喜欢
    • 1970-01-01
    • 2016-11-09
    • 2013-02-05
    • 1970-01-01
    • 2011-03-29
    • 1970-01-01
    • 1970-01-01
    • 2016-06-22
    • 1970-01-01
    相关资源
    最近更新 更多