如何在As3 Flash cc中加载swf后进入下一个场景

时间:2017-08-08 07:45:13

标签: actionscript-3 flash

我目前正在adobe flash cc 2014工作,我已经加载了一个包含大约5000帧动画的.swf文件。然后我想在这个加载的文件播放完毕后转到下一个场景。

这是我的代码,只是简单的加载程序代码:

stop();
var myLoader:Loader = new Loader();
var url:URLRequest = new URLRequest("jenissendi.swf");
myLoader.load(url);
addChild(myLoader);

现在,我该怎么做这个代码? 有人可以给我一个简单的步骤,因为我还是新手吗

感谢。

2 个答案:

答案 0 :(得分:0)

关于 Loader 类可能会让初学者感到困惑的是,与加载过程相关的事件是从附加到 Loader LoaderInfo 对象调度的>而不是 Loader 本身。

stop();

var myLoader:Loader = new Loader;
var url:URLRequest = new URLRequest("jenissendi.swf");

myLoader.contentLoaderInfo.addEventListener(Event.INIT, onInit);
myLoader.load(url);

addChild(myLoader);

function onInit(e:Event):void
{
    nextScene();
}

答案 1 :(得分:0)

首先,您需要倾听内容何时完成加载 - 因为您不知道内容在此之前有多少帧。

然后,您需要确定加载内容的时间轴何时播放完毕。

这是一个代码示例,其中的注释解释了正在进行的操作。

stop();
var myLoader:Loader = new Loader();
var url:URLRequest = new URLRequest("jenissendi.swf");

//before you load, listen for the complete event on the contentLoaderInfo object of your loader
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, contentLoaded, false, 0, true);

myLoader.load(url);
addChild(myLoader);

//this function runs when the content is fully loaded
function contentLoaded(e:Event):void {
    var loadedSwf:MovieClip = myLoader.content as MovieClip; //this is the main timeline of the loaded content
    loadedSwf.addFrameScript(loadedSwf.totalFrames - 1, contentFinished);
    //the line above tells the movie clip to run the function 'contentFinished' when it reaches the last frame.
}

//this function runs when the loaded content reaches it's last frame
function contentFinished():void {
    //clean up to avoid memory leaks
    removeChild(myLoader);
    loadedSwf.addFrameScript(loadedSwf.totalFrames - 1, null);

    nextScene();
}

addFrameScript有一些细微差别。首先,它是基于0读取帧数。这意味着第一帧是第0帧。这就是为什么从总帧中减去1以获得最后一帧的原因。其次,addFrameScript是一个未记录的功能 - 这意味着它可能在某些未来的Flash播放器/ AIR版本中不再起作用 - 尽管此时此刻不太可能。 删除框架脚本(通过传递null作为函数)以防止内存泄漏也非常重要。