2012-05-10 5 views
0

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

メインタイムラインには、O1からO8までの8つのボタンがあります。ライブラリーにムービークリップコンポーネントがあります。このコンポーネントには、O1からO8までのボタンがあります。このコンポーネントはステージに追加され、独自のレイヤーとなり、インスタンス名はbattleDashboardになります。私は、このようなボタンにアクセスするのは、大規模なコード(clasesなし)のすべてであった。 battleDashboard.O1 //ボタンbattleDashboardコンポーネント内部のメインインタフェースで、メインタイムライン上の

O1 //ボタン

ので、クラスを作成し、私は「これを使用して、コンポーネント内部buttosにアクセスしてきました.O1 "。クラスファイルは、BattleDashboardムービークリップコンポーネントのプロパティパネルを使用してリンクされています。バトルが発生したときに呼び出され、メインインターフェイスに戻り、完了したら自分自身を隠すことになっています。

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

答えて

0

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

通常、メインの.flaファイルのドキュメントプロパティにメインクラスが必要です。 このmainClassはMovieClipを拡張する必要があります。 これはorg/Main.asの例です 空のフラッシュファイルをフォルダに作成し、「org」という名前のフォルダを作成します。 このコードをこのフォルダのMain.asという名前のファイルに置き、org.mainをドキュメントクラスプロパティのメインClassとして設定します。アクションパネルの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 
*/ 
関連する問題