2010-12-07 5 views
1

私のステージにボタンを作成しました。私はinitにインスタンス名を設定し、MainTimelineが外部スクリプトから呼び出されていました:外部の.asスクリプトでボタンインスタンスを呼び出すにはどうすればよいですか?

./Project/MyFlash.fla

./Project/MyFlash_fla/MainTimeline.as

I Flashの初心者で、ボタンを作成してその中に呼び込もうとしていますMainTimeline.as;エラーが返されました: ReferenceError: Error #1065: Variable init is not defined. at tfm::MainTimeline()

また、var init:Button = new Button();は運がありませんでした。

は具体的には、私はこれを行うにしようとしています:

import flash.display.*; 
import flash.events.*; 
import flash.net.*; 
import flash.system.*; 
import flash.utils.*; 
import flash.text.*; 
import flash.xml.*; 
import flash.media.*; 
import fl.controls.Button; 
import flash.*; 
import fl.*; 
import fl.controls.*; 

どれ可能な解決策:

function MainTimeline(){ 
    //var init:Button = new Button(); 
    init.addEventListener(MouseEvent.CLICK, begin); 
} 
function begin(){ 
    addFrameScript(0, frame1); 
} 

は、これらは私の輸入(と私は不満でも、無用なものを追加しました)ですか?


アップデート: 私は単にinit.add[...]の前this.を追加することで解消「VAR定義されていません」というエラーを得ているClass

MyFlash_fla.MainTimelineとして、stageプロパティの下で外部スクリプトをリンクしています。私の現在のエラー: TypeError: Error #2007: Parameter listener must be non-null at flash.events::EventDispatcher/addEventListener() at tfm::MainTimeline()。最初は完全にはっきりしていませんが、ステージにボタンがあり、クリックするたびに機能を実行しようとしています。 begin()現在のところ、そのエラーが返され、 begin()は何の操作もせずに実行されます。


更新II。 最後にエラーが発生したのは、event:Eventbegin(event:Event){...に追加しました。すべてがスムーズに動いているようです。私は間違いが残っている。それは何にも影響しませんが、私はまだそれを取り除きたいです:ReferenceError: Error #1065: Variable init is not defined.at tfm::MainTimeline/__setProp_init_Scene1_Layer1_0()at tfm::MainTimeline() - これはなんですか?

+0

現在のコードで更新できますか?参照エラーの可能性が私が 'getChildByName'を提案した理由でした。 – ocodo

答えて

0

あなたはinitボタンを参照するための方法getChildByName(name:String):DisplayObjectを使用し

(おそらくthisあなたの文脈では、より多くの情報なしに知ることは困難)、メインDisplayObjectContainerてボタンにアクセスする必要があります。

var init:Button = this.getChildByName("init") as Button; 
init.addEventListener(MouseEvent.CLICK, begin); 

必要な操作を行う必要があります。

ところで、それらの未使用のインポートをすべて追加するのは面倒ではありません。主な問題は、initボタンの表示リストの有効範囲を見つけることです。

外部スクリプトでもリンクしていた方法を示してくれれば助かります。

+0

更新:ステージのプロパティの下にある外部スクリプトを 'MyFlash_fla.MainTimeline'として' Class'にリンクしています。 – Salt

1

これで問題が解決するかどうかはわかりませんが、正しく理解すれば、基本的に外部スクリプトからステージインスタンスを制御できるようにしたいと考えています。

この場合の「ボタン」は、シンボルになっているタイプのフラッシュオブジェクトで、タイプが「ボタン」のシンボルを作成することを選択した場合は、.flaファイルにライブラリでは、そのシンボルをActionscriptにエクスポートします。

作成したライブラリアイテムを右クリックして[プロパティ]に移動します。そこから、 "Export for Actionscript"のチェックボックスをオンにします。このカスタムボタンオブジェクトにクラス名を付ける(ステージ上のものはこのクラスのインスタンスになります)。

次: 外部の.asドキュメントの名前が "MainTimeline.as"の場合、.flaファイルのドキュメントクラスを "MainTimeline"にすることをお勧めします(.flaと同じディレクトリにあると仮定します)。ファイル、それはそうであるように見えます)。これを行うには、.flaファイルのステージをクリックするか、他のすべての選択を解除してプロパティメニューボックスに移動します。 Class:[空白のテキストエリア]の部分で、 "MainTimeline"と入力します。つまり、MainTimelineはこのswfの全体的な基底クラスであり、ステージに追加するインスタンスは、このクラスでアクセス可能でなければなりません(実際の.asファイルのコードによってインスタンスが作成された場合のように)。

このMainTimeline.asファイルでは、次のテキストを挿入し、swfをコンパイルして実行するときにボタンが見えなくなると、おそらく動作しているはずです。

試してMainTimeline.asコード:

package 
{ 
    import flash.display.MovieClip; 

    public class MainTimeline extends MovieClip 
    { 
     public function MainTimeline() 
     { 
      init.visible = false; 
     } 

    } 

} 

は、この情報がお役に立てば幸い!

関連する問題