2011-05-24 45 views
0

所以我有一個代碼,如下圖所示:動作腳本3 - 多個電影按鈕剪輯?

import flash.events.MouseEvent; 

instance160.stop(); 

function playMovie(event:MouseEvent):void 

{ 
instance160.play(); 
} 
button160.addEventListener(MouseEvent.CLICK, playMovie); 

,我想添加多個按鈕,不只是這一個。我通過反覆試驗發現,我不能連續列出實例,我還發現我不能只複製代碼並更改實例名稱。我只需要知道如何去有多個按鈕/剪輯。任何幫助,將不勝感激!

回答

1

「Event」類(MouseEvent擴展)有一個名爲「currentTarget」的屬性,該屬性將引用傳遞給派發該事件的任何對象。所以你可以這樣做:

myClip.addEventListener(MouseEvent.CLICK, playMovie, false, 0, true); 
myClip2.addEVentListener(MouseEvent.CLICK, playMovie, false, 0, true); 
... 
myClip9999.addEventListener(MouseEvent.CLICK, playMovie, false, 0, true); 

function playMovie(event:MouseEvent):void { 
event.currentTarget.play(); 
} 

這是或多或少你在找什麼?

+0

MYK,我會永遠珍惜你的幫助一點,如果我想出解決辦法它的工作原理 - 無論哪種方式,我仍然非常感激。我現在正在嘗試將你的一小段代碼與我的小小部分聯繫起來,沒有任何運氣,但是你的知識非常棒,你可以提供幫助! (因爲至少我現在可以嘗試更多不同的東西) – Arlene 2011-05-24 19:12:15

+0

那麼,什麼是「instance160」?這只不過是你放在Flash中的舞臺上的影片剪輯,並沒有指定名稱? – Myk 2011-05-24 19:21:48

+0

所以我非常想做一個我認爲是簡單的校園地圖。我做了一個傳說,並且對於傳說中的每個房間「buttonXXX」對應於房間/通道淡入的命名實例動畫,所以我將所有我的小剪輯命名爲「instanceXXX」中的房間,所以我不會「不會感到困惑。 – Arlene 2011-05-24 19:35:02

0

我用這個小班,我做了一段時間後 - 這使得添加的聽衆成倍按鈕更快,更容易和更清潔:

package 
{ 
    public class ButtonCollection extends Object 
    { 
     // current list 
     private var _clist:Array = []; 

     /** 
     * Merge instances of SimpleButton with listeners 
     * @param list A list of buttons and listeners to merge 
     */ 
     public function merge(...list):void 
     { 
      var i:Object; 
      for each(i in list) 
      { 
       i.button.addEventListener(i.event, i.callback); 
       _clist[_clist.length] = i; 
      } 
     } 

     /** 
     * Removes all previously added listeners 
     */ 
     public function clear():void 
     { 
      var i:Object; 
      for each(i in _clist) 
      { 
       i.button.removeEventListener(i.event, i.callback); 
      } 

      _clist = []; 
     } 
    } 
} 

用途:

這是我如何使用這個類來添加一些偵聽器到我已經創建的兩個按鈕,實例名稱爲ab

var bc:ButtonCollection = new ButtonCollection(); 

bc.merge(
    {button: a, event: MouseEvent.CLICK, callback: _click}, 
    {button: b, event: MouseEvent.CLICK, callback: _click}, 
    {button: b, event: MouseEvent.MOUSE_OVER, callback: _mouseOver} 
); 

function _click(e:MouseEvent):void 
{ 
    trace(e.target.name + " was clicked"); 
} 

function _mouseOver(e:MouseEvent):void 
{ 
    trace(e.target.name + " was rolled over"); 
} 

類也爲您提供了一個容易的選擇刪除所有以前添加監聽器當你完成:

bc.clear();