如何正确加载多个外部 swf 文件?
How to properly load multiple external swf files?
我正在创建一个互动游戏。我现在有 6 个 swf 文件需要加载,我需要按顺序播放它们。
关于这个话题我有很多问题,这里是:)
第一个问题:如何在电影场景后加载外部 swf 文件?
在我的第 3 个 swf 文件中,我有一个电影场景,它将在大约 30 秒内完成。我知道延迟的方法,但是我已经上传到我的网站时,它是否能正常运行?
第二个问题:如何在用户开始玩游戏之前加载所有外部文件?
如何在让用户玩游戏之前一次加载所有 swf 文件?
这是我的部分代码示例:
import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.display.Loader;
import flash.events.Event;
import flash.net.URLRequest;
var myClip:MovieClip = root as MovieClip;
var externalClip:MovieClip;
var myLoader:Loader = new Loader();
var myLoader1:Loader = new Loader();
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderCompletedHandler);
function loaderCompletedHandler(evt:Event):void {
externalClip = myLoader.content as MovieClip;
externalClip.ext_btn.addEventListener(MouseEvent.CLICK,extCommunicate);
function extCommunicate(evt:MouseEvent):void {
trace("TEST");
myLoader1.contentLoaderInfo.addEventListener(Event.COMPLETE, thirdloaderCompletedHandler);
var newstring:String = "third.swf";
var newREQ:URLRequest = new URLRequest(newstring);
addChild(myLoader1);
myLoader1.load(newREQ);
myLoader1.x=40;
myLoader1.y=20;
removeChild(myLoader);
}
}
function thirdloaderCompletedHandler(evt:Event):void {
trace("YEAH");
}
var externalString:String = "external.swf";
var urlREQ:URLRequest = new URLRequest(externalString);
playbtn.addEventListener(MouseEvent.CLICK,swfLoad);
function swfLoad(evt:MouseEvent):void {
addChild(myLoader);
myLoader.load(urlREQ);
myLoader.x=40;
myLoader.y=20;
}
第三个问题:上面的代码是加载多个swf文件的正确方法吗?
许多问题... (1) 您可以通过 frame actions 而非 AS3 连接许多 swf 文件来加载它们。通过这种方式,您可以确保只有在上一部电影结束时才会加载下一部电影。或者,按照您的说法,您仅在第一个 "cinematic" 场景结束后才加载下一部电影。因此不要使用 "delays",因为根据用户在机器和带宽方面的配置,这会产生很大不同的结果。
(2) 您可以像预加载一部电影一样一次预加载所有电影,只是编写正确的代码,检查是否加载了 movie1,然后是 movie2 等等。
(3) 测试您自己的代码并验证它是否有效。如果不是,请尽可能多地了解错误消息和条件,并在 Whosebug 此处打开另一个问题,公开所有场景、您拥有的内容、您获得的内容和您期望的内容。
最佳
我正在创建一个互动游戏。我现在有 6 个 swf 文件需要加载,我需要按顺序播放它们。
关于这个话题我有很多问题,这里是:)
第一个问题:如何在电影场景后加载外部 swf 文件?
在我的第 3 个 swf 文件中,我有一个电影场景,它将在大约 30 秒内完成。我知道延迟的方法,但是我已经上传到我的网站时,它是否能正常运行?
第二个问题:如何在用户开始玩游戏之前加载所有外部文件?
如何在让用户玩游戏之前一次加载所有 swf 文件?
这是我的部分代码示例:
import flash.events.MouseEvent;
import flash.display.MovieClip;
import flash.display.Loader;
import flash.events.Event;
import flash.net.URLRequest;
var myClip:MovieClip = root as MovieClip;
var externalClip:MovieClip;
var myLoader:Loader = new Loader();
var myLoader1:Loader = new Loader();
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaderCompletedHandler);
function loaderCompletedHandler(evt:Event):void {
externalClip = myLoader.content as MovieClip;
externalClip.ext_btn.addEventListener(MouseEvent.CLICK,extCommunicate);
function extCommunicate(evt:MouseEvent):void {
trace("TEST");
myLoader1.contentLoaderInfo.addEventListener(Event.COMPLETE, thirdloaderCompletedHandler);
var newstring:String = "third.swf";
var newREQ:URLRequest = new URLRequest(newstring);
addChild(myLoader1);
myLoader1.load(newREQ);
myLoader1.x=40;
myLoader1.y=20;
removeChild(myLoader);
}
}
function thirdloaderCompletedHandler(evt:Event):void {
trace("YEAH");
}
var externalString:String = "external.swf";
var urlREQ:URLRequest = new URLRequest(externalString);
playbtn.addEventListener(MouseEvent.CLICK,swfLoad);
function swfLoad(evt:MouseEvent):void {
addChild(myLoader);
myLoader.load(urlREQ);
myLoader.x=40;
myLoader.y=20;
}
第三个问题:上面的代码是加载多个swf文件的正确方法吗?
许多问题... (1) 您可以通过 frame actions 而非 AS3 连接许多 swf 文件来加载它们。通过这种方式,您可以确保只有在上一部电影结束时才会加载下一部电影。或者,按照您的说法,您仅在第一个 "cinematic" 场景结束后才加载下一部电影。因此不要使用 "delays",因为根据用户在机器和带宽方面的配置,这会产生很大不同的结果。
(2) 您可以像预加载一部电影一样一次预加载所有电影,只是编写正确的代码,检查是否加载了 movie1,然后是 movie2 等等。
(3) 测试您自己的代码并验证它是否有效。如果不是,请尽可能多地了解错误消息和条件,并在 Whosebug 此处打开另一个问题,公开所有场景、您拥有的内容、您获得的内容和您期望的内容。 最佳