场景图形/显示列表之外的 AS3 事件冒泡

2023-12-02

您好,只是想知道是否可以在 AS3 中的非显示列表类中利用事件冒泡。

例如,在应用程序的模型中,有一个包含许多汽车的 City 类。有哪些方法可以将事件侦听器附加到 City 对象并接收从子 Cars 冒出的事件。澄清一下,City 和 Car 对象不是显示列表的一部分,它们不是 DisplayObject。那么冒泡可以在显示列表之外以某种方式实现吗?

据我所知,如果不手动将事件侦听器附加到每个 Car 对象并从 City 对象重新分派事件,这是不可能的。还有其他人有更清洁的解决方案吗?


这堂课是我解决这个问题的方法。基本上让您的类通常扩展 EventDispatcher 而不是扩展 Bubbling EventDispatcher

然后调用 addChild Target( target:Bubble EventDispatcher ) 函数来设置可以从中捕获冒泡事件的子项。

此解决方案为每个事件调度程序使用一个精灵,但每个类仅使用 1 个字节的额外内存

package 
{
 import flash.display.Sprite;
 import flash.events.Event;
 import flash.events.EventDispatcher;

 public class BubblingEventDispatcher extends EventDispatcher
 {
  //We have to use a sprite to take advantage of flash's internal event bubbling system
  private var sprite:Sprite;

  public function BubblingEventDispatcher()
  {
   //initialize our sprite
   sprite = new Sprite();
  }

  public override function addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false):void
  {
   sprite.addEventListener( type, listener, useCapture, priority, useWeakReference );
  }

  public override function dispatchEvent(event:Event):Boolean
  {
   return sprite.dispatchEvent( event );
  }

  //We must add child targets if we want to take advantage of the bubbling
  public function addChildTarget( target:BubblingEventDispatcher ):void
  {
   sprite.addChild( target.eventTarget as Sprite );
  }

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

场景图形/显示列表之外的 AS3 事件冒泡 的相关文章

  • Actionscript 3:使用字符串中的名称播放库中的声音

    我正在尝试编写一些 actionscript 3 代码来播放库中的短声音 使用动态创建的字符串来加载它 在 AS2 中 我可以这样做 mySound new Sound mySound attachSound any concatenate
  • 如何将参数传递给事件? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我的一些变量没有在每次方法调用时被序
  • AS3 禁用数据网格内文本输入的可编辑/可选择

    我目前正在尝试禁用可选择 可编辑 或将 textInput 更改为动态以获得我想要的结果 我有一个带有下拉菜单和文本输入区域的自定义数据网格 但是 如果我的 型号 列中没有数据 我不想允许在相应的 购买价格 单元格中输入任何内容 col1
  • 浏览器视口大小(以设备像素为单位)

    Goal 我希望 Flash 能够获得有关浏览器视口宽度和高度 以设备像素为单位 的准确信息初始化 调整大小或浏览器缩放事件时 规格 我需要将 flash 嵌入到在 chrome safari firefox 等中运行的 html 页面中
  • 在 AS3 中创建一个(适当的)计时器

    如何在as3中创建时间计数器 在 google 上进行一些简单的搜索 您会找到 AS3 类 Timer 它实际上是事件计数器 不是一个合适的时间计数效用 我见过这个http blogs adobe com pdehaan 2006 07 u
  • 如何在 AS3 中将声音放大指定的分贝数?

    几天前 这是我的问题 我找到了答案 也许这会帮助别人 A 问 题的第一部分 可以使用Flash放大声音吗 SoundTransform 的 AS3 文档这样描述了音量属性 音量 范围从 0 静音 到 1 最大音量 从表面上看 这意味着您只能
  • 如何添加事件处理程序仅在 sqlalchemy 中提交事务后触发一次

    我正在使用 sqlalchemy 编写一些函数 这些函数被称为内部事务 例如 def create order session arg kw create order object order Order xxxx xxx session
  • Flash AS3 EventDispatcher - 有什么方法可以获取已注册侦听器的列表吗?

    有没有什么方法可以获取注册监听器的列表EventDispatcher 我知道EventDispatcher有hasEventListener方法告诉您是否注册了任何侦听器 但是有没有一种简单的方法来询问EventDispatcher找出听众
  • 在 Shiny 中设置一个绘图缩放以匹配另一个绘图缩放

    我正在尝试使用情节重排获取一个图的 x 轴缩放限制 并将它们应用到 Shiny 中的另一个图 到目前为止 我可以从 plot1 x轴限制 获取相关的plotly relayout数据 将其转换 从数字到日期 并在绘制 plot2 之前将其提
  • ActionScript Workers 可以用于在单独的线程中播放/生成声音吗?

    我很新ActionScript 工作者 但我想知道这是否可能 从我读到的来看 ActionScript 工作者 ASW 就像单独的线程 可以执行更多 CPU 密集型计算 而无需中断主线程 正在执行主 SWF 文件 我真正看到的唯一一个例子是
  • 如何在 Node.js 中让一个 EventEmitter 监听另一个 EventEmitter?

    我想做这样的事情 var events require events var emitterA new events EventEmitter var emitterB new events EventEmitter emitterA ad
  • C#:如何在调用时触发事件的方法上创建属性?

    在 C 或 NET 中 是否有一种方法可以在方法上创建一个属性 以便在调用该方法时触发事件 理想情况下 我能够在调用该方法之前和之后运行自定义操作 我的意思是这样的 TriggersMyCustomAction public void Do
  • 使用 Flash 获取计算机信息

    是否可以使用 Adob e Flash 检索计算机信息 RAM 硬盘大小 CPU 速度等 如果是这样 有人可以向我指出一个网站 告诉我如何做吗 我认为你无法获得 RAM 硬盘大小或时钟速度 Flash 在虚拟机中运行 并且它可能被设置为仅向
  • WPF:路由事件还是常规事件?

    在 WPF 中 我们有路由事件 什么时候应该使用这些来代替常规事件 路由事件具有特殊的行为 但如果您在引发事件的元素上处理事件 则该行为在很大程度上是不可见的 如果您使用任何建议的方案 路由事件就会变得强大 在公共根定义公共处理程序 组合您
  • 电影剪辑结束的 Flash 事件侦听器?

    任何人都可以建议影片剪辑动画结束时触发功能的最佳方式吗 我认为事件监听器可以处理这个问题 但不确定最好的方法 谢谢 保罗 有几种方法可以解决这个问题 只需从动画的最后一帧调用该函数即可 在函数的最后一帧上调度一个事件并在其他地方监听它 长而
  • 有没有办法子类化并重写自定义命名空间中的方法?

    假设我有一个类 其方法定义在公共 受保护或内部之外的命名空间中 package com foo bar import com foo my name space public class bar private var vabc Strin
  • JavaScript 滚动事件不会在装有 iOS7 的 iPhone 上触发

    我对图像使用延迟加载技术 每当新图像出现在视口中时 都会设置 src 属性 以便可以加载图像 这种技术已经运行了很多年 直到 iOS7 发布 它在常规页面浏览中运行良好 但是当你关闭浏览器时 稍等一下 也许打开一些其他应用程序 然后回来它就
  • AS3/JavaScript if 语句用逗号代替 & &

    它在 ActionScript 3 和 JavaScript 中运行 为什么 我知道该怎样 and 工作 但是一个清单 这是 AS3 特定的吗 这是其他语言的吗 我是一个用嘴呼吸的 PHP AS2 程序员 还是每个人都已经知道这一点而我是一
  • 如何反转音量滑块的音量数学?

    我正在构建一个视频播放器 但有点卡在音量滑块部分 这是一个 YouTube 风格的垂直滑块 这意味着如果滑块位于顶部位置 音量应该为 100 如果滑块拖动到底部位置 声音应该为 0 目前它的做法与我想要的相反 向下拖动滑块将使声音变大 向上
  • 存储来自其他程序的事件

    我想将其他应用程序的事件存储在我自己的应用程序中 事件示例 打开 最小化 Word 或打开文件时 这样的事可能吗 运行程序 http msdn microsoft com en us library ms813609 aspx and 打开

随机推荐

  • 为 Cygwin 启用本机 NTFS 符号链接

    最近的 NTFS 和 Windows 实现了符号链接 NTFS连接点自 NTFS 3 0 Windows 2000 起可用作目录符号链接linkd or junction tools NTFS 符号链接也可以用作符号链接 对于文件和目录 因
  • app.config

    假设我有一个使用 VS2008 针对 NET 2 0 构建和编译的 WinForms 应用程序 据我了解 在运行时 应用程序将首先尝试加载 NET 2 0 CLR 因为这是它的编译对象 不管app config 文件的任何 supporte
  • Windows Phone 8.1 从代码发送 HTML 邮件

    我试图打开邮件应用程序 其内容在代码中定义 但是当我发送它时 gmail oulook 显示为纯文本而不是 HTML private async void SendEmail string url EmailMessage mail new
  • C# 将日期时间转换为自定义格式

    我正在查询一个datetime dd mm YYYY hh mm ss 数据库中的值并将其插入到列表中 如下所示 ord invoiceDate dt Rows i invoicedate ToString 如何将此字符串转换为自定义格式
  • 在matlab中使用bitshift绘制RGB直方图

    我正在尝试在 Matlab 中创建马赛克图像 该数据库主要由 RGB 图像组成 但也包含一些灰度图像 我需要计算直方图 就像维基百科文章的示例中关于颜色直方图 对于 RGB 图像 考虑使用 Matlab 中的位移运算符来组合 R G 和 B
  • HTML5 - mp4 视频无法在 IE9 中播放

    我有一个 mp4 视频 我想使用 HTML5 在 IE9 中播放
  • startManagingCursor() 在服务中?

    有没有办法在服务中而不是活动中使用 startManagingCursor 并获得相同的结果 如图所示here 更具体地说 我想根据服务的生命周期管理给定游标的生命周期 例如 当服务被销毁时 它将自动对给定的 Cursor 调用 deact
  • 如何传递非静态函数作为回调? [复制]

    这个问题在这里已经有答案了 我目前正在使用 Qt 和图形引擎 在 QGLWidget 实例的初始化期间 我需要将一些函数指针传递给我的引擎 寻找回调的函数是 virtual void Buffer CreateCustom byte get
  • 如何创建带有图像的单选按钮

    我想要一个带有图像而不是文本的单选按钮 所以我想要一个男性和女性的图像 而不是男性和女性的文本 这实际上可以使用标准 HTML 来完成还是必须使用 jQuery 我该怎么做呢 Use
  • 编译器是否允许回收释放的指针变量?

    有人声称 a compiler is free to reuse the pointer variable for some other purpose after the realloc being freed so you have n
  • 升级 ColdFusion 使用的 JRE

    我有一个 ColdFusion 8 1 应用程序 它被大量使用 我看到 jrun exe 在任务管理器中的内存使用率非常高 这是一个 32 位 Windows 2003 服务器 当 Jrun 达到大量内存使用量时 ColdFusion 将在
  • 如何在node.js中将类似字符串的数组转换为数组?

    实际上我得到了arraylist从 Android 设备中node js 但由于它是字符串形式 所以我想将其转换为array 为此 我在中提到了很多类似的问题SO但他们都没有帮助 我也尝试使用JSON parse 但这没有帮助 我正在以表格
  • 如何以通用方式检测位置缺失:固定?

    在iPad等移动设备上 我想禁用仅在支持position fixed时才有效的功能 有没有一种方法可以在不使用用户代理字符串的情况下检测这些设备 原因是我想尽可能避免搜索 iPad iPhone iPod Android 等 运行以下函数来
  • Webstorm IDE 缺少 Node.js Boilerplate 项目类型

    所以我专门检索了webstorm来学习和使用node js进行开发 似乎 Webstorm 的所有文档都指向现有项目类型 其中包含样板 Node js 设置 而没有所有 Web 配置等 我想使用这个样板模板 而不是带有一堆网络垃圾和不必要的
  • 为什么一个特征没有为一个明确实现了它的类型实现?

    我正在尝试使用Diesel查询 MySQL 数据库并使用 Handlebars 模板显示结果Rocket 我有这个模型 rs derive Queryable Serialize pub struct Post pub id i32 pub
  • 如何从 Java 的标准输入读取整数数组?

    在标准输入的一行中 我有 3 种类型的整数 第一个整数是 id 第二个整数是 N 某个数字 之后是 N 个整数 用一个空格分隔 我想将其存储在数组或 ArrayList 中 我如何使用 BufferedReader 来做到这一点 我有以下代
  • OpenCart 订阅模式(x 个月)

    我正在使用 OpenCart 设置一个电子商务网站 并且我想提供订阅 特别是 3 6 12 个月的订阅 我对定期计费不感兴趣 我知道有 PayPal 和 Authorize net 的模块 我希望用户提前付款一次 从配置的角度来看 这是否会
  • 为轮播横幅添加视差效果,使图像和文本以不同的速度移动

    我可以使用轮播效果 但我不知道如何使文本和图像以不同的速度移动 如 IBM 横幅所示 http www ibm com us en 这是我的 jQuery fn zinCarousel function settings var setti
  • C++循环包含问题[重复]

    这个问题在这里已经有答案了 我有这个文件 logger hpp ifndef LOGGER HPP define LOGGER HPP include event hpp Class definitions class Logger pub
  • 场景图形/显示列表之外的 AS3 事件冒泡

    您好 只是想知道是否可以在 AS3 中的非显示列表类中利用事件冒泡 例如 在应用程序的模型中 有一个包含许多汽车的 City 类 有哪些方法可以将事件侦听器附加到 City 对象并接收从子 Cars 冒出的事件 澄清一下 City 和 Ca