[flexcoders] Re: addChild from String
Did you ever get an answer on this? I'm running into the same problem with getClassByName(MyCustomClass) blowing up unless I create a dummy instance of it first. Even when I do create a dummy instance first, it only works the first time I call the getClassByName(MyCustomClass) method. After that, I start getting ReferenceError: Error #1065: Variable MyCustomClass is not defined all over again. Thanks, Paul --- In flexcoders@yahoogroups.com, Brendan Meutzner [EMAIL PROTECTED] wrote: Hey Jens, Thanks for the help. It's now working (sort of)... If I create an instance of a built-in class (such as Button), the method below works fine. However, if I try creating a custom Class (eg. MyCustClass which extends from Canvas) like so: import custclasses.MyCustClass; var newComponent:Object = createInstance (custclasses.MyCustClass); it doesn't work. I get the run-time error message Variable MyCustClass is not defined. However, if I create a dummy instance of the class in my application like so: import custclasses.MyCustClass; var dummyMyCustClass:MyCustClass = new MyCustClass(); and then create another instance using the createInstance method, it does work. Ideas? Thanks, Brendan --- In flexcoders@yahoogroups.com, Jens Halm [EMAIL PROTECTED] wrote: Hi All, I'd like to provide a String value which represents the DisplayObject class I want to create dynamically with addChild. Has anyone accomplished this? You mean like this? public function createInstance (className : String) : Object { var MyClass : Class = getClassByName(className); return new MyClass(); } Btw.: what I really miss is a method createInstance(args : Array) in the Class class, so I could easily provide an arbitrary number of constructor arguments not known until runtime, like this: public function createInstance (className:String, args:Array) : Object { var myClass : Class = getClassByName(className); return myClass.createInstance(args); } Class.createInstance(args:Array) would be the constructor equivalent of Function.apply(scope:Object, args:Array). If I use Function.apply after I created an instance the constructor would be called twice which would be quite dirty. Consider this as a feature request... ;) Jens www.oregano-server.org -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com Yahoo! Groups Links * To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ * To unsubscribe from this group, send an email to: [EMAIL PROTECTED] * Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/
[flexcoders] Re: addChild from String
I'm using a Tree. Each node from the XML of the tree contains a attribute with the name of the class that is to be instantiated when a change event occurs. The only way for me to use the String typed attribute containing the name of the class to be instantiated, along with a new statement would be with a switch statement to test the value of the attribute and then instantiate the appropriate class. I know that I can do that, but that also means that every time a new node is added to the XML for the tree, I also have to modify the source code for the function that handles the change event. If I can create the class from the string name of the class, I can add nodes to the XML without any further maintenance to the switch statement in the source code. --- In flexcoders@yahoogroups.com, Roger Gonzalez [EMAIL PROTECTED] wrote: I'm not sure how you would expect this to work! The linker follows the dependency chain of all classes referenced by your code, and bakes them into the SWF. Strings are just strings, it wouldn't make sense for the linker to look inside one. Button isn't actually a built-in class, there just happens to be a dependency link to it via Application. getClassByName (which is just a wrapper around ApplicationDomain.getClass, btw) can only see classes that are linked in. There is no way for it to find some class by string that hasn't been downloaded to the client - should it email the developer and say please compile this and send me a copy? :-) What are you trying to solve such that you can't just new your class? If you really need total decoupling like this, you might want to look into building a separately compiled SWF that contains your other classes, and loading that SWF at runtime. -rg -Original Message- From: flexcoders@yahoogroups.com [mailto:[EMAIL PROTECTED] On Behalf Of pwhite40 Sent: Saturday, February 18, 2006 9:46 PM To: flexcoders@yahoogroups.com Subject: [flexcoders] Re: addChild from String Did you ever get an answer on this? I'm running into the same problem with getClassByName(MyCustomClass) blowing up unless I create a dummy instance of it first. Even when I do create a dummy instance first, it only works the first time I call the getClassByName(MyCustomClass) method. After that, I start getting ReferenceError: Error #1065: Variable MyCustomClass is not defined all over again. Thanks, Paul --- In flexcoders@yahoogroups.com, Brendan Meutzner bmeutzner@ wrote: Hey Jens, Thanks for the help. It's now working (sort of)... If I create an instance of a built-in class (such as Button), the method below works fine. However, if I try creating a custom Class (eg. MyCustClass which extends from Canvas) like so: import custclasses.MyCustClass; var newComponent:Object = createInstance (custclasses.MyCustClass); it doesn't work. I get the run-time error message Variable MyCustClass is not defined. However, if I create a dummy instance of the class in my application like so: import custclasses.MyCustClass; var dummyMyCustClass:MyCustClass = new MyCustClass(); and then create another instance using the createInstance method, it does work. Ideas? Thanks, Brendan --- In flexcoders@yahoogroups.com, Jens Halm [EMAIL PROTECTED] wrote: Hi All, I'd like to provide a String value which represents the DisplayObject class I want to create dynamically with addChild. Has anyone accomplished this? You mean like this? public function createInstance (className : String) : Object { var MyClass : Class = getClassByName(className); return new MyClass(); } Btw.: what I really miss is a method createInstance(args : Array) in the Class class, so I could easily provide an arbitrary number of constructor arguments not known until runtime, like this: public function createInstance (className:String, args:Array) : Object { var myClass : Class = getClassByName(className); return myClass.createInstance(args); } Class.createInstance(args:Array) would be the constructor equivalent of Function.apply(scope:Object, args:Array). If I use Function.apply after I created an instance the constructor would be called twice which would be quite dirty. Consider this as a feature request... ;) Jens www.oregano-server.org -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com Yahoo! Groups Links -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail
[flexcoders] Re: addChild from String
Hey Jens, Thanks for the help. It's now working (sort of)... If I create an instance of a built-in class (such as Button), the method below works fine. However, if I try creating a custom Class (eg. MyCustClass which extends from Canvas) like so: import custclasses.MyCustClass; var newComponent:Object = createInstance(custclasses.MyCustClass); it doesn't work. I get the run-time error message Variable MyCustClass is not defined. However, if I create a dummy instance of the class in my application like so: import custclasses.MyCustClass; var dummyMyCustClass:MyCustClass = new MyCustClass(); and then create another instance using the createInstance method, it does work. Ideas? Thanks, Brendan --- In flexcoders@yahoogroups.com, Jens Halm [EMAIL PROTECTED] wrote: Hi All, I'd like to provide a String value which represents the DisplayObject class I want to create dynamically with addChild. Has anyone accomplished this? You mean like this? public function createInstance (className : String) : Object { var MyClass : Class = getClassByName(className); return new MyClass(); } Btw.: what I really miss is a method createInstance(args : Array) in the Class class, so I could easily provide an arbitrary number of constructor arguments not known until runtime, like this: public function createInstance (className:String, args:Array) : Object { var myClass : Class = getClassByName(className); return myClass.createInstance(args); } Class.createInstance(args:Array) would be the constructor equivalent of Function.apply(scope:Object, args:Array). If I use Function.apply after I created an instance the constructor would be called twice which would be quite dirty. Consider this as a feature request... ;) Jens www.oregano-server.org -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com Yahoo! Groups Links * To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ * To unsubscribe from this group, send an email to: [EMAIL PROTECTED] * Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/
Re: [flexcoders] Re: addChild from String
search the flash coders list for this, there are a ton of sollutions floating around in there. On 1/18/06, Brendan Meutzner [EMAIL PROTECTED] wrote:Hey Jens,Thanks for the help.It's now working (sort of)... If I create an instance of a built-in class (such as Button), themethod below works fine.However, if I try creating a custom Class(eg. MyCustClass which extends from Canvas) like so:import custclasses.MyCustClass ;var newComponent:Object = createInstance(custclasses.MyCustClass);it doesn't work.I get the run-time error message VariableMyCustClass is not defined.However, if I create a dummy instance of the class in my application like so:import custclasses.MyCustClass;var dummyMyCustClass:MyCustClass = new MyCustClass();and then create another instance using the createInstance method, itdoes work.Ideas? Thanks, Brendan--- In flexcoders@yahoogroups.com, Jens Halm [EMAIL PROTECTED] wrote: Hi All, I'd like to provide a String value which represents the DisplayObject class I want to create dynamically with addChild.Has anyone accomplished this? You mean like this? public function createInstance (className : String) : Object { var MyClass : Class = getClassByName(className); return new MyClass(); } Btw.: what I really miss is a method createInstance(args : Array) in the Class class, so I could easily provide an arbitrary number of constructor arguments not known until runtime, like this: public function createInstance (className:String, args:Array) : Object { var myClass : Class = getClassByName(className); return myClass.createInstance(args); } Class.createInstance(args:Array) would be the constructor equivalent of Function.apply(scope:Object, args:Array). If I use Function.apply after I created an instance the constructor would be called twice which would be quite dirty. Consider this as a feature request...;) Jens www.oregano-server.org --Flexcoders Mailing ListFAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.comYahoo! Groups Links* To visit your group on the web, go to: http://groups.yahoo.com/group/flexcoders/ * To unsubscribe from this group, send an email to:[EMAIL PROTECTED] * Your use of Yahoo! Groups is subject to: http://docs.yahoo.com/info/terms/-- j:pn -- Flexcoders Mailing List FAQ: http://groups.yahoo.com/group/flexcoders/files/flexcodersFAQ.txt Search Archives: http://www.mail-archive.com/flexcoders%40yahoogroups.com SPONSORED LINKS Web site design development Computer software development Software design and development Macromedia flex Software development best practice YAHOO! GROUPS LINKS Visit your group "flexcoders" on the web. To unsubscribe from this group, send an email to:[EMAIL PROTECTED] Your use of Yahoo! Groups is subject to the Yahoo! Terms of Service.