2010-12-08 3 views
1

私はかなり新しいFlashです。私は単純なボタンでステージを上げています。 Instance Nameinitです。マイ.asスクリプト(MainTimeline)は、ステージから外部からアクセスされていますコードのunfindable部分に "変数*が定義されていません"?

./Project/MyFlash.fla

./Project/MyFlash_fla/MainTimeline.as

私はMyFlash_fla.MainTimelineに、Classstageプロパティを設定することによって.asにリンクしています。ボタンのinitは、ラベルがプロパティで「ENTER」に設定されています。

しかし、私はこのエラーに遭遇しています:ReferenceError: Error #1065: Variable init is not defined.at MyFlash_fla::MainTimeline/__setProp_init_Scene1_Layer1_0()at MyFlash_fla::MainTimeline()私は、これは私の現在のコード..です__setProp_init_Scene1_Layer1_0()

を見たことがなく、また見つけることができる午前決してました:

function MainTimeline(){ 
     this.init.addEventListener(MouseEvent.MOUSE_UP, begin); 
    } 
    function begin(event:Event){ 
     addFrameScript(0, frame1); 
    } 

機能が簡単です。 MOUSE_UPの場合は、beginを実行します。上記のエラーがプロパティに設定したプリセットの読み込みに問題を引き起こしているようであることを除いて、すべて正常に動作しているようです。ラベルはENTERの代わりにLabelに変更されています。私はそれがそのエラーと関係していると信じていますが、私はそのエリアにアクセスする方法やこれを修正する方法がわかりません。現在のところ、ボタン、チェックボックスなどの追加を予定しているので、私がしたくないコード内にラベルを設定するのは現実的な回避策であり、それは見苦しいものになるでしょう。誰もこれを解決する方法を考えている?

+0

FYI:「到達不能コード」とは通常、実行できないコードを意味し、ソースが見つからないコードは意味しません。 –

+0

私は知っています。矛盾する言葉遣いは、私は思いますが、それが頭に浮かぶ最初の記述です。編集。 :) – Salt

+0

答えたとマークされているときに、なぜ同じ質問をしているのですか? ...可能な複製[外部の.asスクリプトでボタンインスタンスを呼び出す方法は?](http://stackoverflow.com/questions/4382734/how-do-i-call-a-button-instance-in -an-external-as-script) – PatrickS

答えて

0

これは、 "init"インスタンスがインスタンス化されておらず、__setProp_init_Scene1_Layer1_0()がシーンコードの背後にあることを意味します。これについては心配しないでください。あなたはそれを追加し、プロパティパネル&で「ActionScriptに書き出し」を使用して独自のクラスにリンク、初期化変数

 //assuming your button is a MovieClip 
    private var init:MovieClip; 

    function MainTimeline() 
    { 
     init.addEventListener(MouseEvent.MOUSE_UP, begin); 
    } 

または、代わりに直接ステージにそれを追加するのを宣言するのいずれかがあり

コード側で私は、一般的には、このアプローチを使用すると、ディスプレイオブジェクトをより詳細に制御できるようになります。もちろん、それはステージに追加されていないので、インスタンス名は必要ありません!

サイドノートで
 private var button:MovieClip = new init(); 

    function MainTimeline() 
    { 
     button.addEventListener(MouseEvent.MOUSE_UP, begin); 
    } 

それは多くの場合、メソッド名としてクラスで使われているので、「initは」、ボタンのための最高の名前ではないかもしれない...他の読者のために

+0

2つ目の解決策を試してみると、ボタンの 'Class'プロパティを' ctrl'に設定し、次にこのコードを設定します: varボタン:MovieClip = new ctrl(); function MainTimeline(){ button.addEventListener(...、...); } ... これで、エラーは表示されませんが、上記のようにボタンが点滅します。 :Sこれは 'MovieClip'として設定されています。 – Salt

+0

別のMovieClipでデバッグしようとする必要があります。図形を描き、MovieClipに変換してから2番目の解決策を試してみてください...もしうまくいけば、ボタンに問題があります – PatrickS

+0

Patrickに心から感謝します。私は緑色の四角形を作成し、それを 'Symbol'に変換し、' testing'の 'Class'と' flash.display.MovieClip'に 'Base Class'プリセットを与えました。私のコードの中で、 'var test:MovieClip = new testing();'と 'MainTimeline'、' test.visible = false; 'の中にプロパティを制御しているかどうかをテストしました。試してみるために、私も運がないイベントリスナーを追加しようとしました。エラーはありませんが、何も起こりません。 – Salt

0

、上記のエラーはおそらくその後、

とs(右上 でレンチのように見える)[設定/ AS3.0のパブリッシュ設定/

  • ファイルに行く必要があることを意味et 「ステージインスタンスを自動的に宣言する」チェックボックスをオンにします。また、「strict mode」のチェックを外し、ファイルにエラーが発生した場合は、チェックをはずしてください。