2010-08-08 2 views
0

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

Вот мой код:

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

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

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

public function videoMain(){ 
    loadPlayer() 
    } 

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

} 

но прогресс событие не является статическим, так на самом деле вы должны иметь прослушиватель событий 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 
} 
+0

Ницца ..... Спасибо за ответ .... !! – FlyingCat

Смежные вопросы