AS2では、他のタイムラインにあった変数から値を簡単に変更できました。今、私はそれを古い方法で行うことはできません!
基本的に必要なのは、メインのタイムラインにある変数から、別のタイムラインから値を変更することです。
例:
主なタイムライン:
var totalA:int = 0;
eventListenerを関数に追加した後のその他のタイムライン:
parent.parent.totalA++;
だからそれは動作しません。誰かが理由を説明できますか?ありがとう
AS2では、他のタイムラインにあった変数から値を簡単に変更できました。今、私はそれを古い方法で行うことはできません!
基本的に必要なのは、メインのタイムラインにある変数から、別のタイムラインから値を変更することです。
例:
主なタイムライン:
var totalA:int = 0;
eventListenerを関数に追加した後のその他のタイムライン:
parent.parent.totalA++;
だからそれは動作しません。誰かが理由を説明できますか?ありがとう
より良い解決策は、グローバルクラスを使用することです。すべてのクラスから参照し、どこからでもアクセスできる変数を設定できます。
http://www.uza.lt/codex/as3-global-object/をご覧ください
グローバルオブジェクトは、AS3アプリケーション内のグローバルにアクセス可能な場所に動的変数を格納できるシングルトンです。これにより、開発者は、ビジュアルコンポーネント、グローバルイベント、イベントリスナーの自己登録などを実行できます。
さて...私はそれを解決しました。
パスを使用してMovieClipを作成しました:
var A_mc:MovieClip = MovieClip(this.parent.parent);
それから私はそれを参照しました:
A_mc.totalA++;
それはすべてあなたが物事をやりたい方法に依存しますが、あなたが維持したいと思うかもしれないグローバル変数のためのシングルトンクラスはおそらく最良のコースです。シングルトンデザインパターンに慣れていない場合は、次のようにキャストするだけです。
//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;
また、OOプラクティスに興味がある場合は、その変数に直接アクセスしないことも付け加えておきます。
上記のJoshが言及したシングルトンで関数を設定できます。関数内にその変数をカプセル化するのに役立ちます。関数には、意味のある名前を付ける必要があります。次に例を示します。
function addToTotal (int amount) :void
このようにして、合計を計算するためのすべての関数がシングルトンと関数内にカプセル化されます。どういうわけか後で変更を合計する必要がある場合、またはバリアルベを変更する必要がある場合、変更は関数に限定されます。