Actionscript 3 AS3使用鼠标缩放MC。。。某种程度上
我试图通过单击并拖动矩形来缩放它。下面的代码可以工作,有点,但我正在寻找性能和准确性方面可能的改进。这样做的目的是在水平方向上单击、拖动并调整大小。一件令人沮丧的事情是,当鼠标按下时,它停止滚动,但不再在MC上滚动Actionscript 3 AS3使用鼠标缩放MC。。。某种程度上,actionscript-3,Actionscript 3,我试图通过单击并拖动矩形来缩放它。下面的代码可以工作,有点,但我正在寻找性能和准确性方面可能的改进。这样做的目的是在水平方向上单击、拖动并调整大小。一件令人沮丧的事情是,当鼠标按下时,它停止滚动,但不再在MC上滚动 var isPressed:Boolean = false; mcMXredBox.addEventListener(MouseEvent.MOUSE_MOVE, moved); mcMXredBox.addEventListener(MouseEvent.MOUSE_DOWN,
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;
}
将
MouseEvent.MOUSE\u MOVE
和MouseEvent.MOUSE\u UP
事件添加到父显示对象或舞台
例如:
mcMXredBox.addEventListener(MouseEvent.MOUSE_DOWN, pressed);
stage.addEventListener(MouseEvent.MOUSE_MOVE, moved);
stage.addEventListener(MouseEvent.MOUSE_UP, released);
我会将其更改为如下内容:
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);
}
通过在按下鼠标时添加侦听器(释放时删除),您不再需要轮询鼠标是否已按下,这样在不拖动鼠标时可以节省性能。添加到stage将解决当鼠标不再位于对象上方时它没有注册的问题。最后,在计算拖动的数学公式时,有一些调整。是的,效果更好。轮询是有意义的,拖动的调整也能更好地工作。MC稍微向缩放方向移动是否有原因?例如,向上缩放也会将其向右拉一点?符号的注册点是否位于最左侧边缘(x=0)?如果没有,那可能会导致对象在缩放时移动。是的,也尝试过移动它,但它不是静止的。我猜这是在拖动或其他的数学中。在没有看到FLA文件的情况下,这是一个有点棘手的问题,上面的数学没有任何问题,它只是通过鼠标移动的量来扩展宽度。这是FLA文件中唯一的代码,所以我再看看注册点。(稍后我将在另一个文件中使用它,但出于测试目的,在学习AS3的同时,我将在一个新文件中开始工作。)