[Flashcoders] Re: AS2 vs. AS3: instantiate library symbols with a loop string concatenation

2008-03-04 Thread jonathan howe
Sorry - somehow triggered the send mail hotkey before I was finished:

On Tue, Mar 4, 2008 at 3:25 PM, jonathan howe [EMAIL PROTECTED]
wrote:



 Imagine I have in my library a series of MovieClips with linkage
 identifiers like so:

 sym0
 sym1
 sym2
 ...
 sym29

 In AS2, if I wanted to create instances of each one (or perhaps decide
 which symbol to use based on XML data, for example), I could use a for loop:

 for (var i:Number = 0; i  30; i ++) {
 var new_mc:MovieClip = parent_mc.attachMovie(sym + i, sym + i, i);
 // do stuff with clip
 }

 and create each symbol via passing a concatenated string as symbolName.

 Now, in AS3, I can't think of a way to do this efficiently. In our simple
 example, I can only think of the following:

 for (var i:int = 0; i  30; i ++) {
 var sym:MovieClip;
  switch (i) {
  case 0: sym = new sym0();
  case 1:sym =  new sym1();
  case 2: sym =new sym2();
 ...
  }
 // do stuff with clip
 }


 Is there a more efficient way to do this in AS3? You can't really
 instantiate a class based on a stringname, can you?

Was I doing myself a disservice by using this technique in AS2 anyway?


Thanks,
-jonathan
___
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders


Re: [Flashcoders] Re: AS2 vs. AS3: instantiate library symbols with a loop string concatenation

2008-03-04 Thread Bob Leisle

Hi Jonathon,

Your AS2 method is tried and true. Here's the new and improved AS3 way 
of doing it.


for (var i:Number = 0; i  30; i ++) {
   // build the String name
   var symbol:String = sym + i;
   // locate the class
   var symbolClass:Class = getDefinitionByName(symbol) as Class;
   // instantiate the clip using the class
   var new_mc:MovieClip = new symbolClass() as MovieClip;
   // add clip to stage
   addChild(new_mc);
   // do stuff with clip
}

You may or may not need the  as MovieClip bit on the instantiation, 
depending on how your class is actually defined.


hth,
Bob


jonathan howe wrote:

Sorry - somehow triggered the send mail hotkey before I was finished:

On Tue, Mar 4, 2008 at 3:25 PM, jonathan howe [EMAIL PROTECTED]
wrote:

  

Imagine I have in my library a series of MovieClips with linkage
identifiers like so:

sym0
sym1
sym2
...
sym29

In AS2, if I wanted to create instances of each one (or perhaps decide
which symbol to use based on XML data, for example), I could use a for loop:

for (var i:Number = 0; i  30; i ++) {
var new_mc:MovieClip = parent_mc.attachMovie(sym + i, sym + i, i);
// do stuff with clip
}

and create each symbol via passing a concatenated string as symbolName.

Now, in AS3, I can't think of a way to do this efficiently. In our simple
example, I can only think of the following:

for (var i:int = 0; i  30; i ++) {
var sym:MovieClip;
 switch (i) {
 case 0: sym = new sym0();
 case 1:sym =  new sym1();
 case 2: sym =new sym2();
...
 }
// do stuff with clip
}


Is there a more efficient way to do this in AS3? You can't really
instantiate a class based on a stringname, can you?



Was I doing myself a disservice by using this technique in AS2 anyway?
  


Thanks,
-jonathan
___
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders



  


--
Thanks,
~
Bob Leisle 
Headsprout Software  Engineering

http://www.headsprout.com
Where kids learn to read! 


___
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders


Re: [Flashcoders] Re: AS2 vs. AS3: instantiate library symbols with a loop string concatenation

2008-03-04 Thread Cory Petosky
import flash.utils.getDefinitionByName;

for (var i:uint = 0; i  30; ++i) {
   var sym:MovieClip = new (getDefinitionByName(sym + i) as Class)();

   // rest
}

On 3/4/08, jonathan howe [EMAIL PROTECTED] wrote:
 Sorry - somehow triggered the send mail hotkey before I was finished:

  On Tue, Mar 4, 2008 at 3:25 PM, jonathan howe [EMAIL PROTECTED]
  wrote:


  
  
   Imagine I have in my library a series of MovieClips with linkage
   identifiers like so:
  
   sym0
   sym1
   sym2
   ...
   sym29
  
   In AS2, if I wanted to create instances of each one (or perhaps decide
   which symbol to use based on XML data, for example), I could use a for 
 loop:
  
   for (var i:Number = 0; i  30; i ++) {
   var new_mc:MovieClip = parent_mc.attachMovie(sym + i, sym + i, i);
   // do stuff with clip
   }
  
   and create each symbol via passing a concatenated string as symbolName.
  
   Now, in AS3, I can't think of a way to do this efficiently. In our simple
   example, I can only think of the following:
  
   for (var i:int = 0; i  30; i ++) {
   var sym:MovieClip;
switch (i) {
case 0: sym = new sym0();

   case 1:sym =  new sym1();
case 2: sym =new sym2();

  ...
}
   // do stuff with clip
   }
  
  
   Is there a more efficient way to do this in AS3? You can't really
   instantiate a class based on a stringname, can you?
  

 Was I doing myself a disservice by using this technique in AS2 anyway?
  

  Thanks,

 -jonathan

 ___
  Flashcoders mailing list
  Flashcoders@chattyfig.figleaf.com
  http://chattyfig.figleaf.com/mailman/listinfo/flashcoders



-- 
Cory Petosky : Lead Developer : PUNY
1618 Central Ave NE Suite 130
Minneapolis, MN 55413
Office: 612.216.3924
Mobile: 240.422.9652
Fax: 612.605.9216
http://www.punyentertainment.com
___
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders


Re: [Flashcoders] Re: AS2 vs. AS3: instantiate library symbols with a loop string concatenation

2008-03-04 Thread jonathan howe
Thanks to everyone who chimed in with the answer!

Seems like there is a little disagreement between getDefinitionByName and
getClassByName.

From some basic searches it looks like getClassByName has been replaced by
getDefinitionByName, and I could only find
flash.utils.getDefinitionByNamein the Adobe LiveDocs.

Either way, thanks for those who helped - I didn't quite know where to loock
in my trusty moock.

-jonathan


On Tue, Mar 4, 2008 at 4:31 PM, Cory Petosky [EMAIL PROTECTED]
wrote:

 import flash.utils.getDefinitionByName;

 for (var i:uint = 0; i  30; ++i) {
   var sym:MovieClip = new (getDefinitionByName(sym + i) as Class)();

   // rest
  }

 On 3/4/08, jonathan howe [EMAIL PROTECTED] wrote:
  Sorry - somehow triggered the send mail hotkey before I was finished:
 
   On Tue, Mar 4, 2008 at 3:25 PM, jonathan howe [EMAIL PROTECTED]
   wrote:
 
 
   
   
Imagine I have in my library a series of MovieClips with linkage
identifiers like so:
   
sym0
sym1
sym2
...
sym29
   
In AS2, if I wanted to create instances of each one (or perhaps
 decide
which symbol to use based on XML data, for example), I could use a
 for loop:
   
for (var i:Number = 0; i  30; i ++) {
var new_mc:MovieClip = parent_mc.attachMovie(sym + i, sym +
 i, i);
// do stuff with clip
}
   
and create each symbol via passing a concatenated string as
 symbolName.
   
Now, in AS3, I can't think of a way to do this efficiently. In our
 simple
example, I can only think of the following:
   
for (var i:int = 0; i  30; i ++) {
var sym:MovieClip;
 switch (i) {
 case 0: sym = new sym0();
 
case 1:sym =  new sym1();
 case 2: sym =new sym2();
 
   ...
 }
// do stuff with clip
}
   
   
Is there a more efficient way to do this in AS3? You can't really
instantiate a class based on a stringname, can you?
   
 
  Was I doing myself a disservice by using this technique in AS2 anyway?
   
 
   Thanks,
 
  -jonathan
 
  ___
   Flashcoders mailing list
   Flashcoders@chattyfig.figleaf.com
   http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
 


 --
 Cory Petosky : Lead Developer : PUNY
 1618 Central Ave NE Suite 130
 Minneapolis, MN 55413
 Office: 612.216.3924
 Mobile: 240.422.9652
 Fax: 612.605.9216
 http://www.punyentertainment.com
  ___
 Flashcoders mailing list
 Flashcoders@chattyfig.figleaf.com
 http://chattyfig.figleaf.com/mailman/listinfo/flashcoders




-- 
-jonathan howe :: 404.434.2321 :: 180 High St Apt 26 Portland, ME 04101
___
Flashcoders mailing list
Flashcoders@chattyfig.figleaf.com
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders