0

これをどのように行うべきかについてアドバイスが必要です。すべてのコードがフレーム 1 のメイン タイムラインにある大規模なアプリケーションがあります。私はコードをクラス ファイルに入れようとし、特定のムービークリップ コンポーネントにそれらのクラス ファイルをコードに使用するように指示し始めました。これまでのところ、私はほとんど成功していますが、おそらくこれは私がやるべき方法ではありません.

メイン タイムラインには、O1 から O8 までの 8 つのボタンがあります。次に、ライブラリ内に O1 から O8 ボタンの独自のセットを持つムービークリップ コンポーネントがあります。このコンポーネントは、独自のレイヤーのステージに追加され、インスタンス名は BattleDashboard となります。すべてが 1 つの大きなコードの塊 (クラスなし) だったとき、私はこのようなボタンにアクセスしていました。

O1 //メイン インターフェイスのメイン タイム ライン上のボタン BattleDashboard.O1 //battleDashboard コンポーネント内のボタン

クラスを作成して以来、「this.O1」を使用してコンポーネント内のボタンにアクセスしています。クラス ファイルは、BattleDashboard ムービークリップ コンポーネントのプロパティ パネルを使用してリンクされます。戦闘が発生したときに呼び出され、メイン インターフェイスに戻り、戦闘が終了すると非表示になるはずです。

このアプリには 10,000 行を超えるコードがあるので、コンポーネントに独自の個別のコードを持たせたいと思っています。多くの関数を書き直して、以前は共有されていたクラス ファイルに含める必要があることがわかりました。また、「パブリック関数セット」を使用してオブジェクトと変数をコピーし、後でカスタム イベントを使用してそれらを取得するのにも時間を費やす必要があります。すべてをメインのタイムラインに残して、外部ファイルとしてだけ持つほうがよいのでしょうか?

4

1 に答える 1

0

この質問はそのままでは答えられません... すべてのコードが OOP ベースではなく、タイムライン上にあるのに、なぜ個別のクラス ファイルを作成する必要があるのですか? もっと具体的にお願いします。アプリからオブジェクトを作成しようとするときに直面する問題は何ですか?

通常、メインの .fla ファイルのドキュメント プロパティにメイン クラスが必要です。この mainClass は MovieClip を拡張する必要があります。これは org/Main.as の例です。フォルダーに空のフラッシュ ファイルを作成し、その中に「org」という名前のフォルダーを作成します。このコードをこのフォルダー内の Main.as という名前のファイルに配置し、ドキュメント クラス プロパティで org.main をメイン クラスとして設定します。アクション パネルの fla の最初のフレームで:

var aVarOnFirstFrame:String = "some variable value";

この例では、Flash ムービーのメイン コンテナを呼び出す方法と、クラスがドキュメントを操作する方法を示します。これが役立つことを願っています。

変数とメソッドを呼び出す方法がわかります。

package org {
import flash.display.DisplayObjectContainer;
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.display.Stage;
import flash.events.Event;
public class Main extends MovieClip{

    private var mainStageObject:DisplayObjectContainer;
    private var theStage:Stage;

    public function Main(){
        mainStageObject = this.parent;
        theStage = this.stage;
        // Let's call this :
        trace(this + " == \"[object Main]\"\nAND NOT \"[object MainTimeLine]\"");
        trace("which is the default if no main class is specified for the .fla root Document")
        // this.stage is a shortcut to the top level element
        trace(this + ", paced on " + this.parent + " == " + this.stage + " == " + theStage);
        trace("comparaison for the three calls : ");
        var equalityParentStage:Boolean = (this.parent === this.stage);
        var equalityStageAndTheStage:Boolean = (this.stage === theStage);
        var equalityParentAndTheStage:Boolean = (this.parent === theStage);
        var equalityDisplayOContainer:Boolean = (this.parent === mainStageObject);
        var equalityForAllThreeProps:Boolean = ((this.parent === this.stage) && (this.stage === theStage) && (this.parent === mainStageObject));
        trace("this.parent === this.stage ? " + equalityParentStage);
        trace("this.stage === theStage ? " + equalityStageAndTheStage);
        trace("this.parent === theStage ? " + equalityParentAndTheStage);
        trace("this._parent ==== mainStageObject ? " + equalityDisplayOContainer);
        trace("this.parent === this.stage === theStage === mainStageObject ? " + equalityForAllThreeProps);
        this.addEventListener(Event.ADDED_TO_STAGE,onMainIsOnStage,false,0,false);
        this.addEventListener(Event.ACTIVATE,onMainIsActivated,false,0,false);
    }
    private function onMainIsOnStage(e:Event):void{
        trace(e.target.aVarOnFirstFrame);
        // -> outputs : null;
    }
    private function onMainIsActivated(e:Event):void{
        trace(e.target.aVarOnFirstFrame);
        // -> outputs : some variable value;
    }
}
}

/*
[object Main] == "[object Main]"
AND NOT "[object MainTimeLine]"
which is the default if no main class is specified for the .fla root Document
[object Main], paced on [object Stage] == [object Stage] == [object Stage]
comparaison for the three calls : 
this.parent === this.stage ? true
this.stage === theStage ? true
this.parent === theStage ? true
this._parent ==== mainStageObject ? true
this.parent === this.stage === theStage === mainStageObject ? true
null
some variable value
*/
于 2012-05-11T14:39:28.743 に答える