我正在使用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事件 - 所以拖动图像
现在这只有在用户点击时有稳定的手牌时才有效 - 并且感觉不是一个好的解决方案。如果用户手不稳定,则当他们真的想要缩小时会假设拖动事件......
有人能建议一种更好的方法来检测是否拖动图像或放大图像,而不是我在上面勾画出来的那样?
感谢您的想法/帮助,
高级椰子。
答案 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();
}