簡體   English   中英

AS3鏈接-加載另一個SWF文件

[英]AS3 Linking-Loading Another Swf File

我做了捕捉游戲,並且有swf文件。 在另一個Flash項目中,我想調用該SWF文件。 我創建了一個按鈕,並在下面編寫了代碼。

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和動作腳本位於不同的文件中。 我的意思是我使用外部.as文件。 不在fla文件中。

TypeError:錯誤#1009:無法訪問空對象引用的屬性或方法。 在CatchingGame()

您的加載代碼很好,但是異常源自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 swf添加更多代碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM