Actionscript 3 Сообщение об ошибке нулевого объекта - PullRequest
0 голосов
/ 08 августа 2010

Я строю проект только для AS3 и получил ошибку во время выполнения, которая гласила: «Не удается получить доступ к свойству или методу пустой ссылки на объект».

Вот мой код:

main.as

       public class videoMain extends Sprite{

         private var videoPlayer:Player;

       public function videoMain (){
         loadPlayer()
         loadProgress();
       }

       private function loadProgress():void{

        //the code below gave me null object error.....     
        var byteLoaded:Number=videoPlayer.videoBytesLoaded; //the problem code
        var byteTotal:Number=videoPlayer.videoBytesTotal;  //the problem code

        var percent:Number=Math.floor(byteLoaded/byteTotal)*100;
        }

        private function loadPlayer():void{

        videoPlayer= new Player();
        videoPlayer.createPlayer();
    }

}

Player.as

public function createPlayer():void{

    _loader = new Loader();
    _loader.contentLoaderInfo.addEventListener(Event.INIT, onLoaderInit);
    _loader.load(new URLRequest(playerType));

    }

public function get videoBytesLoaded():Number{
    return _Player.getVideoBytesLoaded();  //youtube api method
    }

public function get videoBytesTotal():Number{
    return _Player.getVideoBytesTotal;    //youtube api method
    }

 private function onLoaderInit(event:Event):void {
    _Player=_loader.content;
        //only show part of codes....
    }

I appreciate any help....Thanks!!!!!

1 Ответ

1 голос
/ 08 августа 2010

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

Вы должны иметь как минимум следующее:

public function videoMain (){
     loadPlayer()
   }

private function onLoaderInit(event:Event):void {
    _Player=_loader.content;
    //only show part of codes....
    loadProgress();

}

, но события progress не являются статичными, поэтому для прослушивания меняющихся значений у вас должен быть прослушиватель событий enterFrame ...

private function onLoaderInit(event:Event):void {
    _Player=_loader.content;
    //only show part of codes....

    addEventListener(Event.ENTER_FRAME , enterFrameListener);
}

private function enterFrameListener(event:Event):void
{
    loadProgress();
    // and here you add some way to remove this event listener when 
    // the video is fully loaded
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...