![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 57
|
Здравствуйте. На сцене присутствует некоторое количество мувиклипов. Как сделать их объектами событий Click (с функцией передачи параметра visible = true разным картинкам), не вешая обработчик событий отдельно на каждый мувиклип? Может класс какой есть для этих целей, или ещё что-нибудь?
|
|
|||||
|
[+1 06.03.13]
Регистрация: Feb 2007
Сообщений: 174
|
Может как то так:
// Заносим мувики в массив var arr:Array = [mc0, mc1, mc2, mc3]; var arr2:Array = [mc01, mc11, mc21, mc31]; for(var i:int = 0; i < arr.length; i++){ arr[i].addEventListener(MouseEvent.CLICK, otrabotka); function otrabotka(sob:MouseEvent):void{ drugaiaFunc(i); } } function drugaiaFunc(arg1:int):void{ arr2[arg1].visible = false; // или true; } |
|
|||||
|
Вешаешь событие на контейнер, а в событии смотришь таргет, и карент таргет
![]() |
|
|||||
|
Не люблю вложнные функции, они как-то запутывают
var arrButton:Array = [b1, b2, b3, b4]; var arrPicture:Array = [p1, p2, p3, p4]; for(var i:int = 0; i < arrButton.length; i++) { arrButton[i].addEventListener(MouseEvent.CLICK, clickListener); } function clickListener(e:MouseEvent):void { var index :int = arrButton.indexOf(e.currentTarget) if(index!=-1) { arrPicture[index].visible = !arrPicture[index].visible; } } var arrButton:Array = [b1, b2, b3, b4]; var arrPicture:Array = [p1, p2, p3, p4]; var dictinaryButton: Dictionary = new Dictionary() for(var i:int = 0; i < arrButton.length; i++) { dictinaryButton[arrButton[i]] = arrPicture[i] arrButton[i].addEventListener(MouseEvent.CLICK, clickListener); } function clickListener(e:MouseEvent):void { dictinaryButton[e.currentTarget].visible = !dictinaryButton[e.currentTarget].visible; }
__________________
ответ прост: be || !be == true |
|
|||||
|
Зачем тут вообще массивы какие либо?
|
|
|||||
|
Регистрация: Mar 2007
Сообщений: 319
|
можно просто слушать в родительской контейнере на фазе всплытия
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
bubbling
|
|
|||||
|
Регистрация: Sep 2012
Сообщений: 57
|
amesqit Спасибо, в принципе работает! Только вот чего не понимаю: почему я не могу задать свойство visible = false массиву, картинки всё равно видны:
var arrButton:Array = [platki.pl1, platki.pl2, platki.pl3, platki.pl4]; var arrPicture:Array = [platok_1, platok_2, platok_1, platok_1]; arrPicture.visible = false; // Вот эта строчка for(var i:int = 0; i < arrButton.length; i++) { arrButton[i].addEventListener(MouseEvent.CLICK, clickListener); } function clickListener(e:MouseEvent):void { var index :int = arrButton.indexOf(e.currentTarget) if(index!=-1) { arrPicture[index].visible = true; } |
|
|||||
|
Нуб нубам
модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
|
Потому что массив это не визуальный объект, и у него не может быть свойства, отвечающего за отображение.
Вот если бы ваши платки лежали в одном DisplayObjectContainer (например, Sprite), то можно было бы сделать их видимыми или невидимыми, управляя видимостью этого общего контейнера.
__________________
Reality.getBounds(this); |
|
|||||
|
Регистрация: Sep 2012
Сообщений: 57
|
Wolsh, хорошо. Но почему function clickListener тогда работает?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 00:51. |
|
|
« Предыдущая тема | Следующая тема » |
|
|