2009-08-30 2 views
0

идея заключается в том, чтобы получить доступ к МС на сцене с sequantial именами экземпляров, , например: mc1, mc2, mc3 ...вспышка - AS3 параллель Evel в AS2

теперь, в as2 я хотел бы сделать: это ["mc" + i] (где «i» представляет собой число от 1 до 3)

как бы я сделал такую ​​вещь в качестве3?

заранее спасибо

+0

Ваш пример кода даже не использует "Eval". Вы можете запустить его в AS3, ничего не меняя. – fenomas

ответ

1

Если mc1, mc2, mc3 расположены на верхнем уровне вашего FLA, и нет никаких других клипов ржали их (например, mc1 имеет имеет глубину (индекс) 1, mc2 имеет индекс 2 и т. д.) вы можете получить клипы с помощью getChildAt();

for(var i:int = 1 ; i < 3 ; i++){ 
var clip:MovieClip = MovieClip(getChildAt(i)); 
} 

, если вы не уверены в управлении глубиной, просто назвать клипы (если они находятся на стадии, дают им имена экземпляров, если они создаются во время выполнения, используйте свойство имени (mc1.name = 'mc1'))

и использовать getChildByName(), чтобы получить их

for(var i:int = 1 ; i < 3 ; i++){ 
var clip:MovieClip = MovieClip(getChildByName('mc'+i)); 
trace(' got clip named: ' + clip.name); 
} 

Я уверен, что там много ресы, если вы только Google миграции as2 as3

0

это не так чрезвычайно просто больше, как и в AS2 ... вы должны использовать DisplayObjectContainer::getChildByName, так что-то вроде

for (var i:int = 1; i < 4; i++) { 
    trace(this.getChildByName("mc"+i)); 
} 

удачи затем ...;)

1

это [ "МЦ" + I] работ для меня.

Я сделал три MovieClips названные mc1, mc2, и mc3, и поместили их в точке х = 100, 200 и 300.

for (var i:int = 1; i <= 3; ++i) { 
    var mymc:MovieClip = this["mc" + i]; 
    trace(mymc + ".x = " + mymc.x) 
} 

распечатывает

[object MovieClip].x = 100 
[object MovieClip].x = 200 
[object MovieClip].x = 300 
0

this["mc" + i] будет работать, если mc1 является переменной экземпляра класса, к которому принадлежит объект this. Синтаксис квадратной скобки можно использовать вместо синтаксиса точки в AS3 (хотя он не рекомендуется, так как он превратит ошибки компилятора в ошибки времени выполнения).

следующие утверждения эквивалентны:

this.mc1.width = 100; 
this["mc1"].width = 100; 
Смежные вопросы