0

我正在使用 Actionscript 3,并且正在构建一个图像查看器。到目前为止,我有以下基于“onClick”鼠标事件的功能:

1)查看正常大小的图像时,单击将显示“缩放”图像。
2) 查看放大后的图片时,点击会显示“正常”图片。

好东西。

现在我想应用以下行为,以便用户可以放大并拖动缩放的图像 - 并勾勒出以下内容:

1) 移除 onClick 事件
2) 添加 "onMouseDown" 事件,记录鼠标按下时的鼠标 XY
3) 添加 "onMouseUp" 事件,并记录鼠标按下时的鼠标 XY
4) 如果 XY onMouseDown = XY onMouseUp 则假设一个 Click 事件 - 所以 Zoom
5) 如果 XY onMouseDown != XY onMouseUp 然后假设一个 Drag 事件 - 所以拖动图像

现在,这仅在用户单击时手稳定时才有效 - 并且感觉不是一个很好的解决方案。如果用户的手不稳,那么当他们真正想要缩小缩放时,就会假定一个拖动事件......

任何人都可以提出比我上面勾勒出的更好的方法来检测是拖动图像还是缩放图像?

感谢您的想法/帮助,

高级椰子。

4

1 回答 1

3

基本伪代码如下:

import flash.utils.getTimer;

private var clickTime:uint;

function onMouseDown(event:Event):void {
    this.clickTime = getTimer();

    // Start drag even if they intend to zoom -- it won't hurt if it shifts a
    // couple pixels before zooming out
    startDrag();
}

function onMouseUp(event:Event):void {
    var delta = getTimer() - this.clickTime;

    // It's been less than a quarter second, so user probably meant to zoom
    // in/out.  Adjust this number to taste if it seems too low or high.
    if (delta < 250)
        toggleZoom();

    stopDrag();
}
于 2009-11-13T10:39:43.777 回答