Listening for events - anywhere

Googling the phrase above gives loads of answers and it looks that what I want to achieve is doable… but still I can’t get it to work.

Basically I’ve build a small class that can be imported anywhere in the program and one of it’s public methods dispatch a listener, which as I understand can be received anywhere…
Is that correct?

In my project I’ve got a menu which slides in and out. It’s movement can be triggered mainly bu the buttons on the menu, but I also want to be able to controll it’s movement from various places in the program. So ie it can slide in or out when something completely unrelated has been clicked.

So I’ve got a class "SlidingPanel" and one of its children is class “SlidingPanelNavigation”.
SlidingPanelNavigation uses the class that only dispatches the Event, wchich should be listened in class “SlidingPanel” and the problem is - it doesn’t.

My code (in a short):

My main class that holds the whole menu together:

package com.zeeto.menu {
 
 import flash.display.MovieClip;
 import flash.events.Event;
 
 public class SlidingPanel extends MovieClip {

  private var navigation   :SlidingPanelNavigation;

    public function SlidingPanel():void {
      ... some unrelated code...
    }

    private function prepareMenu():void {
      navigation.addEventListener(Event.ADDED_TO_STAGE, menuReady);
    }

    private function menuReady(e:Event):void {
      navigation.removeEventListener(Event.ADDED_TO_STAGE, menuReady);
[COLOR=#0000ff]      addEventListener(SlidingPanelEvent.SLIDE, slideMenu);
[/COLOR]    }

    private function slideMenu(e:Event):void {
      trace("Hello World");  
    }
  }
}

The class that holds objects which can trigger the slide in/out movement:

package com.zeeto.menu {

 import flash.display.MovieClip;
 import flash.events.Event;
 import flash.events.MouseEvent;

  public class SlidingPanelNavigation extends MovieClip {
[COLOR=#0000ff]    private var eventFlag   :SlidingPanelEvent = new SlidingPanelEvent;
[/COLOR]  }

  private function buildItem(menuItem:Array) {
    ... some unrelated code ...
    button.addEventListener(MouseEvent.CLICK, clicked);
    addChild(button);
  }

  private function clicked(e:MouseEvent):void {
[COLOR=#0000ff]    eventFlag.slideMenu();
[/COLOR]  }
}


And finally the class that is some kind of dispatcher:

package com.zeeto.menu {
  
 import flash.events.Event;
 import flash.events.EventDispatcher;
   
 public class SlidingPanelEvent extends EventDispatcher {
     
  public static const SLIDE:String = "slideMenu";
      
[COLOR=#0000ff]  public function slideMenu():void {
    dispatchEvent(new Event(SlidingPanelEvent.SLIDE, true));
  }
[/COLOR] }
}

Why the SlidingPanel.slideMenu() isn’t fired?

Thanks!