AS3 中 onReleaseOutside 最简单的实现?

2024-02-17

我是 ActionScript 2 的长期用户,现在开始使用 ActionScript 3。我缺少的一件事是复制 AS2 MovieClip.onReleaseOutside 功能的简单方法。几乎总是有必要实现这个事件,否则你会得到一些有趣的错误,比如flash认为你的鼠标已经按下,而实际上它是向上的。

根据AS2 到 AS3 迁移指南 http://livedocs.adobe.com/flex/2/langref/migration.html,我应该使用flash.display.InteractiveObject.setCapture()但据我所知,它并不存在。我猜这个文档已经过时或不正确。我在网上找到了一些关于如何复制此功能的帖子,但它们都有自己的问题:

  • This one http://www.arpitonline.com/blog/?p=33即使没有相应的 onPress 事件,也会触发 onReleaseOutside。
  • 似乎效率很低,每次在应用程序内的任意位置单击鼠标时,您都将添加和删除事件侦听器。

一定有更简单的方法,别告诉我Adobe在重写Actionscript时忘记了这一点?

AS2 代码示例:

// Assume myMC is a simple square or something on the stage

myMC.onPress = function() {
  this._rotation = 45;
}

myMC.onRelease = myMC.onReleaseOutside = function() {
  this._rotation = 0;
}

如果没有“释放外部”处理程序,如果您按下正方形,将鼠标拖动到其外部,然后释放鼠标,则正方形将不会取消旋转,并且看起来会被卡住。


简单又万无一失:

button.addEventListener( MouseEvent.MOUSE_DOWN, mouseDownHandler );
button.addEventListener( MouseEvent.MOUSE_UP, buttonMouseUpHandler ); // *

function mouseDownHandler( event : MouseEvent ) : void {
    trace( "onPress" );
    // this will catch the event anywhere
    event.target.stage.addEventListener( MouseEvent.MOUSE_UP, mouseUpHandler );
}

function buttonMouseUpHandler( event : MouseEvent ) : void {
    trace( "onRelease" );
    // don't bubble up, which would trigger the mouse up on the stage
    event.stopImmediatePropagation( );
}

function mouseUpHandler( event : MouseEvent ) : void {
    trace( "onReleaseOutside" );
    event.target.removeEventListener( MouseEvent.MOUSE_UP, mouseUpHandler );
}

如果您不关心 onRelease 和 onReleaseOutside 之间的差异(例如可拖动项目),您可以跳过按钮本身上的鼠标向上侦听器(此处用星号注释)。

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

AS3 中 onReleaseOutside 最简单的实现? 的相关文章

随机推荐

  • twitter bootstrap 突然下降不工作

    我想知道是否有人可以帮助我 我的引导下拉菜单突然停止工作 我不知道为什么 它之前可以工作 我没有触及我的视图和布局视图 所以我认为问题不存在 我很确定它与我的 javascript 有关 但我不知道它来自哪里 我的宝石文件是 gem rai
  • 使用 @ViewScoped 时出现 java.io.NotSerializedException

    如果我使用 ViewScoped在JSF中 则出现以下异常 java io NotSerializableException com solv basics Basics java io ObjectOutputStream writeOb
  • 在每个 url 末尾添加尾部斜杠?

    我这里有一个小问题 我需要在我正在处理的网站中每个网址的末尾添加一个尾部斜杠 我将网站内的所有链接定义为带有尾部斜杠 如下所示 a href register Register a 虽然这工作正常 但仍然存在一个小问题 它与调用 Redir
  • 如何让ggplot2绘图更漂亮?

    I have generated the following plot using the R code that follows it ggplot lengths aes length fill library geom density
  • 屏幕旋转时选项卡更改 [Android]

    您好 我有带有 4 个选项卡的 Android 应用程序 假设 tab1 tab2 tab3 tab4 当活动启动时 默认选项卡是 tab1 当我切换到任何其他选项卡 选项卡 2 选项卡 3 或选项卡 4 并更改屏幕方向时 它总是重置为默认
  • 64 位机器/操作系统上的 32 位操作与 64 位操作

    哪个操作 即 32 位操作或 64 位操作 例如屏蔽 32 位标志或 64 位标志 在 64 位机器上会更便宜 由于您没有指定架构 我只能建议一个一般答案 因为它取决于操作和所讨论的处理器架构 一旦 CPU 寄存器中有数据 大多数操作通常会
  • 2D Python 游戏编程的工具包选项 [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 将项目从 .NET 4.0 升级到 .NET 4.5 后失败 => 找不到类型或命名空间名称“MaxLength”/“Column”

    我有一个针对 Net 4 0 和实体框架 4 3 1 的工作网站 安装 Net 4 5 使用 Visual Studio Express 2012 后 我可以在 Visual Web Developer Express 2010 上编译网站
  • 将主要参数传递给 gui 库的 init 函数

    当涉及到 Qt 和 GTK 等库中的库初始化时 您必须将主要参数传递到初始化库的函数中 为什么 图书馆用它们做什么 为了方便起见 Qt 和 GTK 都旨在响应某些命令行标志 两者也都响应各种环境变量 您不一定have将 argv 和 arg
  • 简单的 jQuery ajax 问题是否成功返回数据?

    嗨 我有以下内容 ajax type POST url global pathPrefix services brochure asmx ShowPostRequest data parkIds input ids val success
  • wpf使用网格作为itemshost自动将多个项目堆叠在单个“单元格”中

    我将项目控件绑定到数据源并使用网格作为我的项目主机 我希望让这些项目将自己定位到网格中的正确单元格中 我可以做到这一点 并且也将自己堆叠起来 这样它们就不会全部彼此重叠 我不知道如何将这些项目插入到stackpanel 或网格中的其他面板
  • django控制器在views.py中是什么

    我已经遵循了几个 django 教程 我不知道为什么控制器存储在名为views py 的文件中 我对这个文件名感到困惑 我正在寻找 MVC 开发 django 中还有其他用于 真实 控制器的文件吗 名字views py是一个错误 从架构的角
  • 如何在 TypeScript 中声明具有属性的函数的类型?

    我在 TypeScript 网站上阅读了一些文档 但不确定我是否理解正确 在这种情况下 我使用的包没有可用的 TypeScript 类型 prismic reactjs 所以我试图自己声明类型 这样我就可以摆脱困扰我的项目的错误 那么 作为
  • “null this”是否可以接受扩展方法的使用? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 使用 Rails 定期计费 - 我有哪些选择?

    在开始之前 我想知道我的所有选择是什么 如果可能的话 它们的优点和缺点 我知道的两个正在使用 ActiveMerchant 或 paypal recurring gem 但它们会满足这些要求吗 能够适应按月和按年计费 能够暂停 取消帐户等
  • 20 多天后由于碎片而导致 Android 出现内存不足错误

    我制作了一个在咖啡机上运行的应用程序 20 多天后 可能是 60 多天 具体取决于使用情况 发生 OutOfMemoryError java lang OutOfMemoryError Failed to allocate a 604 by
  • 在 Android 上滑动即可切换标签,例如 YouTube/Google Music 应用

    在最新版本的应用程序中 谷歌实现了一种非常酷的方式 可以在选项卡之间滑动而不是单击选项卡标题 我想知道是否有人对如何做到这一点有更具体的想法 以下是一些想法 欢迎批评 我最初的想法是这不是一个标准TabActivity举办儿童活动 事实上
  • 使用 ftrace 和 kprobes 捕获用户空间程序集(通过使用虚拟地址转换)?

    对于这篇较长的帖子表示歉意 我无法以较短的方式表述它 另外 也许这更适合 Unix Linux Stack Exchange 但我会首先在这里尝试 因为有一个ftrace tag 无论如何 我想观察用户程序的机器指令在完整的上下文中执行fu
  • 方法“[]”在 null 上调用。接收者:空

    为了隔离问题 我创建了一个新代码 一个新程序和一台新机器 相同的结果 它只是不想打印 quotes 之后且具有 anythingPrice 的任何值 我再次可以给您一个临时密钥 您可以完全运行代码 在你身边 请告诉我 import dart
  • AS3 中 onReleaseOutside 最简单的实现?

    我是 ActionScript 2 的长期用户 现在开始使用 ActionScript 3 我缺少的一件事是复制 AS2 MovieClip onReleaseOutside 功能的简单方法 几乎总是有必要实现这个事件 否则你会得到一些有趣