我正在尝试将SWF加载到我的主文件中。 SWF是ColorWheel.swf,主文件是c_test.as。这是我的代码:
var loader:Loader = new Loader();
this.addChild(loader);
loader.load(new URLRequest("ColorWheel.swf"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,imageLoaded);
var myClass:Class;
function imageLoaded(e:Event):Class
{
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,imageLoaded);
return loader.contentLoaderInfo.applicationDomain.getDefinition("StageColorWheel") as Class;
}
myClass = imageLoaded;
var myWheel:BitmapData = new myClass();
这给了我一个隐含的强制错误,我有myClass = imageLoaded
。我相当肯定这是一个简单的解决方案,但如果有人有答案我会非常感激。这是我之前的当前代码(有效,但将加载到c_test.as后的所有内容包含在imageLoaded
函数中。
var loader:Loader = new Loader();
this.addChild(loader);
loader.load(new URLRequest("ColorWheel.swf"));
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,imageLoaded);
var myClass:Class;
function imageLoaded(e:Event):Class
{
loader.contentLoaderInfo.removeEventListener(Event.COMPLETE,imageLoaded);
myClass = loader.contentLoaderInfo.applicationDomain.getDefinition("StageColorWheel") as Class;
var myWheel:BitmapData = new myClass();
//rest of code - works
}
答案 0 :(得分:1)
要涵盖实际错误的原因,请参阅以下行:
myClass = imageLoaded;
您没有调用该函数,因为您错过了括号()
。它应该是:
myClass = imageLoaded();
如果没有括号()
,您只需将函数本身的引用分配给myClass
var,这是导致错误的原因,因为var需要保存Class
1}}引用不是Function
引用。
但是,即使你纠正了这一点,这也行不通。
imageLoaded()
方法只应在加载完成后运行(实际上它会在完成后运行,因为你也将它作为事件处理程序)。
当您执行myClass = imageLoaded()
时,加载程序尚未完成加载,因此您的结果将不同/ null。
你的第二种做法是采取适当的方式。