Flash: возможно ли динамическое добавление кода событий к экземплярам? - PullRequest
0 голосов
/ 16 марта 2010

Сначала я хочу сделать мувиклип невидимым, но я не хочу устанавливать его вручную в свойствах во Flash, потому что не вижу его на сцене.

Я надеялся, что смогу добавить такой код:

MC Frame one.

this.onClipEvent(load)
{
this._alpha = 0;
}

но я не могу.Как я могу установить MC _alpha на 0 для всех экземпляров, не добавляя его вручную к каждому экземпляру или устанавливая его в свойствах?

edit: или создавая класс для него просто для установки альфа.

Ответы [ 4 ]

0 голосов
/ 16 марта 2010

Другое решение может заключаться в том, чтобы поместить эту строку в первый кадр вашего мувиклипа:

_alpha = 0;

Запустите анимацию во втором кадре и добавьте следующую строку в свой последний:

gotoAndPlay( 2 );

Таким образом, код в первом кадре выполняется только один раз.

0 голосов
/ 16 марта 2010

Возможно, что-то я не правильно понял, но вам просто нужно написать что-то вроде этого в вашем первом кадре:

yourFirstMovieClip._alpha = 0;
yourSecondMovieClip._alpha = 0;



Если имена ваших видеоклипов нумеруются (mc0, mc1, mc2, mc3 ...), вы можете использовать цикл для установки свойства _alpha для каждого клипа.Допустим, у вас есть 5 клипов (от mc0 до mc4):
for( var i:Number = 0  ;  i < 5  ;  i++ )
{
    this["mc"+i]._alpha = 0;
}



Если нет, вы можете хранить все клипы в массиве, и они будут проходить через него:

var clips:Array = [mcFirst, mcSecond, mcThird, mcFourth];
for( var i:Number = 0  ;  i < clips.length  ;  i++ )
{
   clips[i]._alpha = 0;
}
0 голосов
/ 16 марта 2010

Я сейчас использую этот код, который делает то, что я хочу. Но я ненавижу это.

    var once:Boolean;

    if (once == null) {
        once = true;
        this._alpha = 0;
    }
0 голосов
/ 16 марта 2010

Если вы хотите сделать это, создав subclass в actionscript 2, вот отличное пошаговое руководство от Adobe.

http://www.adobe.com/devnet/flash/articles/mc_subclasses_v2_04.html

В этом руководстве вы должны добавить обработчик события onEnterFrame, но вы можете проигнорировать это и просто добавить следующий код в конструктор.

Если ваше имя класса Ball, тогда код будет выглядеть следующим образом. (это из шага 4 в руководстве).

dynamic class Ball extends MovieClip {

  function Ball() {
    this._alpha = 0;
  }
}
...