![]() |
Как получить массив из eventListener?
Всем привет!
Вопрос следующий: Есть функция- Код AS3:
-как получить целый массив при наведении курсора мыши на какой-либо объект этого массива? Например: если у меня в массиве кнопки, то когда я навожу курсор на любую из кнопок я получаю весь массив целиком? :victory: |
Вариант 1:
Добавить в данный класс переменную под Array и в этой функции просто присваивать ей arr, переданный в параметре. Из функций-обработчиков обращаться к этой переменной. Вариант 2: В объект, который в массиве, добавить переменную, в которую записывать этот массив и обращаться к нему через event.target |
Цитата:
Я не совсем понял. Дай пример простенький пожалуйста! |
Код AS3:
Код AS3:
|
Цитата:
|
Опять вопрос из серии "как передать парамер в слушатель" - ищите по форуму. Регулярно всплывает. Интересно, будет ли толк, если статью написать...
|
@angry_beaver
Цитата:
|
Цитата:
|
Цитата:
|
AirDecade, про приведённый код, я мало понимаю пока в флеше, но, помоему это бред.
будет у нас массив из 1000 элементов, и мы будет все 1000 перебирать при нажатии на каком то из них ? а если массивов несколько ? и как в этом коде найти нужный элемент массива ? -De- больше чем уверен, что толк будет, я лично чуть в теории понимаю, какие то ссылки на этот объект (массив) передаются при клике, но пока не понимаю как к ним обратиться и т.д. :) |
Цитата:
|
человек спросил, как передать массив по нажатию кнопки, а ему сказали как перебрать элементы массива.. разницу чуствуете ?
это тоже самое, как сказать, в универсам завезли колбасу по 200р. а он будет решать, пойдет он в универсам за колбасой или нет.. Добавлено через 4 минуты я наверно настолько тупой, что не вижу, как передан массив arr (который автор хочет передать) я лишь вижу, что зачем то создан второй массив и зачем то в фунции его перебирают.. "что то делая" :) |
2-ой массив не создан. buttons - лишь переменная, ей присваивается первый массив. Таким образом массивов всего 1 штука.
код Код AS3:
|
нужно знать или значение ячейки массива или же имя массива + номер ячейки
а не просто присвоить к переменной массив.. хотя мне кажется вы тут накосячили.. если бутонс переменная, то что за длинна у переменной ? и для чего это вообще нужно ??? зачем нам этот buttons ??? мы что не можем сразу обратиться к arr ??? у человека 10 кнопок и 10 прямоугольников, нажав на кнопку мы удаляем прямоугольник рядом с кнопкой.. как твоя фунция удалит именно тот прямоугольник ? |
Цитата:
length у массива. arr виден только внутри initButtons. Цитата:
|
iillyyaa, ага, в точку.
event.target - там где произошло событие (например, кнопка внутри мувика, подписанного на событие) event.currentTarget - то что подписали Цитата:
Если честно, мне интересно что хочет доказать AirDecade и почему alatar решил заткнуть здравую мысль у iillyyaa. |
Psycho Tiger, евенты я примерно понимаю, но не до конца пока.. как нам выдернуть сам массив ? сначала ссылку на массив, а потом уже и его, с его значениями..
нам нужен индекс массива.. и наверно имя (или же значения массива в некий временный массив) вот как ? :) |
Чтобы выдернуть массив из метода - достаточно чтобы он был в скоупе класса. Объявить его как приватное поле класса будет для этого достаточно.
Теперь по event.currentTarget мы получаем ссылку на один из подписанных объектов - точнее на котором был клик. Приводим его к нужному типу. У этого типа есть поле id, мы в цикле ему присваивали значение. Так мы узнаём какой индекс в массиве носит этот объект. Только вот зачем узнавать индекс, чтобы узнать позицию в элементе чтобы выдернуть элемент из элемента, когда у нас этот элемент уже есть - мне неясно. |
так где он есть ? я ход мысли понимаю, а код написать не могу.. думаю автор так же :)
есть у нас arr[0]=3; arr[1]=7; arr[2]=19; как нам получить значение 7 ? и как индекс 1 ? индексом мы можем из другого массива что то выдернуть.. или же изменить какой то прямоугольник, который завязан индексом с кнопкой.. |
Код AS3:
|
Цитата:
|
Цитата:
Цитата:
Подобный вопрос должен был расставить точки над i, что это сделано только для примера. По меньшей мере невежливо затыкать людей только по причине того, что они образованы чуть менее, чем Вы. Проблема описанная выше не высосана из пальца: я со своим опытом понял что "перебор дан для примера" только когда второй раз перечитал полностью тему. Хотя и сейчас я придерживаюсь прежнего мнения: не могу представить себе ситуацию, в которой ради демонстрации получения ссылки на массив её используют в одном месте - в условии цикла. |
AirDecade я чуть усложню пример, точнее он такой и есть, я код напишу... реализация на самом деле будет такой же.. от вас хотел бы исправления вашего кода
Код AS3:
Цитата:
Код AS3:
Добавлено через 3 минуты Psycho Tiger, я правильно понимаю, мы создаём какой то объект, в него засовываем ссылку, точнее ссылка является индексом, и запихиваем туда нужное нам значение.. из функции онклик, мы имея ссылку выдергиваем из массива hash по индексу равному ссылке значение ячейки ?? |
Спасибо за ваши ответы!
Я уже который день сижу голову ломаю...я не создавал классов, пытался все сделать линейным программированием, а делаю я меню с выезжающим саб меню. У меня есть МК(муви клип), в этом МК menu у меня 5 главных МК кнопок (BUT1, BUT2, BUT3, BUT4, BUT5) с анимацией, каждая главная кнопка имеет саб кнопки и я создал 5 МК (but1Sub, but2Sub, but3Sub, but4sub, but5sub). В butSub есть: саб кнопки МК со своей анимацией, и анимация как саб кнопки выпадают когда срабатывает событие для главной кнопки. Создал массивы: Код AS3:
инициализирую главные кнопки aButtons[], при MOUSE_OVER вызываю функцию где главная кнопка делается нажатой, потом вызываю саб менюшку из aSubMenu[]. Из функции где я вызываю саб меню я хочу инициализировать саб кнопки передавая нужный массив в initButtons(arr); таким образом я использую одну и ту же функцию, и так я хочу сделать для всех функций. Код AS3:
Вообщем жесть....не судите строго, я недавно только начал изучать AS3. Знаю что все это можно организовать с классами, только я не понимаю как это реализовать в моем случае! Спасибо огромное за вашу помощь! |
hash мы можем сделать многомерным массивом, и к примеру обратиться к нескольким данным которые мы передаём..
Код AS3:
Добавлено через 31 секунду всё верно ? |
Цитата:
Цитата:
было бы здорово если бы работала такая штука: Цитата:
|
Цитата:
Цитата:
Добавлено через 1 минуту angry_beaver, Код AS3:
|
Цитата:
Цитата:
|
alatar получает второе предупреждение за флейм.
|
Код AS3:
|
in4core, вот это в милион раз понятнее :)
|
Цитата:
|
Цитата:
|
Создать ссылку на массив не пробовали? В особо извращенном случае, можно создать словарь, в котором ключами будут кнопки, а значениями – массивы. (на правах субботы, тему читал поверхностно)
Код AS3:
|
Цитата:
|
А в чем проблема с расширить класс?
|
Цитата:
|
Кто сказал что она лишняя?
|
Она будет лишней если этот параметр будет использоваться только в этом классе и он единично-простой. Я считаю нормальным занаследоваться если нужно тащить за собой 5-6 переменных. Но в случае, когда по клику надо просто передать id - Dictionary это самый лучший вариант.
|
Цитата:
Если посмотреть на название метода - initButtons, то, если автор не совсем ленивый, был создан класс описывающий свои кнопки и добавить туда id проблемы нет. |
| Часовой пояс GMT +4, время: 15:35. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.