我正在尝试通过单击并拖动它来缩放矩形。下面的代码有效,有点,但我正在寻找性能和准确性方面的可能改进。想法是在水平方向上单击,拖动和调整大小。令人沮丧的是,当鼠标处于向下但不再在MC上时,它会停止滚动。
var isPressed:Boolean = false;
mcMXredBox.addEventListener(MouseEvent.MOUSE_MOVE, moved);
mcMXredBox.addEventListener(MouseEvent.MOUSE_DOWN, pressed);
mcMXredBox.addEventListener(MouseEvent.MOUSE_UP, released);
function moved(e:Event):void{
if (isPressed)
this.scaleX = 1 + (mouseX/100);
}
function pressed(e:MouseEvent):void{
isPressed = true;
moved(e);
}
function released(e:MouseEvent):void{
isPressed = false;
}
答案 0 :(得分:1)
我将其更改为如下所示:
mcMXredBox.addEventListener(MouseEvent.MOUSE_DOWN, pressed);
var initMouseX;
function moved(e:Event):void{
this.width += (mouseX - initMouseX);
initMouseX = mouseX;
}
function pressed(e:MouseEvent):void{
initMouseX = mouseX;
stage.addEventListener(MouseEvent.MOUSE_UP, released);
stage.addEventListener(MouseEvent.MOUSE_MOVE, moved);
moved(e);
}
function released(e:MouseEvent):void{
stage.removeEventListener(MouseEvent.MOUSE_UP, released);
stage.removeEventListener(MouseEvent.MOUSE_MOVE, moved);
}
通过在按下鼠标时添加侦听器(并在释放时删除),您不再需要轮询以查看鼠标是否已关闭,这样可以在不拖动时保存性能。添加到舞台将解决您的问题,即当鼠标不再在对象上时它不会注册。最后,还有一些调整来计算拖动的数学。
答案 1 :(得分:0)
将MouseEvent.MOUSE_MOVE
和MouseEvent.MOUSE_UP
事件添加到父显示对象,或者可能是舞台。
例如:
mcMXredBox.addEventListener(MouseEvent.MOUSE_DOWN, pressed);
stage.addEventListener(MouseEvent.MOUSE_MOVE, moved);
stage.addEventListener(MouseEvent.MOUSE_UP, released);