AS3 で Main 関数の新しいインスタンスをどのように実行しますか? 基本的に、プログラムが最後に到達したら、プログラムを最初から再実行したいと考えています。最後にすべての子をツリーから削除してから、最初のメソッドを再度実行することを考えましたが、それは不要で面倒です。このクラスは Sprite を拡張します。
編集: カスタム イベントを作成しようとしておりdispatchEvent
、プログラムの最後にこれをトリガーするために使用していますが、少し問題があります。これは以下の私の現在のコードです。
RunMain.as 全体:
package
{
import flash.display.Sprite;
import flash.events.Event;
public class RunMain extends Sprite {
public function RunMain():void {
addEventListener(Event.ENTER_FRAME, loop);
}
private function loop(event:Event){
removeEventListener(Event.ENTER_FRAME, loop);
dispatchEvent(new EndEvent(EndEvent.END_EVENT));
}
}
}
EndEvent.as 全体:
package
{
import flash.events.Event;
public class EndEvent extends Event
{
// Event types.
public static const END_EVENT:String = "event1";
public function EndEvent(type:String = EndEvent.END_EVENT)
{
super(type);
}
override public function clone():Event {
// Return a new instance of this event with the same parameters.
return new EndEvent(type);
}
}
}
Main.as のパーツ:
public function Main() {
runMain = new RunMain();
runMain.addEventListener(EndEvent.END_EVENT, onProgramFinish);
addChild(runMain);
init();
otherMethods();
}
public function onProgramFinish() {
removeChild(runMain);
runMain = null;
runMain = new RunMain() ;
}
Main クラス内onProgramFinish();
では、プログラムの最後に行があります。
現在、コンパイラを実行すると、次のエラーが表示されます:
ArgumentError: エラー #1063: Main/onProgramFinish() での引数カウントの不一致。
期待値 0、取得値 1。
続行することを選択すると、プログラムは正常に実行されますが、最後に新しいインスタンスが実行されません。