MOUSE_OUT
顯然,離開Sprite時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 2010-03-02 02:10:25