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

alatar 02.09.2010 16:56

Цитата:

я мало понимаю пока в флеше
После этой фразы следовало поставить точку и дальше не писать. Человек спросил, ему ответили. Что он будет делать с этим примером, дело уже спросившего.

iillyyaa 02.09.2010 18:02

человек спросил, как передать массив по нажатию кнопки, а ему сказали как перебрать элементы массива.. разницу чуствуете ?

это тоже самое, как сказать, в универсам завезли колбасу по 200р.
а он будет решать, пойдет он в универсам за колбасой или нет..

Добавлено через 4 минуты
я наверно настолько тупой, что не вижу, как передан массив arr (который автор хочет передать)
я лишь вижу, что зачем то создан второй массив и зачем то в фунции его перебирают.. "что то делая" :)

AirDecade 02.09.2010 19:26

2-ой массив не создан. buttons - лишь переменная, ей присваивается первый массив. Таким образом массивов всего 1 штука.

код
Код AS3:

for(var i:int = 0; i<buttons.length; i++){
                                //Что-то делаем               
                        }

я написал просто как пример обращения к массиву. Если нужно не перебрать его элементы, а что-то другое сделать, значит этот цикл не нужен.

iillyyaa 02.09.2010 20:19

нужно знать или значение ячейки массива или же имя массива + номер ячейки

а не просто присвоить к переменной массив..
хотя мне кажется вы тут накосячили.. если бутонс переменная, то что за длинна у переменной ? и для чего это вообще нужно ???
зачем нам этот buttons ??? мы что не можем сразу обратиться к arr ???

у человека 10 кнопок и 10 прямоугольников, нажав на кнопку мы удаляем прямоугольник рядом с кнопкой.. как твоя фунция удалит именно тот прямоугольник ?

AirDecade 02.09.2010 20:53

Цитата:

Сообщение от iillyyaa (Сообщение 933135)
нужно знать или значение ячейки массива или же имя массива + номер ячейки

Можно цитату?


length у массива.
arr виден только внутри initButtons.


Цитата:

Сообщение от iillyyaa (Сообщение 933135)
у человека 10 кнопок и 10 прямоугольников

Где вы их у него нашли?

Psycho Tiger 02.09.2010 21:19

iillyyaa, ага, в точку.

event.target - там где произошло событие (например, кнопка внутри мувика, подписанного на событие)
event.currentTarget - то что подписали

Цитата:

я наверно настолько тупой, что не вижу, как передан массив arr (который автор хочет передать)
Успокойтесь, Вы мыслите совершенно правильно.

Если честно, мне интересно что хочет доказать AirDecade и почему alatar решил заткнуть здравую мысль у iillyyaa.

iillyyaa 02.09.2010 22:06

Psycho Tiger, евенты я примерно понимаю, но не до конца пока.. как нам выдернуть сам массив ? сначала ссылку на массив, а потом уже и его, с его значениями..

нам нужен индекс массива.. и наверно имя (или же значения массива в некий временный массив)

вот как ? :)

Psycho Tiger 02.09.2010 22:44

Чтобы выдернуть массив из метода - достаточно чтобы он был в скоупе класса. Объявить его как приватное поле класса будет для этого достаточно.

Теперь по event.currentTarget мы получаем ссылку на один из подписанных объектов - точнее на котором был клик. Приводим его к нужному типу. У этого типа есть поле id, мы в цикле ему присваивали значение. Так мы узнаём какой индекс в массиве носит этот объект. Только вот зачем узнавать индекс, чтобы узнать позицию в элементе чтобы выдернуть элемент из элемента, когда у нас этот элемент уже есть - мне неясно.

iillyyaa 02.09.2010 23:13

так где он есть ? я ход мысли понимаю, а код написать не могу.. думаю автор так же :)

есть у нас arr[0]=3; arr[1]=7; arr[2]=19;

как нам получить значение 7 ? и как индекс 1 ?

индексом мы можем из другого массива что то выдернуть.. или же изменить какой то прямоугольник, который завязан индексом с кнопкой..

Psycho Tiger 02.09.2010 23:22

Код AS3:

private var hash:Dictionary=new Dictionary();
 
...
var i:int=10;
while (i--){
var mc:SomeSprite=new SomeSprite();
mc.addEventListener(MouseEvent.CLICK, onClick);
super.addChild(mc);
mc.x=100*i;
hash[mc]=i;
}
 
...
 
private function onClick(event:MouseEvent):void{
trace(hash[event.currentTarget]);
}



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

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