在任何情况下,Flash应用程序都可以接收两个MouseEvent.MOUSE_DOWN
,而两者之间没有MouseEvent.MOUSE_UP
?
在我的ActionScript 3应用程序中,我想跟踪用户拖动精灵。我的计划是监听MouseEvent.MOUSE_DOWN
,启动一个无限重复的计时器来记录鼠标的位置,并停止MouseEvent.MOUSE_UP
上的计时器。那是一个好计划吗?
最佳答案
您将获得两次下降事件,而没有上升事件。
拖放的更好解决方案可能是侦听
MOUSE_MOVE
事件,并在事件处理程序中检查buttonDown
属性。如果在移动时按下按钮,则为true,否则为false。编辑:对于阶段,即使您释放Flash窗口外的按钮,也会触发up事件。因此对于阶段来说,这可以工作,但是对我来说,将
MOUSE_MOVE
与buttonDown
结合使用仍然可以代替计时器。您可以使用以下代码检查自己:public class StageEventTest extends Sprite
{
public function StageEventTest()
{
stage.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
stage.addEventListener(MouseEvent.MOUSE_UP, onUp);
stage.addEventListener(MouseEvent.MOUSE_MOVE, onMove);
}
private function onDown(evt:MouseEvent):void {
trace("down");
}
private function onUp(evt:MouseEvent):void {
trace("up");
}
private function onMove(evt:MouseEvent):void {
trace("move", evt.buttonDown);
}
}
关于actionscript-3 - 是否每个MOUSE_DOWN都保证有MOUSE_UP?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6697304/