![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
[+1 08.07.09]
Регистрация: Mar 2009
Сообщений: 107
|
Доброго времени суток.
Я тут поглядел исходники(as3) различных проектов и обнаружил различные стили объявления событий. Выделю основные три стиля объявления: Первый самый короткий, объявлять функции прямо в листенере: package { import flash.display.Sprite; import flash.events.MouseEvent; public class Main extends Sprite { public function Main():void { addEventListener(MouseEvent.CLICK, function(e:*) { trace('click'); }); } } } package { import flash.display.Sprite; import flash.events.MouseEvent; public class Main extends Sprite { public function Main():void { addEventListener(MouseEvent.CLICK, myClick); function myClick(e:*):void { trace('click'); } } } } а какой способ используете вы и какой на ваш взгляд является самым верным? Последний раз редактировалось vvvvvvf; 03.07.2009 в 04:01. |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
__________________
john |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
package { import flash.display.Sprite; import flash.events.MouseEvent; public class Main extends Sprite { public function Main() { super(); super.addEventListener(MouseEvent.CLICK, this.handler_click); } /** * @private */ private function handler_click(event:MouseEvent):void { trace('click'); } } } |
|
|||||
|
[+4 05.07.09]
Регистрация: Jun 2009
Сообщений: 114
|
|
|
|||||
|
Регистрация: Feb 2008
Сообщений: 72
|
А зачем addEventListener у super? Ведь если его просто пишешь - тоже катит.
|
|
|||||
|
Регистрация: Dec 2007
Сообщений: 204
|
package { import flash.display.Sprite; import flash.events.MouseEvent; public class Main extends Sprite { public function Main() { super(); super.addEventListener(MouseEvent.CLICK, this.onClick); } private function onClick(event:MouseEvent = null):void { trace("click"); } } } .Вообще то он ничего не возвращает!
__________________
http://www.infinity3d-engine.com |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Можете не писать.
|
|
|||||
|
Регистрация: Feb 2008
Сообщений: 72
|
Спасибо.
Вот меня и на сторожило - то что я обычно не пиши. Не super() не this. Вот и хотелось бы узнать - зачем? Или покрайней мере логику почему вы так пишете. Вдруг если их не писать баги полезут. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Дабы не повторяться:
http://www.flasher.ru/forum/showthread.php?t=126668 (начиная с какого-то там поста) |
|
|||||
|
некрофил
Регистрация: Mar 2002
Адрес: ...по колено в кровище...
Сообщений: 2,292
|
Вызов метода через super однозначно указывает, что следует вызывать метод в суперклассе, даже если этот метод переопределён в текущем классе.
Обращение к полю или методу через this однозначно указывает на использование полей текущего объекта, ибо без указания контекста в доступных областях видимости могут оказаться переменные с такими же именами, например: Иногда явное указание контекстов this и super является превентивным стилем написания кода, который позволяет избежать случайного возникновения проблем, вытекающих как из упомянутых выше, так и не упомянутых вовсе, особенностей AS3.
__________________
...убивать людей не удовольствия ради, но для еды. |
![]() |
![]() |
Часовой пояс GMT +4, время: 08:10. |
|
|
« Предыдущая тема | Следующая тема » |
|
|