AS3 Instantiate Class From External SWF
actionscript, actionscript-3, external, flash
Solution
You need to do two things:
- Give `Dashboard` a package (`package.to.Dashboard`). Package-less classes are given different attributes (a protected namespace) in compiled form than those with packages, making them inaccessible to external SWFs.
- Ensure that your loaded SWF is loaded into the same ApplicationDomain as the parent
You should then be able to use `getDefinitionByName` from the loaded SWF and `new` the return `Class`.
Problem
I was chatting with my buddy about this, he is convinced you can do this and says he has done it, but I cannot get this to work. I am wondering if it is even possible at all. I tried typing a var as a Class that is within the externally downloaded SWF and then making an instance but no can do. some code `private static function onCompleteHandler(e:Event) { dashboardObject = e.target.content; // registerClassAlias("Dashboard", ); doesnt work var dash:Class = getDefinitionByName("Dashboard") as Class; var myDash = new dash(); trace(myDash.show); }` Error `ReferenceError: Error #1065: Variable Dashboard is not defined. at global/flash.utils::getDefinitionByName() at System$/onCompleteHandler()` So it seems you cannot make an instance of a class unless it is complied within the project SWF. Which if true is what I want it to do. I do not want people trying to make instances of my classes just from downloading the SWF file for what I am building here. thanks