我有两个文件:Main.swf和DataEnter.swf。每个都有一个文档类。我尝试在Main.swf中加载DataEnter.swf。
Main.as
package
{
import flash.events.*;
import flash.display.MovieClip;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.display.Loader;
public class Main extends MovieClip
{
public function Main()
{
var loader: Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, DataEnter_loadComplete);
loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onError);
loader.load(new URLRequest('DataEnter.swf'));
}
function DataEnter_loadComplete(evt: Event):void
{
trace(evt.target.content); // DataEnter__Preloader__
var SWF = evt.target.content;
SWF.FooBar(); //Error #1069: Property FooBar not found on DataEnter__Preloader__ and there is no default value
}
}
}
DataEnter.as
package
{
import flash.display.Sprite;
public class DataEnter extends Sprite
{
private var _socketWorker:Foo;
public function setSocketWorker(sw:Foo)
{
_socketWorker = sw;
}
public function FooBar()
{
//do something
}
}
}
当在Main类中发生Loader的事件 Event.COMPLETE 时, evt.target.content 包含对象 DataEnter_ Preloader _ 即可。 但它必须是“ DataEnter ”。
有什么问题?如何调用Loaded Class的方法FooBar?
答案 0 :(得分:1)
您是否有可能使用扩展ActionScript设置面板的“运行时共享库”部分中的预加载器选项?
答案 1 :(得分:1)
我也遇到了这个问题。回溯后,结果是在数据swf中添加嵌入字体导致了它。
我建议从DataEnter.FLA中删除任何嵌入字体,然后重新发布SWF,以使其正常工作
答案 2 :(得分:1)
我在 FlashDevelopIDE 中打开了DataEnter.swf。这表明我的文件有两个框架,但 FlashIDE 它只有一个框架。
在DataEnter的DocumentClass中,我添加了一个类“Foo”,它与套接字一起使用。但是,这个类的对象,在构造函数中传递。
当我删除“Foo”类并再次发布文件时,在加载swf文件时* DataEnter_Preloader_ *消失了,预期的 DataEnter 就在那里。
抱歉英语不好