Ситуация сложнее. Если внутри мувиклипа лежит безымянная картинка, то flash IDE из нее делает Shape, а не Bitmap!
И при проверке пересекающихся мувиклипов надо еще определять, кто выше находится.
Столкнувшись с аналогичной ситуацией я написал такой класс, может и вас пригодится:

Код AS3:
package { // CheckMouseOver.as
import flash.display.BitmapData;
import flash.display.DisplayObject;
import flash.geom.Matrix;
import flash.geom.Point;
import flash.geom.Rectangle;
/** Для определения находится ли мышка над непрозрачной областью мувиклипа */
public class CheckMouseOver {
/** до какого размера уменьшать картинки */
private const BITMAP_SIZE:int = 64;
/** Какой мувиклип проверяем */
public var mc:DisplayObject;
/** На каком слое у родителя лежит этот mc */
public var parentIndex:int;
/** прямоугольник описывающий мувиклип */
public var bounds:Rectangle;
private var bd:BitmapData;
private var dx:Number, dy:Number;
private var p:Point = new Point();
public function CheckMouseOver(mc:DisplayObject) {
if (mc && mc.width > 0) {
this.mc = mc;
if (mc.parent) parentIndex = mc.parent.getChildIndex(mc);
bounds = mc.getBounds(null);
// для экономии памяти и сглаживания мелких дырок на картинке
// сохраняем картинку уменьшенную до BITMAP_SIZE
dx = BITMAP_SIZE / bounds.width;
if (dx > 1) dx = 1;
dy = BITMAP_SIZE / bounds.height;
if (dy > 1) dy = 1;
bd = new BitmapData(bounds.width * dx, bounds.height * dy, true, 0);
bd.draw(mc, new Matrix(dx, 0, 0, dy, -bounds.x * dx, -bounds.y * dy));
} else {
trace("Empty MovieClip!", mc);
}
}
/** Проверяет, попадает ли указанная точка сцены в наш мувиклип */
public function check(stageX:Number, stageY:Number):Boolean {
if (mc) {
p.x = stageX;
p.y = stageY;
var p2:Point = mc.globalToLocal(p);
if (bounds.containsPoint(p2)) { // мышка попала в наш прямоугольник, проверяем пиксель на прозрачность
var color:uint = bd.getPixel32((p2.x - bounds.x) * dx, (p2.y - bounds.y) * dy);
if (((color >> 24) & 0xFF) > 128) return true;
}
}
return false;
}
/** Очистить память */
public function dispose():void {
if (bd) bd.dispose();
bd = null;
mc = null;
bounds = null;
p = null;
}
}
}
пример использования: допустим, у нас на сцене размещены 5 мувиклипов с именами "b0..b4" и нужно их подсвечивать при наведении мышки

Код AS3:
package {
import flash.display.MovieClip;
import CheckMouseOver;
import flash.events.MouseEvent;
import flash.filters.GlowFilter;
dynamic public class Test extends MovieClip {
/** Сюда складываем CheckMouseOver, которые будем проверять при движении мышки */
var allObjects:Array;
/** над каким мувиклипом мышка была в последний раз */
var lastMouseOver:CheckMouseOver;
/** Фильтр для подсветки мувиклипа */
const lightFilter:Array = [new GlowFilter(0xFFFFFF, 1, 16, 16)];
public function Test() {
allObjects = new Array();
for (var i:int = 0; i < 5; i++) {
allObjects.push( new CheckMouseOver(this["b" + i]) );
}
// сортируем allObjects по слоям
allObjects.sortOn('parentIndex', [Array.NUMERIC | Array.DESCENDING]);
// слушаем движения мышки
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMMove);
}
private function onMMove(e:MouseEvent):void {
// пытаемся определить, над каким объектом находится мышка
var x0:int = stage.mouseX, y0:int = stage.mouseY;
var atc:CheckMouseOver;
for each (var c:CheckMouseOver in allObjects) {
if (c.check(x0, y0)) {
atc = c;
break;
}
}
if (lastMouseOver === atc) return; // ничего не изменилось
if (lastMouseOver) {
// выключаем подсветку у предыдущего объекта
lastMouseOver.mc.filters = null;
}
lastMouseOver = atc;
if (lastMouseOver) {
// включаем подсветку
lastMouseOver.mc.filters = lightFilter;
}
}
}
}
в аттаче живой пример