Внешняя проблема загрузки SWF - PullRequest
3 голосов
/ 25 апреля 2010

У меня есть загрузка SWF в SWF, содержащем сцену papervision.

Я делал это раньше, но проблема в том, что я получаю сообщение об ошибке - я не уверен, в чем проблема на самом деле.

    private function downloadSWF(url:String):void
  {
   trace(url);
   var urlRequest:URLRequest = new URLRequest(url);
   var loader:Loader = new Loader(); 
   loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, loaderProgressEventHandler);
   loader.load(urlRequest);
  }



 private function loaderProgressEventHandler(ev:ProgressEvent):void
  {

   loader.preloaderCircle.percent = ev.bytesLoaded / ev.bytesTotal;
  }

Когда приложение запускает код - я получаю ошибку:

TypeError: Error #1009: Cannot access a property or method of a null object reference.
 at com.dehash.pv3d.examples.physics::WowDemo()

Почему я получаю это, если загрузка еще не завершена?

Заранее спасибо, ребята.


Редактировать: Попробуйте пустой дочерний swf, посмотрите, не пытался ли другой получить доступ к чему-либо в родительском. - Хорхе

Я сделал это, кажется, даже с простым SWF с прослушивателем щелчка мыши вызывает ошибку:

TypeError: Error #1009: Cannot access a property or method of a null object reference. at simple_fla::MainTimeline/frame1()

Мой код для этого:

import flash.events.MouseEvent;

this.stage.addEventListener(MouseEvent.CLICK, onClick);

function onClick(ev:MouseEvent):void
{
    trace("MouseClick");
}

Я что-то упускаю явно очевидное ??

Ответы [ 3 ]

3 голосов
/ 26 апреля 2010

Проблема в том, что загруженный SWF-файл запускается без добавления его на сцену. Так что stage равно нулю, что приводит к этой ошибке.

Второй пример с AddedToStageEventHandler работает, потому что на stage ссылаются только после того, как объект был добавлен на сцену, поэтому stage больше не является нулевым.

Возможное решение для первой ошибки - добавление загрузчика на сцену. Таким образом, когда SWF загружается и запускается, он уже имеет ссылку stage.

1 голос
/ 25 апреля 2010

Это даже не загрузится, если есть ошибка. Вы получаете доступ к объекту без ссылок в классе WowDemo () ... правильно ли вы создали экземпляр класса?

0 голосов
/ 25 апреля 2010

это, кажется, работает внутри моего дочернего SWF:

this.addEventListener(Event.ADDED_TO_STAGE, addedToStageEventHandler);

function onClick(ev:MouseEvent):void
{
    trace("MouseClick");
    var event:Event = new Event("END", true, false);
    this.dispatchEvent(event);
}

function addedToStageEventHandler(ev:Event):void
{
    this.stage.addEventListener(MouseEvent.CLICK, onClick);

}

Кто-нибудь знает почему?

...