вспышка - AS3 параллель уровня в AS2 - PullRequest
0 голосов
/ 31 августа 2009

идея состоит в том, чтобы получить доступ к MC на сцене с последовательными именами экземпляров, например: mc1, mc2, mc3 ...

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

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

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

Ответы [ 4 ]

1 голос
/ 31 августа 2009

у меня ["mc" + i] работает.

Я сделал три мувиклипа с именами mc1, mc2 и mc3 и поместил их в x = 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
1 голос
/ 31 августа 2009

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

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

если вы не уверены в управлении глубиной, просто назовите ваши клипы (если они на сцене, дайте им имена экземпляров, если они созданы во время выполнения, используйте свойство name (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 голосов
/ 01 сентября 2009

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

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

this.mc1.width = 100;
this["mc1"].width = 100;
0 голосов
/ 31 августа 2009

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

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

тогда удачи ...;)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...