2009-10-11 18 views

cevap

9

Bunu yapmak için bir karma harita kullanmak istiyorum. Aksi takdirde derleyiciyi karıştırıyorsunuz demektir. Yerel değişkenler için dinamik adlara izin verilmez.

+0

Aradığım şey bu, ancak senaryoda çalışmıyor. Sadece bir Dizi kullanmam gerekecek. Bu, yaşamboğazı belgelerinde çok zayıf bir şekilde belgelendi, belki de iyi bir ayrıntıyı biliyor mu? –

+0

Bir diziyi de kullanabilirsiniz. Ya da harita üzerinde bir dizi gibi yineleyebilirsiniz. (for (var n: map in string) {}). Belki de bunu neden yapmanız gerektiğine karar verebilir ve alternatifler önerebiliriz. – Glenn

3

Yaptığınıza bağlı olarak, bunun etrafında bir çeşit yol vardır. Bu kliplerin tümü sahneye eklendiyse, bunlara erişmek için getChildByName yöntemini kullanabilirsiniz. Kurulumunuz şöyle görünecektir:

var clips:Array = []; 

for (var i:int = 0; i < 100; i++) { 
    clips[i] = new MovieClip(); 
    clips[i].name = "clip" + i; 
    addChild(clips[i]); 
} 

trace (getChildByName("clip2")); // traces [object MovieClip] 

Gerçi, ekran API sorgulayarak yapılmaktadır, bu nedenle bir yerde bir görüntüleme listesine eklenmiş değil bir şey üzerinde getChildByName kullanamazsınız.

Bu yardımcı olur umarım!

+0

Bu bir yol olduğundan emin olun, ancak kod onunla dağınık. –

0

Dinamik sınıflar, kapalı sınıflardan daha yavaş olduğundan önerilmez, ancak sınıfı dinamik hale getirebilir ve sonra bu ["varname"] değişkenini ayarlamak için kullanabilirsiniz. Movieclip gibi dinamik bir sınıf genişletirken bile bir sınıfı dinamik olarak belirtmeniz gerekir (alt sınıflar bunu devralmaz).

dynamic public class MyClass{ 
.... 
.... 
.... 
for (var i:uint = 0; i < 50; i++) 
{ 
    this['name' +i] = new Sprite(); 
} 
İlgili konular