Reputation: 3520
I am trying to access a function in a loaded swf that has external class.. I would like to avoid having to put the function on my "Main" Doc class in the external swf and instead access the function directly from the class
This is what ive tried so far and it's a no dice:
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"
}
This is the function in com.view.Creative.as
public var storedVar:String
public function setVar(str:String):void{
this.storedVar = str;
trace(storedVar)
}
//Returns "ReferenceError: Error #1069: Property setVar not found on com.view.Creative and there is no default value."
This is the other approach I took with no success
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///
}
This is the function in com.view.Creative.as
public var storedVar:String
public function setVar(str:String):void{
this.storedVar = str;
trace(storedVar)
}
//Returns "ReferenceError: Error #1069: Property setVar not found on com.view.Creative and there is no default value. at com.util::ClickArea/completeHandler()"
There's gotta be a solution for this.....Thanks in advanced!
Upvotes: 1
Views: 2243
Reputation: 1542
in second case try this :
var myGreet:Class = event.target.applicationDomain.getDefinition("com.view.Creative") as Class;
event.target is Your contentLoaderInfo .
If You loading swf into new ApplicationDomain , You cannot look for definition in currentDomain .
in first case , maybe You already have class Creative under this alias but with different params and when You load swf to currentDomain , class :"com.view.Creative" will not overwrite existing , but return class from main swf.
Upvotes: 2