Форум 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=206035)

gin_sea 08.01.2014 22:54

получение ссылки на объект в обработчике событий
 
Создал в библиотеке объект, затем создаю его экземпляры и заношу их в массив, потом добавляю их на сцену. Хочу, чтобы при событии MOUSE_DOWN выполнялась функция Press, которая запускает перетаскивание объекта startDrag(). Как передать этой функции ссылку на объект, который ее вызвал, чтобы перетаскивался именно тот объект, на котором щелкнули мышью?

Код AS3:

for(i=0;i<7;i++)
{
        this["pic_obj"+i].txt.text=arr_txt[i];
        this["pic_obj"+i].y=arr_y[i];
        this["pic_obj"+i].x=245;       
        arr_pic[i]=this["pic_obj"+i];
        addChild(arr_pic[i]);
        arr_pic[i].addEventListener(MouseEvent.MOUSE_DOWN, Press);
}


Akopalipsis 08.01.2014 22:58

event.target или event.currentTarget, мне как то раз сказали, что из этого нужно писать, но я забыл)
Кажется что второе, но у меня вот со вторым, помнится, были не оплошности. target наверное будет, объект под курсором, а currentTarget, это тот, кто слушает.

alexandrratush 08.01.2014 23:26

Код AS3:

public function Press(e:MouseEvent):void
{
        var draged: Sprite = e.currentTarget as Sprite;
                draged.startDrag();
}

Вот так будет работать.

target - объект на который был нажат курсор
currentTarget - объект, который обрабатывается с помощью прослушивателя событий (на него был повешен слушатель)

gin_sea 09.01.2014 00:45

Цитата:

Сообщение от alexandrratush (Сообщение 1156789)
Код AS3:

public function Press(e:MouseEvent):void
{
        var draged: Sprite = e.currentTarget as Sprite;
                draged.startDrag();
}

Вот так будет работать.

target - объект на который был нажат курсор
currentTarget - объект, который обрабатывается с помощью прослушивателя событий (на него был повешен слушатель)

Супер! Все работает, огромное спасибо.

Добавлено через 31 час 48 минут
объекты pic_obj0, pic_obj1, ... содержат вложенный movie clip с instance name nested. как можно обратиться к nested через draged? pic_obj0.nested - все ок, dragged.nested - не получается

alexandrratush 15.01.2014 19:05

Цитата:

содержат вложенный movie clip с instance name nested. как можно обратиться к nested через draged?
С помощью метода getChildByName()


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

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