Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как получить массив из eventListener? (http://www.flasher.ru/forum/showthread.php?t=144076)

angry_beaver 02.09.2010 03:38

Как получить массив из eventListener?
 
Всем привет!

Вопрос следующий:


Есть функция-
Код AS3:

function initButtons(arr:Array):void {
 
        for(var i:int = 0; i<arr.length; i++){
                arr[i].id = i;
                arr[i].buttonMode = true;
                arr[i].addEventListener(MouseEvent.MOUSE_OVER, playOver);
                arr[i].addEventListener(MouseEvent.MOUSE_OUT, playOut);
                arr[i].addEventListener(MouseEvent.CLICK, doClick);               
        }//for

-как мне передать arr[i] в playOver из этой функции когда происходит событие?

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

:victory:

AirDecade 02.09.2010 06:34

Вариант 1:
Добавить в данный класс переменную под Array и в этой функции просто присваивать ей arr, переданный в параметре. Из функций-обработчиков обращаться к этой переменной.
Вариант 2:
В объект, который в массиве, добавить переменную, в которую записывать этот массив и обращаться к нему через event.target

angry_beaver 02.09.2010 06:54

Цитата:

Сообщение от AirDecade (Сообщение 933001)
Вариант 1:
Добавить в данный класс переменную под Array и в этой функции просто присваивать ей arr, переданный в параметре. Из функций-обработчиков обращаться к этой переменной.
Вариант 2:
В объект, который в массиве, добавить переменную, в которую записывать этот массив и обращаться к нему через event.target


Я не совсем понял. Дай пример простенький пожалуйста!

AirDecade 02.09.2010 07:30

Код AS3:

public class SomeClass {
 
                private var buttons:Array;
 
                ........
 
                function initButtons(arr:Array):void {
 
                        buttons=arr;
                        for(var i:int = 0; i<arr.length; i++){
                                arr[i].id = i;
                                arr[i].buttonMode = true;
                                arr[i].addEventListener(MouseEvent.MOUSE_OVER, playOver);
                                arr[i].addEventListener(MouseEvent.MOUSE_OUT, playOut);
                                arr[i].addEventListener(MouseEvent.CLICK, doClick);               
                        }
                }
                function playOver(e:MouseEvent):void {
 
                        for(var i:int = 0; i<buttons.length; i++){
                                //Что-то делаем               
                        }
                }
}

Второй вариант - если в arr находятся свои какие-то объекты, то добавить им свойство buttons и в том цикле добавить строчку
Код AS3:

arr[i].buttons = arr;


alatar 02.09.2010 12:10

Цитата:

когда я навожу курсор на любую из кнопок я получаю весь массив целиком?
В event.currentTarget вы получите ссылку на кнопку (по-сути ваш arr[i])

-De- 02.09.2010 12:20

Опять вопрос из серии "как передать парамер в слушатель" - ищите по форуму. Регулярно всплывает. Интересно, будет ли толк, если статью написать...

gloomyBrain 02.09.2010 12:22

@angry_beaver
Цитата:

как получить целый массив при наведении курсора мыши на какой-либо объект этого массива? Например: если у меня в массиве кнопки, то когда я навожу курсор на любую из кнопок я получаю весь массив целиком?
Для этого можно передать ссылку на массив в каждый элемент массива

alatar 02.09.2010 12:25

Цитата:

Для этого можно передать ссылку на массив в каждый элемент массива
для этого достаточно прописать этот массив в приватном свойстве класса и обращаться к нему. Зачем плодить ссылки?

gloomyBrain 02.09.2010 12:36

Цитата:

Зачем плодить ссылки?
Вероятно, массивов может быть несколько

iillyyaa 02.09.2010 16:41

AirDecade, про приведённый код, я мало понимаю пока в флеше, но, помоему это бред.

будет у нас массив из 1000 элементов, и мы будет все 1000 перебирать при нажатии на каком то из них ? а если массивов несколько ? и как в этом коде найти нужный элемент массива ?


-De- больше чем уверен, что толк будет, я лично чуть в теории понимаю, какие то ссылки на этот объект (массив) передаются при клике, но пока не понимаю как к ним обратиться и т.д. :)


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

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