The*_*978 1 click double-click actionscript-3 mouseevent
是不是可以在同一显示对象上同时使用CLICK和DOUBLE_CLICK?我试图在双击舞台的阶段添加一个新对象并在舞台上单击一次取消选择所选对象.
似乎DOUBLE_CLICK将同时执行自身以及DOUBLE CLICK路径中的第一个CLICK功能(鼠标按下,鼠标按下,单击,鼠标按下,鼠标按下,双击).
在我编程的其他语言中,有一个内置的计时器,将两者分开.这在AS3中不可用吗?
这是一些代码.基本上我想要的是一个或另一个,而不是双击
stage.doubleClickEnabled = true;
stage.addEventListener(MouseEvent.DOUBLE_CLICK, twoClicks, false, 0, true);
stage.addEventListener(MouseEvent.CLICK, oneClick, false, 0, true);
function oneClick(evt:MouseEvent):void
{
trace("One CLICK");
}
function twoClicks(evt:MouseEvent):void
{
trace("Two CLICKS");
}
//oneClick trace = "One CLICK"
//twoClicks trace = "One CLICK Two CLICKS" (instead of just Two CLICKS)
Run Code Online (Sandbox Code Playgroud)
好吧,你可以使用setTimeout和clearTimeout.
它看起来像这样:
const var DOUBLE_CLICK_SPEED:int = 10;
var mouseTimeout;
function handleClick(evt:MouseEvent):void {
if (mouseTimeout != undefined) {
twoClicks();
clearTimeout(mouseTimeout);
mouseTimeout = undefined;
} else {
function handleSingleClick():void {
oneClick();
mouseTimeout = undefined;
}
mouseTimeout = setTimeout(handleSingleClick, DOUBLE_CLICK_SPEED);
}
}
function oneClick(evt:MouseEvent):void {
trace("One CLICK");
}
function twoClicks(evt:MouseEvent):void {
trace("Two CLICKS");
}
stage.addEventListener(MouseEvent.CLICK, handleClick, false, 0, true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9773 次 |
| 最近记录: |