Custom event

I am learning how to do a custom event in AS3.
I can do an event in a class but I dont know how to detect events in other classes.
I want to detect in main.as an event reached in class player. eg a variable reached a value 4 in class payer and dispatches an event so main.as can detect it.

This doesnt give an error but my code doesnt output I can deect an event in main from classplayer.

//main
myplayer=new ClassPlayer();
myplayer.addEventListener(“image_loaded”,imageLoadedHandler,false,0,true);
myplayer.addEventListener (“watcher_loaded”,watcher_loadedHandler,false,0,true);
addChild( myplayer);

// Handler methods
private function watcher_loadedHandler(e:Event):void {
trace(“watcher in main”);
}

//player
var watcher:Watcher = new Watcher();

watcher.addEventListener(Watcher.VALUE_REACHED, onValueReached, false, 0, true);

private function onValueReached(event:Event):void{
trace(“watcher’s value is now at 4 in player”);
dispatchEvent(new Event(“watcher_loaded”));
}

//watcher
package {

  import flash.events.Event;
  import  flash.events.EventDispatcher;

  public class Watcher  extends EventDispatcher {
        
        public static  const VALUE_REACHED:String = "valueReached";
        
         private var _value:Number = 0;
        
         public function Watcher():void { }
        
         public function get Value():Number {
              return  _value;
        }
        
        public function  set Value(num:Number):void {
              _value = num;
               if (_value == 4) {
                    var  event:Event = new Event(Watcher.VALUE_REACHED);
                     dispatchEvent(event);
              }
               
        }
                    
  }

}