
AlexLucas и Akopalipsis, мне кажется вы друг друга не поняли...
to Akopalipsis: Конструкторы использовать нужно и полезно, при условии что применять их грамотно. Ваш пример не работает потому что вы диспатчите событие CHANGE в конструкторе, т.е. до того как повесится слушатель _a.addEventListener( Event.CHANGE ,aChangeHandler ), поэтому метод aChangeHandler и не срабатывает
Попробуйте так:

Код AS3:
package
{
import flash.display.Sprite ;
import flash.events.Event ;
public class Main extends Sprite
{
private var _a : A ;
public function Main()
{
_a = new A( "a" ) ;
_a.addEventListener( Event.CHANGE ,aChangeHandler ) ;
_a.changeStr();
}
private function aChangeHandler( e : Event ) : void
{
trace( e.type ,_a.str) ;
}
}
}

Код AS3:
package
{
import flash.events.EventDispatcher;
import flash.events.Event;
public class A extends EventDispatcher
{
private var _str : String ;
public function A( str : String )
{
_str = str ;
}
public function changeStr():void
{
_str += "b" ;
dispatchEvent( new Event( Event.CHANGE ) ) ;
}
public function get str() : String
{
return _str ;
}
}
}