I would definitely go with Jeff on this : if you can, directly subclass starling.events.EventDispatcher, or use signals.
But in your usecase it seems that your event stays within your instance of myClass, so you could simply call
_handle_value_change();
from your setters, without any Event hurdle.
If you really need it to be events you could simply have a private member of type EventDispatcher (either starling or flash, but let's say starling), and deal with it internally like this :
private var _dispatcher:EventDispatcher;
[...]
//in your constructor or init process
_dispatcher = new EventDispatcher();
_dispatcher.addEventListener('value change', _handle_value_change);
[...]
//setter
public function set myVar(val:Type):void{
_myVar = val;
_dispatcher.dispatchEventWith('value change');
}
So that would work, and if you really need the events to be accessible from outside like this
myClassInstance.addEventListener('value change', ...);
Then you need to implement IEventDispatcher. there is an example of that in this thread. Please note that in that case the events are from flash.events and not starling.events, so your listeners should have :flash.events.Event params, (or :Object). That seems a lot of trouble if your myClass could simply have subclassed EventDispatcher