Hola:
Yo uso un código como este para hacer lo que dices (o al menos lo que te entedí

) con los movieclips como botones:
Código :
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
public class Botonera extends MovieClip {
private var i:Number = new Number(0);
private var botones:Array = new Array();
public function Botonera() {
for(i=0; i<5; i++) {
botones.push(crea_boton());
botones[i].x = i*100+5*i;
botones[i].addEventListener(MouseEvent.ROLL_OVER, btn_roll_over);
botones[i].addEventListener(MouseEvent.ROLL_OUT, btn_roll_out);
botones[i].addEventListener(MouseEvent.CLICK, btn_click);
addChild(botones[i]);
}
}
private function crea_boton():MovieClip {
var boton:MovieClip = new MovieClip();
boton.graphics.beginFill(0x000000);
boton.graphics.drawRect(0, 0, 100, 20);
boton.graphics.endFill();
return boton;
}
function btn_roll_over(e:MouseEvent):void {
var mc:MovieClip = MovieClip(e.currentTarget);
mc.fwd = true;
mc.addEventListener(Event.ENTER_FRAME, enter_frame);
}
function btn_roll_out(e:MouseEvent):void {
var mc:MovieClip = MovieClip(e.currentTarget);
mc.fwd = false;
mc.addEventListener(Event.ENTER_FRAME, enter_frame);
}
function btn_click(e:MouseEvent):void {
trace("click "+e.currentTarget.name);
}
function enter_frame(e:Event):void {
var mc:MovieClip = MovieClip(e.currentTarget);
trace(mc.alpha.toString());
if(mc.fwd) {
if(mc.alpha>0.5) {
mc.alpha -= 0.1;
} else {
mc.alpha = 0.5;
mc.removeEventListener(Event.ENTER_FRAME, enter_frame);
}
} else {
if(mc.alpha<1) {
mc.alpha += 0.1;
} else {
mc.alpha = 1;
mc.removeEventListener(Event.ENTER_FRAME, enter_frame);
}
}
}
}
}Pones el código en un .as y ya después lo usas como document root de algún archivo .fla
Al menos a mi, no me causa el problema de que se queda trabado el mouse over.
Saludos!