2009-06-15 4 views
0

AS2では、他のタイムラインにあった変数から値を変更するのは簡単でした。今私は古い方法で行うことはできません!他のタイムラインのメインタイムラインにある変数からどのように値を変更できますか?

私が必要とするのは、メインタイムラインの変数から別のタイムラインの値を変更することです。

例:

メインのタイムライン:

var totalA:int = 0; 

その他のタイムライン、関数にイベントリスナーを追加した後:

parent.parent.totalA++; 

だから、それは動作しません。なぜ誰かが説明できますか? ありがとう

+0

私はそれを解決しました。どうもありがとう:) – dutraveller

答えて

0

まあ...私はそれを解決しました。パス付きのMovieClip作成し

var A_mc:MovieClip = MovieClip(this.parent.parent); 

は、その後、私はそれを参照:

A_mc.totalA++; 
+0

this.parentには非常に注意が必要です。これは、パフォーマンスのためにadobeが組み込むいくつかの奇妙な機能を持っています。 –

0

より良い解決策は、グローバルクラスを使用することです。すべてのクラスからそのクラスを参照し、どこにでもアクセスできる変数を設定できます。

http://www.uza.lt/codex/as3-global-object/

グローバルオブジェクトを見て、あなたのAS3アプリケーション内でグローバルにアクセス可能な場所での動的変数を格納することができますシングルトンです。これにより、開発者はビジュアルコンポーネント、グローバルイベント、イベントリスナーを自己登録するなどの作業を行うことができます。

0

どのようにしたいのかによって異なりますが、グローバル変数のシングルトンクラスは、おそらく最良のコースです。あなたはシングルトンデザインパターンに慣れていない場合は、単に私はまた、あなたがOOの実践に興味があるなら、私は直接その変数にアクセスしないことを追加します

//Example - Would move the parent movie clip 5 pixels to the right. 
//You must cast it because there is no way for the compiler to know what the asset. 
MovieClip(parent).x = 5; 
0

としてそれをキャストに固執します。

上記のJoshが言及しているシングルトンで機能を設定できます。その変数を関数内にカプセル化すると便利です。次の例のように、意味のあるあなたの関数の何かに名前を付ける必要があります。

function addToTotal (int amount) :void 

この方法で、すべての機能を合計シングルトンと関数内encapulatedれ考え出すため。後で変更を合計する必要があるかどうか、またはvarialbeを変更する必要がある場合、変更は関数に限定されます。

関連する問題