Сценарий действия 3 - Несколько клипов кнопок фильма? - PullRequest
0 голосов
/ 24 мая 2011

Итак, у меня есть код, показанный ниже:

import flash.events.MouseEvent; 

instance160.stop();

function playMovie(event:MouseEvent):void 

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

, и я хочу добавить несколько кнопок, не только эту.Методом проб и ошибок я понял, что не могу просто последовательно перечислить экземпляры, я также обнаружил, что не могу просто скопировать код и изменить имена экземпляров.Мне просто нужно знать, как использовать несколько кнопок / клипов.Любая помощь будет оценена!

Ответы [ 2 ]

2 голосов
/ 24 мая 2011

Класс «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 голосов
/ 25 мая 2011

Я использую этот небольшой класс, который я создал некоторое время назад - он делает добавление слушателей для умножения кнопок быстрее, проще и чище:

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 = [];
        }
    }
}

Использование:

Вот как я использую этот класс для добавления слушателей к двум созданным мной кнопкам с именами экземпляров a и b .

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();
...