AS3 Scope проблема, как мне динамически создать новый MC в пакете / классе? - PullRequest
0 голосов
/ 09 февраля 2010

Большое спасибо за ваше время! Вот мой вопрос, ...

public function addNewMc():void{
    var newMC:MovieClip= new MovieClip();
    this.addChild(newMC);
}
public function removeOldMc(newMC):void{
    this.removeChild(newMC);
}

Как я могу создать новый MovieClip внутри метода, который можно использовать во всем классе, не определяя его в верхней части класса? И за дополнительные баллы, без использования возврата.

Я могу заставить его работать, если первая функция addNewMc возвращает значение newMC и передает его любым другим методам ... но для того, что я пишу, я надеюсь использовать свой возврат с чем-то другим. Спасибо!

1 Ответ

0 голосов
/ 09 февраля 2010

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

public function addNewMc():void{
    var newMC:MovieClip= new MovieClip();
    this.addChild(newMC);
}

public function getMC():MovieClip
{
    var len:uint = this.numChildren;
    while(len--)
    {
      var tempObj:* = this.getChildAt(len);
      if(tempObj is MovieClip)
         return MovieClip(tempObj);
     }
     return null;
}

Вы также можете добавить свойство name к динамически созданному мувиклипу:

public function addNewMc():void
{
    var newMC:MovieClip= new MovieClip();
    newMC.name = "new_MC";
    this.addChild(newMC);
}

затем вы можете получить так:

this.getChildByName("new_MC");

Опять не знаю, понимаю ли я ваши точные требования ура Эрик;)

...