![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Цитата:
|
|
|||||
|
Цитата:
Цитата:
Подобный вопрос должен был расставить точки над i, что это сделано только для примера. По меньшей мере невежливо затыкать людей только по причине того, что они образованы чуть менее, чем Вы. Проблема описанная выше не высосана из пальца: я со своим опытом понял что "перебор дан для примера" только когда второй раз перечитал полностью тему. Хотя и сейчас я придерживаюсь прежнего мнения: не могу представить себе ситуацию, в которой ради демонстрации получения ссылки на массив её используют в одном месте - в условии цикла.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 147
|
AirDecade я чуть усложню пример, точнее он такой и есть, я код напишу... реализация на самом деле будет такой же.. от вас хотел бы исправления вашего кода
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(var i:int = 0; i<arr2.length; i++){ arr2[i].id = i; arr2[i].buttonMode = true; arr2[i].addEventListener(MouseEvent.MOUSE_OVER, playOver); arr2[i].addEventListener(MouseEvent.MOUSE_OUT, playOut); arr2[i].addEventListener(MouseEvent.CLICK, doClick); } } Цитата:
function playOver(event:MouseEvent){ // что то сделать, что бы в переменной xxx было значение индекса к примеру (0 или 1 или 2 и т.д.) trace(xxx); //trace должен выдать число 0, 1, 2 или какой там индекс был у массива, где кликнули мышкой } Добавлено через 3 минуты Psycho Tiger, я правильно понимаю, мы создаём какой то объект, в него засовываем ссылку, точнее ссылка является индексом, и запихиваем туда нужное нам значение.. из функции онклик, мы имея ссылку выдергиваем из массива hash по индексу равному ссылке значение ячейки ?? |
|
|||||
|
Регистрация: Sep 2010
Сообщений: 6
|
Спасибо за ваши ответы!
Я уже который день сижу голову ломаю...я не создавал классов, пытался все сделать линейным программированием, а делаю я меню с выезжающим саб меню. У меня есть МК(муви клип), в этом МК menu у меня 5 главных МК кнопок (BUT1, BUT2, BUT3, BUT4, BUT5) с анимацией, каждая главная кнопка имеет саб кнопки и я создал 5 МК (but1Sub, but2Sub, but3Sub, but4sub, but5sub). В butSub есть: саб кнопки МК со своей анимацией, и анимация как саб кнопки выпадают когда срабатывает событие для главной кнопки. Создал массивы: var aButtons:Array = [home_btn, services_btn, ted_btn, knowCenter_btn, about_btn]; - главные кнопки var aSubMenu:Array = [home_sub, services_sub, ted_sub, knowledge_sub, about_sub];- массив со всеми саб менюшками var aHomeSub:Array = []; - массивы для саб кнопок var aServicesSub:Array = [package_btn, component_btn, prodRel_btn, medical_btn, solar_btn]; var aTedSub:Array = [report_btn, video_btn, accessibility_btn]; var aKnowCenter:Array = [medical_btn, packageTest_btn, railroad_btn]; var aabout:Array = [qm_btn, news_btn, contact_btn, links_btn];//4*/ - - - инициализирую главные кнопки aButtons[], при MOUSE_OVER вызываю функцию где главная кнопка делается нажатой, потом вызываю саб менюшку из aSubMenu[]. Из функции где я вызываю саб меню я хочу инициализировать саб кнопки передавая нужный массив в initButtons(arr); таким образом я использую одну и ту же функцию, и так я хочу сделать для всех функций. 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 }//initButtons function playOver(event:MouseEvent):void{ var currentBtn:int = event.currentTarget.id; trace("suka="+currentBtn); //:) event.target.gotoAndPlay("over"); setSelectedBtn(currentBtn, aButtons); // если бы я мог получить массив с кнопкой из события, то было бы очень красиво. callSubMenu(currentBtn) }//playOver function setSelectedBtn(id:int, arr:Array){ for(var i:int = 0; i<arr.length; i++){ if(i == id){ arr[i].gotoAndStop("down"); arr[i].buttonMode = false; arr[i].removeEventListener(MouseEvent.MOUSE_OVER, playOver); arr[i].removeEventListener(MouseEvent.MOUSE_OVER, playSOver); arr[i].removeEventListener(MouseEvent.MOUSE_OUT, playOut); arr[i].removeEventListener(MouseEvent.CLICK, doClick); }//if else{ if(arr[i].currentLabel == "down"){ arr[i].gotoAndPlay("out"); }//if arr[i].buttonMode = true; arr[i].addEventListener(MouseEvent.MOUSE_OVER, playOver); arr[i].addEventListener(MouseEvent.MOUSE_OVER, playSOver); arr[i].addEventListener(MouseEvent.MOUSE_OUT, playOut); arr[i].addEventListener(MouseEvent.CLICK, doClick); }//else }//for }//setSelectedBtn function callSubMenu(id:int):void{ for(var i:int = 0; i < aSubMenu.length; i++){ if(id == i && id !=0) { aSubMenu[i].gotoAndPlay("open"); initSubMenuButtons(i); trace("sub open for "+aSubMenu[i]); }//if else { if(aSubMenu[i].currentLabel == "open") { aSubMenu[i].gotoAndPlay("close"); trace("sub closed for "+aSubMenu[i]); }//if }//else }//for }//callSubMenu function initSubMenuButtons( id:int ):void{ trace("initSubMenuButtons for " + id); switch(id){ case 0:break; case 1:initButtons(aServicesSub);break; case 2:;break; //initButtons(aTedSub) case 3:;break; //initButtons(aKnowCenter) case 4:;break; //initButtons(aAbout) default:break; }//switch }//initSubMenuButtons ------ MAIN ------ initButtons(aButtons); Вообщем жесть....не судите строго, я недавно только начал изучать AS3. Знаю что все это можно организовать с классами, только я не понимаю как это реализовать в моем случае! Спасибо огромное за вашу помощь! |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 147
|
hash мы можем сделать многомерным массивом, и к примеру обратиться к нескольким данным которые мы передаём..
hash[0][event.currentTarget]); hash[1][event.currentTarget]); hash[2][event.currentTarget]); Добавлено через 31 секунду всё верно ? |
|
|||||
|
Регистрация: Sep 2010
Сообщений: 6
|
Цитата:
Цитата:
было бы здорово если бы работала такая штука: Цитата:
|
|
|||||
|
Цитата:
Цитата:
Добавлено через 1 минуту angry_beaver,
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
|
Цитата:
Цитата:
|
|
|||||
|
[+4 06.05.14]
|
вот и передали параметр . в чем трабла то?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 06:47. |
|
|
« Предыдущая тема | Следующая тема » |
| Теги |
| array , EventListener , массив , получить , слушатель |
|
|