Объясните пожалуйста почему не работает следующий код?

Код:
package {
import flash.display.*;
import flash.events.*;
public class Main extends Sprite {
public function Main () {
var mon=new Sprite();
mon.addEventListener("gotoPos", goto);
dispatchEvent(new Event("gotoPos",true,false));
}
public function goto() {
trace("heaaaa");
}
}
}
Не смотрите что создается просто экземпляр Sprite, изначально был класс который наследуется от Sprite. Упростил...
Наверное не совсем понятно... Лучше на примере 2 классов:
1-й класс:

Код:
package {
import flash.display.*;
import flash.events.*;
public class Main extends Sprite {
public function Main () {
var mon=new mySprite();
dispatchEvent(new Event("gotoPos"));
}
}
}
2-й класс:

Код:
package {
import flash.display.*;
import flash.events.*;
public class mySprite extends Sprite {
public function mySprite () {
addEventListener("gotoPos", goto);
}
public function goto() {
trace("heaaaa");
}
}
}
получится если mon.dispatchEvent(new Event("gotoPos"));
но тогда зачем мне диспатчер нужен? если я знаю мувик. В проекте же я не буду знать его. Экземпляров будет много и надо чтобы все реагировали на событие