Actionscript 3 - 检测点击缩放或拖动

时间:2009-11-13 10:19:29

标签: actionscript-3 zoom flash-cs3 drag

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

1)查看正常尺寸的图像时,单击将显示“缩放”图像 2)查看缩放图像时,单击将显示“正常”图像。

好东西。

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

1)删除了onClick事件
2)添加“onMouseDown”事件,在鼠标向下记录鼠标XY 3)添加“onMouseUp”事件,并在鼠标向上记录鼠标XY 4)如果XY onMouseDown = XY onMouseUp则假设一个Click事件 - 所以缩放
5)如果XY onMouseDown!= XY onMouseUp则假设一个Drag事件 - 所以拖动图像

现在这只有在用户点击时有稳定的手牌时才有效 - 并且感觉不是一个好的解决方案。如果用户手不稳定,则当他们真的想要缩小时会假设拖动事件......

有人能建议一种更好的方法来检测是否拖动图像或放大图像,而不是我在上面勾画出来的那样?

感谢您的想法/帮助,

高级椰子。

1 个答案:

答案 0 :(得分: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();
}