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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.09.2009, 01:29
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 1  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
По умолчанию Как сделать собственного слушателя для своего Класса

Привет.Пишу некий Класс. Нужно создать слушателя в этом Классе.
На пример ели переменная i == 0 вызывается слушатель.
Примеры:
Код AS1/AS2:
экземплярКласса.onMotionFinished;
экземплярКласса.onMotionStarted;
экземплярКласса.onMotionChanged;
Как можно подобное реализовать? Что по читать? Спасибо!

Старый 30.09.2009, 15:39
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 2  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
слушатель это метод, который вызывается при опреленных условиях
в данном случае когда i==0
чтобы отследить это, i должна быть геттером/сеттером
простейший случай - собственный метод: в сеттере проверяем, вызываем метод
Код AS1/AS2:
class PropWatcher
{
	private var _i:Number;
 
	private function onZero()
	{
		trace( "onZero listener "  );
	}
 
	public function get i():Number { return _i; }
	public function set i(value:Number):Void 
	{
		if (_i != value) 
		{
			_i = value;
			if (_i == 0) onZero()
 
		}
	}
}
///////////////////////
var test:PropWatcher = new PropWatcher();
test.i = 0;

если нужно вызывать одноименные обрабочики в других объектах, то можно воспользоваться методами AsBroadcaster (добавив их к экземпляру через AsBroadcaster.initialize), тогда у всех объектов, подписанных на прослушку экземпляра PropWatcher срабоатет метод onZero
Код AS1/AS2:
class PropWatcher
{
	private var _i:Number;
	private var broadcastMessage:Function;
	public var addListener:Function;
	public var  removeListener:Function;
 
	public function PropWatcher() 
	{
		AsBroadcaster.initialize(this);
	}
 
	public function get i():Number { return _i; }
 
	public function set i(value:Number):Void 
	{
		if (_i != value) 
		{
			_i = value;
			if (_i == 0) broadcastMessage("onZero");
 
		}
	}
 
}
//////////////////////////////////////
var test:PropWatcher = new PropWatcher();
test.addListener(this);
test.i = 0;
 
function onZero()
{
	trace( "onZero listener "  );
}
ну и наконец можно посмотреть в mx.events.EventDispatcher
в целом схема такая же как и с AsBroadcaster, но подписывается на прослушку не объект, имеющий одноименный событию метод, а вообще любой метод, что бывает удобнее

Старый 30.09.2009, 16:48
Art_133 вне форума Посмотреть профиль Отправить личное сообщение для Art_133 Посетить домашнюю страницу Art_133 Найти все сообщения от Art_133
  № 3  
Ответить с цитированием
Art_133
 
Аватар для Art_133

блогер
Регистрация: Feb 2007
Адрес: Москва
Сообщений: 538
Записей в блоге: 2
Отправить сообщение для Art_133 с помощью Skype™
Спасибо. Буду разбираться.

Старый 05.08.2011, 20:28
letsrock85 вне форума Посмотреть профиль Отправить личное сообщение для letsrock85 Найти все сообщения от letsrock85
  № 4  
Ответить с цитированием
letsrock85

Регистрация: Jul 2011
Сообщений: 29
мне этот метод сегодня спас жизню! Спасибо silin!

Старый 05.08.2011, 21:15
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 5  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
а можно и почти AS3 события использовать.
__________________
Отряд Котовскага

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

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

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


 


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


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