Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 03.07.2009, 02:58
vvvvvvf вне форума Посмотреть профиль Отправить личное сообщение для vvvvvvf Найти все сообщения от vvvvvvf
  № 1  
Ответить с цитированием
vvvvvvf
[+1 08.07.09]

Регистрация: Mar 2009
Сообщений: 107
По умолчанию Какой стиль объявления событий используете вы?

Доброго времени суток.
Я тут поглядел исходники(as3) различных проектов и обнаружил различные стили объявления событий.

Выделю основные три стиля объявления:

Первый самый короткий, объявлять функции прямо в листенере:
Код 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');
			});
		}
	}
}
второй объявлять функцию внутри метода класса:
Код AS3:
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');
			}
		}
 
	}
}
и третий объявлять функцию как отдельный метод класса:
Код AS3:
package {
	import flash.display.Sprite;
	import flash.events.MouseEvent;
 
	public class Main extends Sprite {
		public function Main():void {
			addEventListener(MouseEvent.CLICK, myClick);
		}
		public function myClick(e:*):void {
			trace('click');
		}
	}
}
а какой способ используете вы и какой на ваш взгляд является самым верным?


Последний раз редактировалось vvvvvvf; 03.07.2009 в 04:01.
Старый 03.07.2009, 03:06
Molecula вне форума Посмотреть профиль Отправить личное сообщение для Molecula Найти все сообщения от Molecula
  № 2  
Ответить с цитированием
Molecula
 
Аватар для Molecula

Регистрация: Apr 2007
Сообщений: 1,369
Код AS3:
package {
	import flash.display.Sprite;
	import flash.events.MouseEvent;
 
	public class Main extends Sprite {
		public function Main():void {
                        super();
			super.addEventListener(MouseEvent.CLICK, this.myClick);
		}
		public function myClick(e:MouseEvent):void {
			trace('click');
		}
	}
}
__________________
john

Старый 03.07.2009, 07:42
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 3  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Код AS3:
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');
		}
	}
}

Старый 03.07.2009, 08:57
twix1124 вне форума Посмотреть профиль Отправить личное сообщение для twix1124 Найти все сообщения от twix1124
  № 4  
Ответить с цитированием
twix1124
[+4 05.07.09]

Регистрация: Jun 2009
Сообщений: 114
Код AS3:
package {
	import flash.display.Sprite;
	import flash.events.MouseEvent;
 
	public class Main extends Sprite {
		public function Main():void {
                        super();
			super.addEventListener(MouseEvent.CLICK, this.myClick);
		}
		public function myClick(e:MouseEvent):void {
			trace('click');
		}
	}
}

Старый 03.07.2009, 10:07
Smirnov48 вне форума Посмотреть профиль Отправить личное сообщение для Smirnov48 Найти все сообщения от Smirnov48
  № 5  
Ответить с цитированием
Smirnov48

Регистрация: Feb 2008
Сообщений: 72
А зачем addEventListener у super? Ведь если его просто пишешь - тоже катит.

Старый 03.07.2009, 10:08
MonkDead вне форума Посмотреть профиль Отправить личное сообщение для MonkDead Посетить домашнюю страницу MonkDead Найти все сообщения от MonkDead
  № 6  
Ответить с цитированием
MonkDead
 
Аватар для MonkDead

Регистрация: Dec 2007
Сообщений: 204
Код AS3:
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");
		}
	}
}
Странно что все кроме __etc, пишут что конструктор что-то возвращает .
Код AS3:
public function Main():void
Вообще то он ничего не возвращает!

Старый 03.07.2009, 10:12
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 7  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Цитата:
Сообщение от Smirnov48 Посмотреть сообщение
А зачем addEventListener у super? Ведь если его просто пишешь - тоже катит.
Можете не писать.

Старый 03.07.2009, 10:19
Smirnov48 вне форума Посмотреть профиль Отправить личное сообщение для Smirnov48 Найти все сообщения от Smirnov48
  № 8  
Ответить с цитированием
Smirnov48

Регистрация: Feb 2008
Сообщений: 72
Спасибо. Вот меня и на сторожило - то что я обычно не пиши. Не super() не this. Вот и хотелось бы узнать - зачем? Или покрайней мере логику почему вы так пишете. Вдруг если их не писать баги полезут.

Старый 03.07.2009, 10:24
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 9  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Дабы не повторяться:
http://www.flasher.ru/forum/showthread.php?t=126668
(начиная с какого-то там поста)

Старый 03.07.2009, 11:43
DeliMIter вне форума Посмотреть профиль Отправить личное сообщение для DeliMIter Найти все сообщения от DeliMIter
  № 10  
Ответить с цитированием
DeliMIter
некрофил
 
Аватар для DeliMIter

Регистрация: Mar 2002
Адрес: ...по колено в кровище...
Сообщений: 2,292
Цитата:
Сообщение от Smirnov48 Посмотреть сообщение
Вдруг если их не писать баги полезут.
Вызов метода через super однозначно указывает, что следует вызывать метод в суперклассе, даже если этот метод переопределён в текущем классе.

Обращение к полю или методу через this однозначно указывает на использование полей текущего объекта, ибо без указания контекста в доступных областях видимости могут оказаться переменные с такими же именами, например:

Код AS3:
class XXX extends MovieClip
{
	public finction moveTo(x:Number, y:Number):void
	{
		this.x = x;
		this.y = y;
	}
}
Иногда явное указание контекстов this и super является превентивным стилем написания кода, который позволяет избежать случайного возникновения проблем, вытекающих как из упомянутых выше, так и не упомянутых вовсе, особенностей AS3.
__________________
...убивать людей не удовольствия ради, но для еды.

Создать новую тему Ответ Часовой пояс GMT +4, время: 08:10.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 08:10.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.