【问题标题】:Actionscript 3 Null Object Error MessageActionscript 3 空对象错误消息
【发布时间】:2010-08-08 02:56:25
【问题描述】:

我正在构建一个仅限 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();
    }

}

播放器.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!!!!!

【问题讨论】:

    标签: apache-flex flash actionscript null


    【解决方案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
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-22
      • 2014-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-15
      • 1970-01-01
      相关资源
      最近更新 更多