簡體   English   中英

如何將帶有Document類的兩個文件的預加載器和游戲swf轉換為單個swf?

[英]How to convert a two-file preloader and game swf with Document class into single swf?

我制作了一款可以在兩個文件中運行的游戲,一個是預加載器,另一個是swf。 當我將這兩個文件一起使用時,它們可以正常工作,但是某些Flash門戶僅需要一個SWF,因此我試圖找到最短路徑將其轉換為僅使用一個SWF。

游戲swf使用了包含包,類構造函數和大量函數的Document Class,並且運行良好。 我在代碼中引用的舞台上有很多電影剪輯。 代碼是這樣的(節略的):

package  {

    import flash.display.MovieClip;
    import flash.events.MouseEvent;
...
    public class Game extends MovieClip {       
    var EnemyArray:Array;
    var HeroArray:Array;
...
public function Game() { // class constructor
        EnemyArray = new Array();
        addEventListener(Event.ENTER_FRAME,onEnterFrame);
                    mainRestartButton.addEventListener(MouseEvent.CLICK, RestartLevel);
...
}
public function KeyPressed(event:KeyboardEvent):void
    {
        if (event.keyCode == Keyboard.SPACE)
        {
        attack();
...
            }
} // End of class
} // End of package

我還有另一個swf,即預加載器,在第1幀中具有以下代碼:

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

var myLoader:Loader = new Loader();
myLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onLoading);
var myURL:URLRequest = new URLRequest("Game.swf");
myLoader.load(myURL);
myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);

function onLoading(event:ProgressEvent):void {
    var loaded:Number = event.bytesLoaded / event.bytesTotal; 
    percent_txt.text = "Loading: " + (loaded*100).toFixed(0) + "%";

}

function onComplete(event:Event):void { 
    myLoader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, onLoading);
    myLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, onComplete);
    this.addChild(myLoader);
}

我已經遍歷了各種在線解決方案,但這些解決方案似乎都不適合我的代碼設置方式,例如: 如何在AS3中創建預加載器

我通過采用Document類中除包和構造函數之外的所有代碼來嘗試了他的選項1,然后將其粘貼到了第2幀。但是,它返回“錯誤#1009:無法訪問空對象引用的屬性或方法”。 對舞台上項目的任何引用,例如:

  mainRestartButton.addEventListener(MouseEvent.CLICK, RestartLevel);

正如他提到的那樣,“如果您以大多數資產(圖像等)位於Flash IDE庫中且未加載到第一幀的方式來組織項目,則效果很好(您可以在每個庫項目的屬性)。” 我的項目不是以這種方式組織的。

對我來說,重組我的FLA /代碼最簡單的方法是什么,以便他們可以在單個swf中擁有預加載器?

非常感謝您的時間和幫助!

我使用FlashDevelop(不使用FLA),所以不確定它是否適合您,但我使用此處介紹的解決方案

暫無
暫無

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

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