2011-05-24 46 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();