如何检查鼠标是否位于 MovieClip 上?

2023-11-30

没有听众参与。问题是,我可以用鼠标移到 and 鼠标输出侦听器,但如果您足够快地将鼠标拖动到影片剪辑上,则可能不会激活其中一个侦听器。我已经尝试过好几次了。


我从来没有遇到过 mouseOver 和 mouseOut 的问题。

但你可以使用 hitTestPoint:

function detectMouseOver(d:DisplayObject):Boolean
{
    var mousePoint:Point = d.localToGlobal(new Point(d.mouseX,d.mouseY));
    return d.hitTestPoint(mousePoint.x,mousePoint.y,true);
}

如果您确定该属性可用并从您调用的位置设置,您还可以使用 stage.mouseX 和 stage.mouseY (而不是 localToGlobal)。

我还没有测试过代码,但我认为它应该可以工作。

(edit)

但是,如果您想绝对确定鼠标是否经过了某个对象 - 即使您走得太快以至于完全跳过了该对象,您也必须检查两个帧的鼠标点之间的点。

例如,这样就可以了:

d.addEventListener(Event.ENTER_FRAME, checkMouseOver);

var lastPoint:Point;
const MAX_DIST:Number = 10;

function checkMouseOver(e:Event):void
{
    var isOver:Boolean = false;

    var d:DisplayObject = e.currentTarget as DisplayObject;
    var thisPoint:Point = d.localToGlobal(new Point(d.mouseX,d.mouseY))

    if (lastPoint)
    while (Point.distance(thisPoint,lastPoint) > MAX_DIST)
    {
        var diff:Point = thisPoint.subtract(lastPoint);
        diff.normalize(MAX_DIST);
        lastPoint = lastPoint.add(diff);

        if (d.hitTestPoint(lastPoint.x,lastPoint.y,true))
        {
            isOver = true;
            break;
        }
    }
    if (d.hitTestPoint(thisPoint.x,thisPoint.y,true))
    isOver = true;

    lastPoint = thisPoint;

    //do whatever you want with isOver here
}

您可以记住最后一个状态是否结束,并在 isOver != wasOver 时分派自定义事件。如果您在 while 循环内执行此操作,您将获得高度准确的鼠标悬停检测。

但我敢打赌,带有 shapeFlag = true 的 hitTestPoint 会占用相当多的 CPU 资源,尤其是在一帧中大量使用的情况下。因此,在这种情况下,您可能希望将 MAX_DIST 设置得尽可能高。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查鼠标是否位于 MovieClip 上? 的相关文章

  • 从另一个域加载外部图像

    是否可以从另一个域加载图像 jpg png gif 并操作像素 我想当下载 复制图像时它就在我的域中 使用加载器并将内容添加到图像组件时 我在调试器中收到错误 我想这里有一些跨域策略在起作用 但在继续之前我需要更确定它是如何工作的 我想 如
  • 在 ActionScript 3 中在形状上绘制文本

    有没有办法仅使用 ActionScript 在 DisplayObject 或 Shape 中绘制文本 我在网上找到的唯一方法是创建 TextField 但我无法将 TF 添加到 DisplayObject 或 Shape Edit 解决了
  • 使用jquery调用AS3外部接口

    我正在使用ExternalInterface 调用嵌入在html 页面中的Flash 应用程序 以下代码工作正常 我正在使用按钮进行测试 document ready function button click function var a
  • 在 Flash Player 10 中打开 pdf

    我需要在 Flash Player 10 中打开 PDF 该 swf 不会在浏览器中运行 并且系统上不会有 adobe reader 程序 我需要知道是否可以在 Flash 播放器中打开 PDF 而无需以任何方式进行转换 我在谷歌上搜索了无
  • AS3 - 是否可以通过对象属性搜索数组?

    是否可以使用 Array indexOf 通过数组中对象的属性来搜索数组 var myArray Array new Array var myMovieClip new MovieClip myMovieClip name foo myAr
  • 如何进行 Flex 日期扣除和添加

    在 Flex 中 我试图进行日期扣除和添加 但找不到方法 例如 公共 var dateNow Date new Date 如何获得比现在日期早 3 个月的日期 谢谢 您可以为此使用 Date 构造函数 Date 构造函数的第一个参数采用年份
  • AS3 - for (... in ...) 与 for every (... in ...)

    以下代码执行完全相同的操作 之间有区别吗for each and for in var bar Array new Array 1 2 3 for var foo in bar trace foo for each var foo2 in
  • AS3 内存泄漏示例

    有人可以发布一个 as3 代码的示例 特别是包括事件侦听器 这将是一个可能泄漏内存的简单示例 也希望您能发布所显示问题的解决方案吗 问题是 AS3 事件监听器中内存泄漏的一个简单示例是什么 如何解决它 public class MySpri
  • Adobe Air - 检测连接是否为 WIFI、3G 或 EDGE

    我需要确定设备正在使用哪种连接类型 在 iOS 上区分 WIFI 和 3G 似乎不是问题 使用网络信息ANE http www adobe com devnet air native extensions for air extension
  • AS3/Flash/Flex 中的枚举? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 相对于 AS2 我真正喜欢 AS3 的一件事是它增加了多少编译时类型检查 然而 它似乎有些不足 因为没有可用的类型检查枚举结构 在 A
  • 直接从 Flex 连接任何数据库

    是否可以直接从flex连接任何数据库 您可以使用 Michael 提到的 asSQL 或者使用 Adob e Air 运行时 然而 关于使用这个库必须说一下 从客户端直接建立数据库连接是极其不安全的除非它来自 Adob e Air 因为数据
  • 自定义上下文菜单未显示,因为显示对象位于“顶部”

    作为这里另一个问题的后续 我已经在 Flash 应用程序中构建了一个自定义上下文菜单项 但遇到了有时不显示的问题 我发现问题是另一个精灵位于带有自定义上下文菜单的项目的 顶部 然而 即使将 mouseEnabled 和 mouseChild
  • as3 - 如何停止视频并分离 NetStream

    我有来自服务器的视频流 稍后我想并排添加另一个视频 那就好 我做到了 现在当我想删除视频时我的问题来了 我设法将其从显示中删除 但我可以听到视频仍在后台播放 那么我怎样才能停止播放该视频呢 这是我设置视频的代码 ns new NetStre
  • Flash AS3 -domain.com/crossdomain.xml 和安全错误

    在代码中 我在 URLLoader 之前使用它 swf 将与许多不同的域一起使用 并且这将及时更改 Security allowDomain In http domain com crossdomain xml http domain co
  • 位图太大 as3

    在AS3中 我从zip文件加载png nochump的zip库通过ByteArray到Loader png 的宽度最大可达 45k 像素 但高度仅为 120 像素 这在 Flash 中产生了一个问题 因为图像的宽度只能约为 8000 像素
  • 在 Actionscript-3 中优化 2D Flash 游戏的动态背景引擎

    编辑2 根据缺乏回复来判断 我开始怀疑我的问题是否足够清楚 请告诉我是否需要详细说明 注意 请参阅底部以获取代码更新 简短介绍 我正在用 ActionScript 编写一个二维 Flash 空间游戏 宇宙无限大 由于这个特性 背景必须动态渲
  • 创建对象的弱引用

    Actionscript 3 中是否可以创建对对象的弱引用 以便可以对其进行垃圾收集 我正在创建一些类以使调试更容易 因此如果仅在此处引用这些对象 我不希望这些对象挂在内存中 当然我不想用回调填充代码以删除对象 格兰特 斯金纳 Grant
  • jQuery 多次出现淡入淡出效果

    我正在尝试编写一个简单的 jQuery 脚本来在页脚上应用淡入淡出效果 在鼠标悬停事件上 它会以不透明度 1 淡入 在鼠标移出事件上 它会淡出到不透明度 0 01 我已经在父 div 上应用了这个效果 问题是 每次我将鼠标移到子元素上时 它
  • 从相机录制视频、叠加位图、添加音频、保存到设备,所有这些都在 as3/AIR mobile 中进行

    我的任务是在移动设备上录制来自摄像头的实时视频流 然后覆盖随时间变化的位图 并将音频 mp3 轨道添加到视频文件中 然后将其保存到设备上的某个位置 例如相机胶卷 我看到了一些有用的帖子 主要是这个 AS3 Flash AIR 使用网络摄像头
  • AS3如何在角色死亡动画结束时转到MainTimeline中的下一帧

    所以我需要知道我的角色 鸟 是否用管道 hitTestObject 在动画结束后播放骰子动画 它需要在主时间轴中转到游戏结束帧 if bird hitTestObject pipe1 bird gotoAndStop 3 frame 3 w

随机推荐