Показать сообщение отдельно
Старый 17.07.2007, 17:12
lowka вне форума Посмотреть профиль Отправить личное сообщение для lowka Найти все сообщения от lowka
  № 9  
Ответить с цитированием
lowka

Регистрация: Sep 2006
Сообщений: 256
Первый:
Код:
import mx.events.EventDispatcher;

class A 
{
	private var dispatchEvent:Function;
	
	public var addEventListener:Function;
	public var removeEventListener:Function;

	private var _myProperty:Number;
	
	/**
	 * Конструктор.
	 */
	public function A()
	{
		EventDispatcher.initialize(this);
	}

	/**
	 * Свойство.
	 */
	public function set myProperty(value:Number)
	{
		this._myProperty = value;
		this.dispatchEvent({type:"change"});
	}
	
	public function get myProperty():Number 
	{
		return this._myProperty;
	}
}
Второй:
Код:
import mx.utils.Delegate;
import A;

class Example 
{
	private var _a:A;
	
	/**
	 * Конструктор.
	 */
	public function Example()
	{

	}
	
	/**
	 * Свойство. Используемый экземпляр класса A.
	 */
	public function set a(value:A):Void 
	{
		if(value)
		{
			this._a = value;
			this._a.addEventListener("change", Delegate.create(this, this.changeHandler));
		}
	}
	
	public function get a():A 
	{
		return this._a;
	}

	/**
	 * Метод. Обработчик события, вызываемого при изменении свойства myProperty объекта a.
	 */
	private function changeHandler(event:Object):Void
	{
		trace("changed");
	}
	
}
Пример:
Код:
import A;
import Example;

var a:A = new A();
var example:Example = new Example();
example.a = a;
a.myProperty = 10; // trace: "changed"