既然是有外部載入的,但有些問題可以討論的

A.swf載入B.swf

應該A.swf跟B.swf的畫格數不同
但我有在B.swf做按鈕,按下後將A.swf的畫格切換到指定畫格
載入其他的swf使用

由剛剛的方式就可以看到,MainTimeline能有多個但stage只有一個

OK.  這裡告訴你如何從A.swf設定事件在B.swf的按鈕上

先寫載入B.swf到myb_mc的語法

var loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_CompleteHandler);
loader.load(new URLRequest("B.swf"));
myb_mc.addChild(loader);
loader.x = 0;
loader.y = 0;

這裡不同的是,多了一行語法,意思是偵聽事件,當載入完成後執行loader_CompleteHandler函數
在loader_CompleteHandler函數可以這麼寫

function loader_CompleteHandler(e:Event):void
{
   loader.getChildAt(0).btn01.addEventListener(MouseEvent.CLICK,btn01_clickHandler);
}

function btn01_clickHandler(e:MouseEvent):void
{
   /*一些程式碼*/
}

幫在B.swf的btn01按鈕掛上偵聽事件

--------------------------------------------------------------

方式不同,但做法相同的另一個寫法
陣列寫法,事先定義好按鈕陣列
程式寫的時候一併附掛偵聽事件,再由引發事件主人的名字還判斷要做甚麼事

 

function loader_CompleteHandler(e:Event):void
{
 var buttonsArr:Array = [loader.getChildAt(0).btn01, loader.getChildAt(0).btn02];

 for (var i:int = 0; i< buttonsArr.length; i++)
 {
  buttonsArr[i].addEventListener(MouseEvent.CLICK,clickHandler);
 }
}

function clickHandler(e:MouseEvent):void
{
   switch (evt.target.name)
   {
     case "btn01" :
          /*一些程式碼*/
          break;
      case "btn02" :
          /*一些程式碼*/
          break;
    }
}

 

arrow
arrow
    全站熱搜

    Johnny 鋼鍊 發表在 痞客邦 留言(1) 人氣()