MOUSE_OUT
события, очевидно, обрабатываются по-разному для перемещения X и Y мыши при выходе из спрайта.разное поведение MOUSE_OUT для вертикальных и горизонтальных ходов?
Как исправить это или обойти его? Где это документировано?
MOUSE_OUT
происходит, когда x==0
, но не y==0
(вы должны пойти в y==-1
):
private var _sp:Sprite;
public function test():void
{
stage.align = StageAlign.TOP_LEFT;
stage.scaleMode = StageScaleMode.NO_SCALE;
_sp = new Sprite();
_sp.graphics.beginFill(0xFF0000, 1);
_sp.graphics.drawRect(0, 0, 15, 15);
_sp.graphics.endFill();
_sp.x = 10;
_sp.y = 10;
_sp.alpha = 1;
addChild(_sp);
_sp.addEventListener(MouseEvent.MOUSE_MOVE, msMvCb, false, 0, true);
_sp.addEventListener(MouseEvent.MOUSE_OUT, msOutCb, false, 0, true);
}
private function msMvCb(evt:MouseEvent):void
{
traceMousePos("mv", evt);
_sp.alpha = 1;
}
private function msOutCb(evt:MouseEvent):void
{
traceMousePos("out", evt);
_sp.alpha = .5;
}
private function traceMousePos(note:String, evt:MouseEvent):void
{
trace(note + " -- " + evt.localX + ", " + evt.localY + ", " + evt.stageX + ", " + evt.stageY);
}
Вот след от движения прямо вверх, с MOUSE_OUT
на -1 ...
mv -- 7, 3, 17, 13
mv -- 7, 2, 17, 12
mv -- 7, 1, 17, 11
mv -- 7, 0, 17, 10
out -- 7, -1, 17, 9
И вот след от перемещения прямо влево, с MOUSE_OUT
по 0 ...
mv -- 3, 7, 13, 17
mv -- 2, 7, 12, 17
mv -- 1, 7, 11, 17
out -- 0, 7, 10, 17
редактировать
То же странствующий происходит с MOUSE_ENTER.
Да, это ошибочное поведение происходит и с ROLL_OVER, но я не могу воспроизвести визуальный эффект, который вы описываете. – jedierikb