You could set a default parameter for your mouse over handler, so you wouldn't need
to create and dispatch a new event to run the same code.
e.g.
myBtn.addEventListener(MouseEvent.MOUSE_OVER, btnOverHandler);
function btnOverHandler(e:MouseEvent = null):void{
trace('do stuff on roll over!');
}
//then you can do this wherever you need
btnOverHandler();
it should work in both situation( MouseEvent, or not ).
and for the mouse over thing, getObjectsUnderPoint can be handy. It's more than what you need for this particular example(, and bit more lengthy) , but it's something good to be aware it exists.
e.g.
function isMouseOver(target:DisplayObject,container:DisplayObjectContainer):Boolean{
var isOver:Boolean = false;
var pt:Point = new Point(mouseX, mouseY);
var objects:Array = container.getObjectsUnderPoint(pt);
for(var i:int = 0 ; i < objects.length; i++){
if(objects[i] == target) {
isOver = true;
break;
}
}
return isOver;
}
Hope this helps.