Показать сообщение отдельно
Старый 17.06.2009, 00:46
silin вне форума Посмотреть профиль Посетить домашнюю страницу silin Найти все сообщения от silin
  № 7  
Ответить с цитированием
silin
 
Аватар для silin

блогер
Регистрация: Mar 2003
Адрес: Моск. обл.
Сообщений: 5,269
Записей в блоге: 6
для статического свойства функцию вещания придется переложить на статический же диспатчер:
Код AS3:
package 
{
	import flash.display.Sprite;
	import flash.events.Event;
 
	public class Test extends Sprite 
	{
		public function Test():void 
		{
			//подписываемся 
			Class1.addEventListener(Event.CHANGE, watchS);
			//меняем/смотрим трейс
			Class1.s = "value";
			Class1.s = "new value";
		}
 
		private function watchS(evnt:Event):void 
		{
			trace("Class1.s changed to " + Class1.s);
		}
 
	}
 
}
Код AS3:
package  
{
	import flash.events.*;
 
	public class Class1 
	{
		private static var _s:String="";
		private static var _dispatcher:EventDispatcher = new EventDispatcher();
 
 
		static public function addEventListener (type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false) : void
		{
			_dispatcher.addEventListener(type, listener, useCapture, priority, useWeakReference);
		}
 
		static public function get s():String { return _s; }
		static public function set s(value:String):void 
		{
			if (_s == value) return;
			_s = value;
			_dispatcher.dispatchEvent(new Event(Event.CHANGE));
		}
	}
}
upd: добавил проверку (_s == value), чтоб не слать холостых событий


Последний раз редактировалось silin; 17.06.2009 в 00:56.