Первый:

Код:
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"