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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 04.09.2009, 16:22
MaxFX вне форума Посмотреть профиль Отправить личное сообщение для MaxFX Найти все сообщения от MaxFX
  № 1  
Ответить с цитированием
MaxFX

Регистрация: Jul 2009
Сообщений: 39
По умолчанию Свое событие (Event)

Подскажите как сделать свое событие в классе с последующем добавлением слушателя.
Нужно примерно следующее (это тестовый пример):

Код AS3:
public class Game
{
	private var _table: Table;
 
	public function Game()
	{
		_table = new Table();
		_table.addEventListener(МОЕ_СОБЫТИЕ, OnChangeTotalValue);
	}
 
	public function OnChangeTotalValue(e:Event)
	{
		//Вывожу общую сумму в TextField
		txtValue.text = _table.Total.toString();
	}
 
	public function ChangeValues()
	{
		//Изменяю I и хочу чтобы сработал метод OnChangeTotalValue
		_table.I = 20;
 
	}
}
 
public class Table
{
	private var _i: Number = 0;
	private var _j: Number = 0;
 
	public function set I(val: Number)
	{
		_i = val;
		//Здесь надо сгенерировать событие что сумма изменится
	}
 
	public function set J(val: Number)
	{
		//Здесь надо сгенерировать событие что сумма изменится
		_j = val;
	}
 
	public function get Total() 
	{
		return _i + _j;
	}
}

Старый 04.09.2009, 16:30
FlashRabbit вне форума Посмотреть профиль Отправить личное сообщение для FlashRabbit Найти все сообщения от FlashRabbit
  № 2  
Ответить с цитированием
FlashRabbit
 
Аватар для FlashRabbit

Регистрация: Jul 2009
Сообщений: 93
Код AS3:
package
{
	import flash.events.Event;	
 
	public class CustomEvent extends Event
	{
		private var _total:int;
		public static const CHANGE:String = "Custom.change";
 
		public function CustomEvent(type:String, _total:int, bubbles:Boolean = false, cancelable:Boolean = false)
		{
			super(type, bubbles, cancelable);
                        _total = _total;
		}
 
 
		public function get total():int
		{
			return _total;
		}
	}
}
Код AS3:
addEventListener(CustomEvent.CHANGE, onChange);
function onChange(e:CustomEvent):void
{
       trace(e.total);
}


Последний раз редактировалось FlashRabbit; 04.09.2009 в 16:32.
Старый 04.09.2009, 16:33
Gaen вне форума Посмотреть профиль Отправить личное сообщение для Gaen Найти все сообщения от Gaen
  № 3  
Ответить с цитированием
Gaen
strange mood
 
Аватар для Gaen

модератор форума
Регистрация: Jul 2004
Адрес: Питер
Сообщений: 1,653
Записей в блоге: 1
Отправить сообщение для Gaen с помощью ICQ Отправить сообщение для Gaen с помощью Skype™
Если не нужно передавать с событием никаких дополнительных данных, то просто укажите свой тип события:

Код AS3:
 
_table.addEventListener("myTotalValueChanged", OnChangeTotalValue);
 
...
 
_i = val;
this.dispatchEvent(new Event("myTotalValueChanged"));
И ещё для этого класс Table должен наследоваться от EventDispatcher.
__________________
тонкий тролль, осеянный благодатью

Старый 04.09.2009, 16:41
MaxFX вне форума Посмотреть профиль Отправить личное сообщение для MaxFX Найти все сообщения от MaxFX
  № 4  
Ответить с цитированием
MaxFX

Регистрация: Jul 2009
Сообщений: 39
Не понял только как само событие сгенерировть вот в этом участке кода
Код AS3:
public function set I(val: Number)
{
	_i = val;
	//Здесь надо сгенерировать событие что сумма изменится
}

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

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
Код AS3:
dispatchEvent(new Event('event'));
__________________
жж | твттр | гглплс | фсбк | вкнткт | гтхб

Старый 04.09.2009, 16:55
MaxFX вне форума Посмотреть профиль Отправить личное сообщение для MaxFX Найти все сообщения от MaxFX
  № 6  
Ответить с цитированием
MaxFX

Регистрация: Jul 2009
Сообщений: 39
Туплю

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

Теги
event , listener

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

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


 


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


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