预加载器的奇怪问题

时间:2013-12-19 14:40:24

标签: actionscript-3 flash flash-cs5

我的预加载器有问题。

Preloader代码:

import flash.net.URLRequest;
import flash.display.Loader;
import flash.events.Event;
import flash.events.ProgressEvent;

var game:MovieClip
var added:Boolean;

var mLoader:Loader = new Loader();
var mRequest:URLRequest = new URLRequest("source.swf");
mLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteHandler);
mLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressHandler);
mLoader.load(mRequest);

function onCompleteHandler(e:Event):void {
    game = e.currentTarget.content
    game.alpha = 0;
}
function onProgressHandler(e:ProgressEvent):void {
    loader.loadBar.setProgress(e.bytesLoaded, e.bytesTotal);
}

addEventListener(Event.ENTER_FRAME, function(e:Event):void {
                    if(game != null){
                        if(!added) {
                            addChild(game);
                            added = true;
                        }
                        if(game.alpha < 1) game.alpha += 0.1;

当我加载游戏控制台时返回TypeError:错误#1009:无法访问空对象引用的属性或方法。

我在游戏中打开许可调试并再次加载。现在控制台返回TypeError:错误#1009:无法访问空对象引用的属性或方法。 在main()[C:\ Users \ Lukasz \ Desktop \ Flash \ rs \ main.as:141]; 所以我检查了141行,从141到155我有键盘事件。

    stage.addEventListener(KeyboardEvent.KEY_UP, function(e:KeyboardEvent):void {
                            if(e.keyCode == 32 && moveAvailable) {
                                startEvent();

                            }else if(e.keyCode == 32) {
                                moveAvailable = true;
                            }
                            moveSpeed = 70;
                          });
    stage.addEventListener(KeyboardEvent.KEY_DOWN, function(e:KeyboardEvent):void {
                            if(e.keyCode == 32) {
                                moveSpeed = 140
                                if(!startBtn.enb) moveAvailable = false;
                            }
                          });

当我在此代码游戏正确加载之间得到评论/ ** /时。 顺便说一句,我尝试this.parent和parent。而不是舞台。但没有改变:(

有人对这个问题有所了解吗?

1 个答案:

答案 0 :(得分:1)

使用前需要检查阶段

if (stage) {
   addStageEvent();

} else {
   this.addEventListener(Event.ADDED_TO_STAGE, addStageEvent);
}

function addStageEvent(e:Event = null):void {
     //put the 141-155 line code here
}