私が作成したゲームは、プリローダーとswfの2つのファイルで実行されます。これらの2つのファイルを一緒に使用すると、正常に機能しますが、一部のフラッシュポータルでは1つのSWFしか必要としないため、1つだけを使用するように変換する最短パスの方法を見つけようとしています。
ゲームswfは、パッケージ、クラスコンストラクター、および大量の関数を含むドキュメントクラスを使用し、正常に実行されます。ステージ上には、コードで参照しているムービークリップがたくさんあります。コードは次のようなものです(要約):
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でプリローダーを作成する方法
パッケージとコンストラクター以外のドキュメントクラスのすべてのコードを取得してフレーム2に貼り付けることで、彼のオプション1を試しました。ただし、「エラー#1009:nullオブジェクト参照のプロパティまたはメソッドにアクセスできません」が返されます。次のようなステージ上のアイテムへの参照。
mainRestartButton.addEventListener(MouseEvent.CLICK, RestartLevel);
彼が述べているように、「これは、ほとんどのアセット(画像など)がFlash IDEライブラリにあり、最初のフレームにロードされないようにプロジェクトを編成した場合にうまく機能します(各ライブラリアイテムのプロパティ)。" 私のプロジェクトはそのように構成されていません。
FLA /コードを再編成して、単一のswfにプリローダーを含めることができるようにするための最も簡単な方法は何ですか?
お手数をおかけしますが、よろしくお願いいたします。