[英]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中擁有預加載器?
非常感謝您的時間和幫助!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.