MouseEvent.MOUSE_DOWN
/ Mouse.MOUSE_UP
действительно события, которые нужно использовать, поэтому в вашем коде больше всего проблем.
Часто случается, что это событие не вызывается из-за перекрытия объектов, и я подозреваю, что в этом случае это может быть маска. Если это так, вы можете просто отключить mouseEvents на препятствующих объектах display с помощью mouseEnabled = false
.
Пример:
var background:Sprite,
foreground:Sprite; // Note: could be MovieClips of course !
// adds a sprite with a pink circle
addChild(background = new Sprite());
background.graphics.beginFill(0xff0099);
background.graphics.drawEllipse(0,0,100,100);
// adds a sprite containing a black box and adds it on top of the circle
addChild(foreground = new Sprite());
foreground.graphics.beginFill(0x000000);
foreground.graphics.drawRect(0,0,100,100);
background.buttonMode = true; // not necessary, just adds the handcursor on rollover to let you debug easier.
foreground.mouseEnabled = false; // the foreground is not clickable anymore, which makes the background clickable
background.addEventListener(MouseEvent.MOUSE_UP, onMouseUp);
function onMouseUp(e:Event):void
{
foreground.visible = 0; // I let you do the animation here ; )
}
Несколько быстрых советов относительно пикселя под курсором:
Вы можете сделать это с Bitmap объектом.
Координаты пикселей можно получить с помощью mouseX, mouseY (обратите внимание, что растровые объекты не отправляют события мыши, поэтому вам необходимо добавить их в спрайт для использования в качестве оболочки).
Вы можете получить фактический цвет / альфа-значение пикселей с помощью getPixel32 и изменить его с помощью setPixel32 .
Если у вас возникли проблемы, я предлагаю вам открыть для этого отдельный вопрос.
Надеюсь, это поможет,
Т.