当前位置:  开发笔记 > 编程语言 > 正文

如何在ActionScript 2中检测鼠标离开舞台的时间?

如何解决《如何在ActionScript2中检测鼠标离开舞台的时间?》经验,为你挑选了2个好方法。

我不得不将一些ActionScript 3代码下载到ActionScript 2并且我在检测鼠标何时离开舞台时遇到问题.

在ActionScript 3中有一个名为的事件Event.MOUSE_LEAVE,可用于检测鼠标何时离开舞台,但在我看到的情况下,ActionScript 2中没有相应的事件.

您最好如何模拟相同的功能?

听鼠标移动并根据舞台边界检查鼠标坐标不起作用,因为当鼠标离开舞台时鼠标坐标停止更新.



1> grapefrukt..:

我还没有找到一种可靠的方法在AS2中执行此操作(在某些浏览器上,当鼠标在应用程序之外时,您甚至会继续获取鼠标更新).所以我通常做的是检查鼠标是否在应用程序的外部10或20px边界之外,如果是,我将其视为MOUSE_LEAVE.听取MOUSE_MOVE而不是每帧都检查一下可能会更好,因为如果你的帧率较低,你可能会错过一些更新.

也可以调出上下文菜单,将鼠标移到外面,然后完全点击上面的整个检查(或者甚至快速移动鼠标经过边框),所以我经常添加一个计时器,在鼠标移动后触发t动了2-3秒.

它不是特别强大,但它是我管理的最好的.



2> Pup..:

使用数学来估计鼠标何时出界:

(按照Theo的第3个选项执行.)

// Stage rollout detection:
private var mouse_dx:Number;
private var mouse_dy:Number;

private function detectMouseOutOfBounds ():Void {
    mouse_dx = _xmouse;
    mouse_dy = _ymouse;

    var mouseListener:Object = { };
    mouseListener.onMouseMove = Delegate.create(this,
        function () {
            mouse_dx = Math.abs(mouse_dx-_xmouse);
            mouse_dy = Math.abs(mouse_dy-_ymouse);
            var speed:Number = Math.max(mouse_dx, mouse_dy) + 5; // Precautionary buffer added.
            var willBeOutOfBounds:Boolean = (
                _xmouse - speed < 0 || 
                _xmouse + speed > Stage.width ||
                _ymouse - speed < 0 ||
                _ymouse + speed > Stage.height
            );
            if (willBeOutOfBounds) {
                _display._alpha = 10;
            } else {
                _display._alpha = 100;
            }
            mouse_dx=_xmouse;
            mouse_dy = _ymouse;
        }
    );
    Mouse.addListener(mouseListener);
}

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有