2013-12-19 2 views
0

У меня есть некоторые проблемы с моим предварительным загрузчиком.Странная проблема с предварительным загрузчиком

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: Error # 1009: Не удается получить доступ к свойству или методу нулевой ссылки на объект.

Включить разрешение отладки в игре и снова загрузить. Теперь консоль возвращает TypeError: Ошибка # 1009: Не удается получить доступ к свойству или методу ссылки на нулевой объект. at 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

Вы должны проверить сцену, прежде чем использовать его

if (stage) { 
    addStageEvent(); 

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

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

Спасибо вам большое :) это работает! но почему это происходит? Прежде чем я никогда не буду использовать это событие. –

+0

Событие запускается, когда объект отображения добавляется на сцену, тогда устанавливается значение этапа отображения объекта. Поэтому, прежде чем ваш предварительный загрузчик был добавлен на сцену, значение этапа равно null, что делает ошибку. – Pan

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