![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2015
Сообщений: 4
|
Здравствуйте.
Начал изучать ActionScript 3.0 - помаленьку. Приятно удивился что он очень похож на JavaScript. Во не в сети не доках отыскать пример - как назначить слушатель события сразу нескольким элементам. Как например в jQuery $('.element1, .element2').on('click'...); Как можно здесь так сделать. Что то типа такого есть: (a1, a2, a3).addEventListener(MouseEvent.CLICK, myFunction); ... Спасибо. |
|
|||||
|
...
модератор форума
Регистрация: Sep 2006
Адрес: Minsk
Сообщений: 4,286
|
Или в цикле, или ловить событие на фазе всплытия в родительском контейнере.
|
|
|||||
|
[+1 09.05.15]
Регистрация: Jan 2015
Сообщений: 113
|
Первым делом забудьте о том, что языки похожи. Вы можете испытать шок, но между ними схожести как у губастой курицы с лошадью. по этому подойдите к as3, как к новому языку, о котором вы ничего не знаете.
А то с таким же успехом можно сказать, что js и на c++ и на python похож. И не ищите похожего на jQ, которую даже в js уже пора забыть, в as3 к счастью вообще другая идеология. |
|
|||||
function $(...args) { for(var i:int = 0; i < args.length-1; i ++) { args[i].addEventListener(MouseEvent.CLICK, args[length-1] as Function); } } function onClick(e:Event):void { trace(e.currentTarget.name + " was clicked.") } $(someObj1, someObj2, someObj3, someObj4, onClick); Но если хотите писать серьёзные приложения - приучитесь придерживаться правил и конвенций языка, как написал OlmerDale. В AS3 есть устоявшиеся конструкции, и большой простор фантазии в стиле ООП(чего в JS, по моему мнению никогда не будет). Если хотите написать свой jQuery на AS3, никто не в силах будет вам помешать. К примеру, функция $ в jQuery используется для получения элементов на странице. Это вызвано тем, что для получения элемента следует писать длинную конструкцию ака document.getElementById("..."). В AS3 это не нужно, элементы легко можно получить по именам(в IDE по instance name).
__________________
There is no thing in this world that is not simple. Последний раз редактировалось ZackMercury; 22.03.2015 в 00:18. |
|
|||||
|
Регистрация: Mar 2015
Сообщений: 4
|
Цитата:
В общем я так и сделал в цикле: var buttons:Array = [b1, b2, b3, b4, b5]; var i:int; for (i = 0; i < buttons.length; i++){ buttons[i].addEventListener(MouseEvent.MOUSE_OVER, myOver); buttons[i].addEventListener(MouseEvent.CLICK, go_url); } function myOver(e:Event){ ... } Ну к примеру у меня есть символ на сцене с именем MyAnination. Как можно сделать такое, превратить строковую переменную в имя объекта |
|
|||||
|
[+1 09.05.15]
Регистрация: Jan 2015
Сообщений: 113
|
Цитата:
|
|
|||||
|
OlmerDale, по ощущениям он как пайтон, ООП есть, но не вставляет. Та же фигня и с C++. Я же сказал не ООП нет, а простора фантазии.
В JS нельзя объявить класс, только объект, нет пакетов, всё выглядит однообразно. Другое дело, Java и AS3. Мои любимые. C++ до сих пор процедурный. И вряд ли когда-нибудь станет полностью объектным. JS тоже не полностью объектно-ориентированный. Это выглядит как война между процедурными языками и объектно-ориентированными. Кто дольше продержится. Ну-с) P.S. Простите за оффтоп... Добавлено через 11 минут Цитата:
__________________
There is no thing in this world that is not simple. Последний раз редактировалось ZackMercury; 22.03.2015 в 00:40. |
|
|||||
|
Цитата:
Цитата:
|
|
|||||
|
Регистрация: Mar 2015
Сообщений: 4
|
Вот изложу в коде чего добиваюсь, и как сделать такое.
У меня есть на сцене 10 кнопок b1, b2, b3, b4, b5... и т.д. И есть 10 Мувиков - с именами a1, a2, a3, a4... и т.д. При наведении на кнопки должны запускаться соответствующие Мувики. На кнопках висит обработчик MOUSE_OVER. И что бы в функции по обработчику не городить такое в 10 строк, а их может быть и больше: function myOver(e:Event) { var drum:_84 = new _84(); drum.play(); var nameButton = e.target.name; if(nameButton == 'b1') a1.play(); else if(nameButton == 'b2') a2.play(); else if(nameButton == 'b3') a3.play(); else if(nameButton == 'b4') a4.play(); ... ... } |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:04. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|