2011-09-11 8 views
1

URLRequestが失敗したときに実行されるAS3関数があります。この関数を使用して、他の関数を使ってチェックできるグローバル変数を割り当てる必要があります。関数内にグローバル変数を割り当てるにはどうすればよいですか?Actionscript 3 - 関数内でグローバル変数を割り当てる

ありがとうございます!

編集:これは私が私の関数の外で取得しようとしています変数(soundFile2Exist)です:

function onIOError(e:IOErrorEvent):void 
{ 

    var soundFile2exist = null; 
    trace (soundFile2exist); 
} 

私はpackgeの内側に自分のコードを使用していません。これを行う方法はまだありますか?

function playMusic(evt:MouseEvent):void 
{ 
    channel = myMusic.play(songPosition); 
    if (soundFile2exist != null) { 
      channel2 = myMusic2.play(channel.position); 
    } 
    myTimer.start(); 
    btnPlay.mouseEnabled = false; 
    trace (soundFile2exist); 

} 
+0

グローバル変数を使用して関数間でデータをやりとりしたいというこの質問の前提全体に強く反対します。 – jhocking

+0

どういう意味ですか?私は私の質問を間違って表現しているかもしれません。 – user547794

+0

グローバル変数に関係しない関数間でデータを共有する方法はたくさんあります。グローバル変数は、そのタスクを達成する最悪の方法です。 – jhocking

答えて

4

を他の状況で

var soundFile2exist; 

function onIOError(e:IOErrorEvent):void { 
    soundFile2exist = null; 
} 

function otherFunction():void { 
    trace (soundFile2exist); 
} 

、クラスのstatic variablesがで使用することができます:あなたの関数は、あなたがこの行で何かをすることができるように、そのスコープ内の関数にアクセスできるようになりますと同じレベル、同じスコープ、グローバル変数の場所。

+0

うーん...これを試してみて、2番目のトレースが "null"ではなく "undefined"を返す – user547794

+0

申し訳ありません、私のサンプルコードでエラーがありました、私は "var soundFile2exist = null" onIOError関数その関数のローカル変数にします。私はこの例を編集しましたが、今よりうまくいくはずです。 –

+1

upvoteこれは質問に対する最良の回答ですが、このプログラミング方法はお勧めしません。タイムラインコードはほとんど常に悪い考えです(この点でAS2はそれを必要としていたためさらに悪化しました;少なくともAS3ではタイムラインにコードを入れない*)。 – jhocking

1

最も一般的なアプローチは、どこからでも参照できるシングルトンクラスを作成することです。これは、基本的にクラスを設定します。そのクラスのインスタンスにアクセスする唯一の方法は、1つだけのインスタンスを返す制御された静的メソッドを使用することです。だからMySingleton.getInstance()と言うといつも同じオブジェクトで終わる。

グラントスキナーは、AS3でシングルトンを実装する方法を簡単に過去記事があります:あなたのコードは、(タイムライン上のフレームスクリプトのように)「のパッケージにない」、いずれかの変数はあなたが宣言されている場合はhttp://gskinner.com/blog/archives/2006/07/as3_singletons.html

+0

私のコードがパッケージに含まれていない場合、これを行う方法はありますか? – user547794

+0

あなたのコードがパッケージに含まれていないという問題に対する明らかな解決策は、それをパッケージに入れることです。あなたがそれをすることができない理由がありますか? – jhocking

+0

ちなみに、私はシングルトンを時折使用していたので、この回答を下降させたくありませんでしたが、シングルトンの弱点について多くのことを学びました。 – jhocking