Этап является нулевым в классе документа?ActionScript 3.0 Flash CS5 - PullRequest
3 голосов
/ 13 мая 2011

В моем классе документов с именем Engine переменная stage по какой-то причине пуста:

package game
{

    import flash.display.MovieClip;
    import flash.display.Stage;
    import flash.events.Event;
    public class Engine extends MovieClip
    {
        public function Engine()
        {
            trace(stage); // gives Null
        }
    }
}

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

Я впервые использую ActionScript и Flash, поэтому я немного запутался во всем.

Ответы [ 2 ]

6 голосов
/ 13 мая 2011

Хорошо, я воспроизвел то, что вы испытали, добавив шрифт TLF на сцену в CS5, что должно быть причиной этого. Но этот код должен решить вашу проблему:

public function Engine():void 
{ 
     if( !this.stage ) 
         this.addEventListener( Event.ADDED_TO_STAGE, init ); 
     else 
         init(); 
} 

private function init(e:Event = null):void 
{ 
   this.removeEventListener( Event.ADDED_TO_STAGE, init ); 
   trace(stage);
 }  

Я предполагаю, что в этом случае есть некоторая задержка в создании сцены. У меня было такое, и я не знал почему, поэтому я так и поступил. Оно работает! :)

0 голосов
/ 21 февраля 2012

Я только что столкнулся с этим в проекте, над которым я работал некоторое время. Внезапно мой конструктор в моем классе документов нашел ноль для своей стадии.

В моем случае (после нескольких часов бездействия) я догадался, что в FLA был добавлен актив, в котором было один TLF TextField. Я догадался, потому что видел обычную ошибку один раз , но никогда больше.

Обычно это может привести к ошибке, которая быстро распознается и легко исправляется. Не в этот раз. Я обнаружил, что мой класс документов добавлялся в рабочую область, а затем сразу удалялся со сцены - по крайней мере, событие Event.REMOVED_FROM_STAGE срабатывало.

FLA имеет много активов в нем, и попытка отследить один блуждающий TLF TextField (который может быть пустым) была довольно сложной, поэтому я сохранил FLA как проект AS2, а затем сохранил его обратно в проект AS3. Все мои связи были в порядке, и TLF TextField (где бы он ни был) был преобразован в классический. Все снова было хорошо.

Вот пост, в котором говорится о том же исправлении для более прямой проблемы: Как остановить / преобразовать текстовое поле TLF, используемое во флэш-файлах, когда у вас есть список для поиска?

...