2015-11-30 2 views
0

Я сделал ловушку, и у меня есть swf-файл. В другом флэш-проекте я хочу называть это swf. Я создал кнопку и написал коды ниже.AS3 Linking-Loading Another Swf File

btnn.addEventListener(MouseEvent.CLICK, fl_ClickToLoadUnloadSWF_4); 

import fl.display.ProLoader; 
var fl_ProLoader_4:ProLoader; 


var fl_ToLoad_4:Boolean = true; 

function fl_ClickToLoadUnloadSWF_4(event:MouseEvent):void 
{ 
    if(fl_ToLoad_4) 
    { 
     fl_ProLoader_4 = new ProLoader(); 
     fl_ProLoader_4.load(new URLRequest("CathingGame.swf")); 
     addChild(fl_ProLoader_4); 
    } 
    else 
    { 
     fl_ProLoader_4.unload(); 
     removeChild(fl_ProLoader_4); 
     fl_ProLoader_4 = null; 
    } 

    fl_ToLoad_4 = !fl_ToLoad_4; 
} 

Но когда я нажимаю кнопку, у меня есть ошибка ниже. Какие могут быть возможные решения? Я думаю, что у меня есть эта ошибка, потому что в игре для ловли моя fla и actionscript находятся в другом файле. Я имею в виду, что я использую внешний файл .as. Не в файле fla.

+0

С 'if (fl_ToLoad_4)' вы пытаетесь проверить, если его ** null ** или если это ** false **. Ваш оператор 'Else' определенно делает его нулевым и к тому времени, когда вы попытаетесь выполнить' fl_ToLoad_4 =! Fl_ToLoad_4; 'его слишком поздно. Наконец, для 'fl_ProLoader_4.load' требуется ** eventListener ** для завершения игровой нагрузки (обрабатывается все байты). в ** событии полная ** функция - это то, где вы можете добавить к сцене. Здесь вы добавляете что-то еще, что еще не существует для Flash Player ... –

+0

Спасибо, я решил проблему, перемещая коды внутри файла fla. Затем он работал как шарм. Я не пытался называть swf. Я не мог справиться с этим. –

ответ

0

Ваш загрузочный код является штраф, но исключение происходит от CatchingGame кода, так что нельзя сказать наверняка, что это причина.

Но, если (как я полагаю) ваша игра прекрасно работает, когда она запущена без предварительной загрузки наиболее вероятной причины для null object reference, в этом случае слишком ранний доступ к stage свойствам из игры. Попробуйте переместить игру инициирующей логику ADDED_TO_STAGE обработчика события как в примере ниже:

public function MyGame() 
    { 
     if (stage) 
     { 
      init(); 
     } 
     else 
     { 
      addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); 
     } 
    } 

    private function onAddedToStage(event:Event):void 
    { 
     removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); 
     init(); 
    } 

    private function init():void 
    { 
     //place init logic here 
    } 

Если мое предположение неверно, добавить больше коды из CatchingGame швейцарских франков.

+0

Спасибо, я решил проблему, переместив коды внутри файла fla. Затем он работал как шарм. Я не пытался называть swf. Я не мог справиться с этим. –

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