是否存在 Flash 应用程序可以接收两个 MouseEvent.MOUSE_DOWN
而中间没有 MouseEvent.MOUSE_UP
的情况?
在我的 ActionScript 3 应用程序中,我想跟踪拖动 Sprite 的用户。我的计划是监听 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/