[flexcoders] Re: addChild from String

2006-02-19 Thread pwhite40
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

2006-02-19 Thread pwhite40
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

2006-01-18 Thread Brendan Meutzner
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

2006-01-18 Thread Johannes Nel



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.