It may be worth looking ClassFactory or an ObjectTranslator as well.
Depends if you need to set values on your new class.
On 09/04/2007, at 11:42 PM, Toby Tremayne wrote:
Hi Erik - yup that's what I went with :)
Toby
On 09/04/2007, at 13:41 , Erik Price wrote:
On 4/8/07, Toby Tremayne <[EMAIL PROTECTED]> wrote:
Hi all,
I have a method which retrieves an actionscript object, and
depending on the value of one of the keys, converts it into an
actionscript class. The issue I have is I don't know how to
instantiate a class whose name
I can't hard code - can anyone help me with this?
Basically the idea is that if obj.classname = "Page" then I need
to write oPage : Page = new Page(); dynamically. Is there any
way to do this in actionscript?
You can use the "getDefinitionByName" function to retrieve a
reference to a Class, and then you can create an instance of that
class using the "new" operator on the Class reference. The
following is a very simplistic demonstration of how to instantiate
the instances, but in practice you will probably want all of your
dynamically-instantiated classes to implement a common interface,
and cast the instantiated objects to that interface, so that you
don't have to write a bunch of conditionals into your code every
time you add a new class:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
applicationComplete="appComplete( event );">
<mx:Script>
<![CDATA[
import defaultpckg.MyClass;
private function appComplete( event : Event ) : void
{
var classRef : Class = getDefinitionByName
( "defaultpckg.MyClass " ) as Class;
var myInstance : MyClass = new classRef() as MyClass;
myInstance.message = "Done";
myInstance.showMessage();
}
]]>
</mx:Script>
</mx:Application>
In a separate file, ./defaultpckg/MyClass.as:
package defaultpckg
{
import mx.controls.Alert;
public class MyClass
{
private var _message : String;
public function set message( msg : String ) : void
{
this._message = msg;
}
public function showMessage() : void
{
Alert.show ( this._message );
}
}
}
-----------------------------------
Life is poetry, write it in your own words
-----------------------------------
Toby Tremayne
Senior Technical Consultant
Lyricist Software
0416 048 090
ICQ: 13107913