Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Одна функция для нескольких событий (http://www.flasher.ru/forum/showthread.php?t=146573)

ЗлОй ПрОграММер 11.11.2010 22:26

Одна функция для нескольких событий
 
Есть 5 movie clip, расположеных на сцене. Для каждого написано событие MouseEvent.CLICK, как сделать так чтобы при нажатии мышкой на одном из них, он бы двигался вниз например на 10 пикселей, при этом не вариант написать 5 функций для каждой кнопки, так как кнопки генерируются от 1 до 1000 :o

bav 11.11.2010 22:33

1) Что значит «Для каждого написано событие MouseEvent.CLICK»?
2) В целом вы имеете в виду нечто подобное?
Код AS3:

var someMc:MovieClip = new MovieClip();
someMc.addEventListener(MouseEvent.CLICK, clickHandler);
 
function clickHandler(event:MouseEvent):void {
    // event.currentTarget - объект сгенерировавший событие
    (event.currentTarget as MovieClip).y += 10;
}


ЗлОй ПрОграММер 11.11.2010 22:38

у меня есть класс button , я сделал массив класса button вот код
Код AS3:

var buttons: Array = [];
var p:int = 0;
for (i=0; i<=3; i++){
        for (j=0; j<=3; j++){
                if (Num[i][j]!=0) {
                        buttons.push(new button());
            addChild(buttons[p]);       
                        x1 += 90;
            buttons[p].x = x1;
            buttons[p].y = y1;
                        p +=1;
                }
        }
 
    y1 += 90;
    x1 = 140;
}

теперь сдвинуть ту "кнопку(клетку)" на которую я нажал ! как это сделать , я не понимаю как ваш код работает(

Добавлено через 1 минуту
Код AS3:

buttons[0].addEventListener(MouseEvent.CLICK,  drag);
 
function drag(e: MouseEvent):void{
  buttons[0].x += 10;
}

для одной кнопки будет так, а если у меня их будет 1000 то и 1000 функций надо описывать , а меня это не устраивает

andrew911 11.11.2010 22:43

Подпишите сцену на MouseEvent.CLICK и работайте с target

bav 11.11.2010 22:46

Просто подписывайте создаваемые в цикле кнопки на одну функцию. В вашем случае drag(). Только она должна выглядеть так:
Код AS3:

function drag(e: MouseEvent):void{
  e.currentTarget.x += 10;
  // или
  // e.target.x += 10;
}

Свойство target объекта события, передающегося в функцию drag(), является ссылкой на объект, сгенерировавший событие. Иными словами e.target – это и есть кнопка, по которой вы кликнули.

ЗлОй ПрОграММер 11.11.2010 22:50

заработало, спасибо))

Добавлено через 3 минуты
тока ошибка возникает
TypeError: Error #1010: Термин не определен и не имеет свойств.
at _fla::MainTimeline/frame1()

а так работает всё


Часовой пояс GMT +4, время: 17:49.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.