0

メイン クラスが .fla のステージに追加されました。アニメーションが終了したら、クラスを削除して再度追加/「再起動」したいと考えています。アニメーションはすべて Main で実行され、Main 内の表示ツリーに追加されます。finishNow()Main.as 内から関数を実行するにはどうすればよいですか?

.fla ファイル:

var run:Main = new Main(this);
stage.addChild(run);

function finishNow() {
    stage.removeChild(run);
    var run:Main = new Main(this);
    stage.addChild(run);
}

Main.as ファイル:

var stageHolder:Object;

public function Main(stageHolderTemp) {
        stageHolder = stageHolderTemp; 
        trace(stageHolder);
}

function callFinishFunction():void {
    // how to call finishNow() function from .fla file here
}

編集: プログラムのデザインが変更されました。まだ同じことをしようとしています (finishNow() 関数を呼び出しますが、現在は Program.as にあります)。TypeError program.finishNow();:

エラー #1009: null オブジェクト参照のプロパティまたはメソッドにアクセスできません。

.fla ファイル:

現在、コードは含まれていません。Program.as にリンクされています。

Program.as ファイル:

package  {

    import flash.display.MovieClip;

    public class Program extends MovieClip {


        public function Program() {

            startNow();
        }

        function startNow() {
            var run:Main = new Main(this);
            addChild(run);
        }

        function finishNow() {
            removeChild(run);
            var run:Main = new Main(this);
            addChild(run);
        }

    }

}

Main.as ファイル:

package {

    import flash.display.Sprite;

    public class Main extends Sprite
    {

        var stageHolder:Object;
        public var program:Program;

        public function Main(stageHolderTemp) {
            stageHolder = stageHolderTemp; 
            trace(stageHolder);

            someFunctionsThatDrawGraphics();
        }

        function callFinishFunction():void {
            // how to call finishNow() function from Program.as file here?
            program.finishNow();
        }

    }
}
4

3 に答える 3

0

addframeScriptFLA関数を呼び出すために呼び出すことができます。

于 2013-03-12T13:22:17.673 に答える
0

.fla が Main.as ファイルにリンクされている場合は、直接呼び出すことができます。これを試して:

public function Main() {
        finishNow();
}

ここに画像の説明を入力

.fla コード

function testFunction()
{
    trace("111");
}

.as ファイル

package  {

    import flash.display.MovieClip;


    public class Main extends MovieClip {


        public function Main() {

            testFunction();
        }
    }

}
于 2013-03-12T13:18:36.263 に答える
0

実際、毎回クラス オブジェクトを作成する必要はありません。毎回そのクラスで関数を呼び出すだけで十分です。

しかし、あなたの質問のために..これを試してください....

ドキュメント クラス

program.as 内

    var run:Main = new Main(this);
    run.addEventListener("FINISH",finishNow);
    addChild(run);
    function finishNow(e:Event)
    {
     }

main.as では、

function callFinishFunction():void
 {
  dispatchEvent(new Event("FINISH"));
 }
于 2013-03-13T04:10:21.507 に答える