2011-12-28 8 views
1

これは簡単な質問かもしれませんが、読み込んだ外部swfファイル内のボタンにアクセスしようとしています。問題は、私がこのボタンにアクセスしようとするたびに、それがnullであると言うエラーを受け取ります!読み込まれたswfファイル内のボタンにアクセスしますか?

なぜこれが起こっているすべてのアイデア?私は同様の記事を探してみましたし、私はいくつかを見つけたが、この問題は解決しない。ここ

は私のコードです:

EDIT

public class DocumentClass extends Sprite 
{ 
    public var loader:Loader; 
    public var swfFile:URLRequest; 
    public var container:MovieClip; 

    public function DocumentClass() 
    { 
     super(); 

     // support autoOrients 
     stage.align = StageAlign.TOP_LEFT; 
     stage.scaleMode = StageScaleMode.NO_SCALE; 

     loader = new Loader(); 
     swfFile = new URLRequest("swfs/TestScreen.swf"); 

     loader.load(swfFile); 
     addChild(loader); 

     button.addEventListener(MouseEvent.CLICK, onClickReturnMainMenu); // PROBLEM HERE 




    } 

    private function onClickReturnMainMenu(event:MouseEvent):void 
    { 
     trace("TEST-TEST"); 
    } 

感謝= D:ここが編集コード

です
public class DocumentClass extends Sprite 
{ 
    public var loader:Loader; 
    public var swfFile:URLRequest; 
    public var container:MovieClip; 

    public function DocumentClass() 
    { 
     super(); 

     // support autoOrients 
     stage.align = StageAlign.TOP_LEFT; 
     stage.scaleMode = StageScaleMode.NO_SCALE; 

     loader = new Loader(); 
     swfFile = new URLRequest("swfs/TestScreen.swf"); 

     loader.load(swfFile); 

     loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete); 




    } 

    private function onClickReturnMainMenu(event:MouseEvent):void 
    { 
     trace("ASDSADSADSAD"); 
     //dispatchEvent(new ButtonEvent(ButtonEvent.MAINMENU)); 
    } 


    private function onLoadComplete(evt:Event):void 
    { 
     addChild(loader); 

     var button:SimpleButton = loader.content.button 
     button.addEventListener(MouseEvent.CLICK, onClickReturnMainMenu); 


    } 

これは正しく動作するはずですが、コードワイズは正しいと思います。問題は、ローダーが必要なボタンを見つけることができないことです。実際にロードされたムービークリップのボタンにインスタンス名 "button"があります。私はそれをダブルチェックしました。

EDIT2

は、最終的には基本的にも、少なくともその上、今... ... ME OF SO STUPID私は層が高すぎたと私は何もアクセスできなかった理由です、それはこの http://www.kirupa.com/forum/showthread.php?301313-Accessing-MC-instances-inside-loaded-SWFのおかげで作業しました。おかげで助けみんな= D

答えて

3

のためにあなたは2つの問題ここに...

  1. あなたがボタンにアクセスしようとする前にロードするSWFのを待っていないんです。
  2. ボタンへのアクセス方法が正しくありません。 loader.contentLoaderInfoEvent.COMPLETEリスナーを追加することができ最初の必要性

:あなたのボタンを想定し、

protected function onLoadComplete(evt:Event):void 
{ 
    var button:SimpleButton = loader.content.button; 
    button.addEventListener(MouseEvent.CLICK, onClickReturnMainMenu); 
} 

あなたのためにそれを行う必要があります。

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadComplete); 

その後、あなたは、イベントハンドラを作成する必要がありますロードされたムービーのルートにインスタンス名 "button"があります。

+0

動作しません。しかし、私は問題は私の読み込まれたswfからではなく、コード自体からだと思う。理由は分かりませんが、ローダーのコンテンツに「ボタン」が見つかりません。私はインスタンス名が確かに "ボタン"であることを確認しましたが、まだそれを見つけることはできません。 理由は何ですか?たぶん私は、swfファイルを間違ってエクスポートしています、 "button"という名前のボタンインスタンスを含むmovieClipを書き出すためにflash proを使用しています。私はここに何かを逃していますか – r3x

関連する問題