有没有办法在加载的SWF文件中调用函数?
基本上,我有一个.swf文件(A)加载另一个.swf文件(B)...我只想将B视为添加到我的类中的任何其他实例.swf“A”。 ..
必须使用.swf文件类的名称重新命名“Loader”:
加载.swf类:
package src {
import flash.display.MovieClip;
public class LoadedSWF extends MovieClip {
public function LoadedSWF() {
}
public function helloWorld():void
{
trace("hello world from loaded swf!");
}
}
}
主要课程:
package src {
import flash.display.Loader;
import flash.net.URLRequest;
import flash.display.MovieClip;
import flash.events.Event;
public class Main extends MovieClip {
private var loader:Loader;
public function Main() {
loadSWF("LoadedSWF.swf")
}
private function loadSWF(url:String):void {
var urlRequest:URLRequest = new URLRequest(url);
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded, false, 0, true);
loader.load(urlRequest);
addChild(loader);
}
private function onLoaded(e:Event):void {
var target:LoadedSWF = e.currentTarget.loader.content as LoadedSWF;
trace(target);
target.helloWorld();
addChild(target);
}
}
}
答案 0 :(得分:7)
有两种情况,即
首先,在这两种情况下,您必须确保已加载的swf(B)已加载并使用Event.COMPLETE
添加到Loader swf(A)。然后两个swf之间的通信是可能的。加载的瑞士法郎就像任何其他孩子一样。
以下是案例2的示例代码
var mLoader:Loader = new Loader();
mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
mLoader.load(new URLRequest("B.swf"));
public function onCompleteHandler(evt:Event)
{
var embedSWF:MovieClip = MovieClip(evt.target.content);
addChild(embedSWF);
embedSWF.function_OF_B();
}
embedSWF.function_OF_B()
语句将调用子swf B的函数,即function_OF_B()
答案 1 :(得分:4)
在Adobe Flex中,您可以使用flash.display.Loader类加载另一个SWF,并向其添加事件侦听器。
此示例取自Adobe文档:
var url:String = "http://www.helpexamples.com/flash/images/image2.jpg";
var urlRequest:URLRequest = new URLRequest(url);
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_complete);
loader.load(urlRequest);
addChild(loader);
function loader_complete(evt:Event):void {
var target_mc:Loader = evt.currentTarget.loader as Loader;
target_mc.x = (stage.stageWidth - target_mc.width) / 2;
target_mc.y = (stage.stageHeight - target_mc.height) / 2;
}
因为contentLoaderInfo是EventDispatcher的子类,所以您也可以将事件分派给加载的SWF。 这基本上就像从SWF调用一个函数,只是稍微复杂一点。