我正在尝试访问具有外部类的已加载swf中的函数。 我想避免将该函数放在外部swf中的“Main”Doc类中 而是直接从类
访问该函数到目前为止,这是我尝试过的,这是一个没有骰子的事情:
private function startLoad(){
var loader:Loader = new Loader();
var req:URLRequest = new URLRequest("one.swf");
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete);
loader.load(req);
}
private function onLoadComplete(e:Event):void{
var ClassDefinition:Class = e.target.applicationDomain.getDefinition("com.view.Creative") as Class;
var butn:MovieClip = new ClassDefinition(0,0);////0,0 is x and y cordinates I have in the "com.view.Creative" class
this.addChild(butn);
butn.setVar("one");////"setVar" is the function in my external swf with the class "com.view.Creative"
}
这是com.view.Creative.as中的函数
public var storedVar:String
public function setVar(str:String):void{
this.storedVar = str;
trace(storedVar)
}
//返回“ReferenceError:错误#1069:在com.view.Creative上找不到属性setVar,并且没有默认值。”
这是我采取的另一种方法,但没有成功
private function startLoad(){
var appDomain:ApplicationDomain = new ApplicationDomain();
var context:LoaderContext = new LoaderContext(false, appDomain);
var loader:Loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
loader.load(new URLRequest("one.swf"), context);
}
private function completeHandler(event:Event):void {
var myGreet:Class = ApplicationDomain.currentDomain.getDefinition("com.view.Creative") as Class;
var app : MovieClip = new myGreet(0,0)
addChild(app);
app.setVar("one");////set var is the function in my external swf with the class "com.view.Creative" I am trying to access
//event.target.content.setVar("one");///this works if I am placing my "setVar" function on my "Main" Doc Class which I am trying to avoid///
}
这是com.view.Creative.as中的函数
public var storedVar:String
public function setVar(str:String):void{
this.storedVar = str;
trace(storedVar)
}
//返回“ReferenceError:错误#1069:在com.view.Creative上找不到属性setVar,并且没有默认值。 在com.util :: ClickArea / completeHandler()“
必须有一个解决方案.....谢谢先进!
答案 0 :(得分:1)
在第二种情况下试试这个:
var myGreet:Class = event.target.applicationDomain.getDefinition("com.view.Creative") as Class;
event.target是您的contentLoaderInfo。
如果您将swf加载到新的ApplicationDomain中,则无法在currentDomain中查找定义。
在第一种情况下,也许您已经在此别名下使用了Creative类,但使用了不同的参数,当您将swf加载到currentDomain时,类:“com.view.Creative”不会覆盖现有的,而是从主swf返回类。 / p>