0

私は今かなり大きな SWF を持っており、すでに少しコーディングしています。ほとんどの変数はルートに作成されますが、今は問題があります。

フラッシュ SWF をリロード (リセット) したいのですが、そのためには、すべての変数を破棄する関数と、変数を作成する別の関数を作成する必要があります。現時点では、ページをリロードする JavaScript 関数がありますが、それは本当に良い解決策ではありません。

問題は、関数内で var を作成すると、「MovieClip(root)」で作成されず、代わりに関数にのみ関連するため、swf が機能しなくなることです。

関数内から MovieClip(root) に変数を作成する方法はありますか? または、私がやろうとしていることの代替手段はありますか?

編集: いくつかのサンプル コードを追加しました。

function SetVar():void{
var test:String= new String("foobar");
}

SetVar();

trace(test);

...出力は次のとおりです。

Scene 1, Layer 'Layer 1', Frame 1, Line 7   1120: Access of undefined property test.

「var test」はグローバルではないため、関数が終了したときに失われたため、これは正常です。関数「SetVar()」が変数をルートまたはグローバルに追加するようにしたいと思います。

4

3 に答える 3

0

あなたの質問に関連するコードがないため、あなたが何を探しているのか完全にはわかりません. ただし、この主題に関連していると思われる情報を少し紹介します。

クラスで変数を宣言すると、次のように関数からそれらを参照できます。

package{
    import flash.display.MovieClip;

    public class DocumentClass extends MovieClip{

        public var example:String = 'dog';

        public function DocumentClass(){
            trace(example); // dog
            testFctn();
            trace(example); // frog
        }

        public function testFctn(){
            example = 'frog'
        }
    }
}

親クラスの変数を参照したい場合にthis.parent['variableName']も役立ちます。または、親クラスを共有する労働者階級の兄弟、this.parent['childClass']['variableName']...

于 2013-10-07T11:30:50.233 に答える
0

関数内で変数を宣言しているため、そのスコープはその関数のみに制限されます。

関数の外で変数を宣言し、代わりに関数内で初期化してみてください。これで、root からアクセスできるようになります。

しかし、関数内から root で変数を宣言したい場合 (非常に珍しい要件)、次のことを試すことができます。

document["variableName'] = value;

また

root["variableName'] = value;

関数内。

于 2013-10-07T13:14:01.083 に答える