常用事件方法及技巧(一) -- AS3的冒泡原理

简介:

      AS2中的事件侦听,采用的是非冒泡方式,而AS3中的事件侦听,大多采用的是冒泡方式。可冒泡这个词太专业,不少人并不是很明白意思。我在这里尽可能简单的讲述一下: 

      首先,我们打开 Flash8,在舞台上创建一个MC,实例名为t1。然后在t1内再创建一个MC,实例名为t2。如下图所示:

      

       然后我们在第一帧写入代码如下:
      t1.onPress = function() {
              trace("t1 pressed");
      }
      t1.t2.onRelease = function() {
             trace("t2 pressed");
      }
 
      运行后,发现, t1可以触发,但是t2无法触发。
 
      无法触发的原因是:
      t2位于 t1内部,当二者同时触发事件时,t1优于t2触发,或者说t1“挡住了”t2的事件触发。
      从非冒泡角度来说,虽然是在 t2上点击鼠标,但首先接受到点击事件的是t2的上一层(也就是t1)。t1先接受到点击事件,触发相关的函数。然后终止,不再往下传递。这个就是非冒泡机制。
 
 
      现在,我们打开 AS3,舞台上的步骤相同。在第一帧写入代码如下:
      function p1(event:MouseEvent):void {
              trace("t1 click");
      }
      t1.addEventListener(MouseEvent.CLICK, p1);
 
      function p2(event:MouseEvent):void {
              trace("t2 click");
      }
      t1.t2.addEventListener(MouseEvent.CLICK, p2);
 
      运行后, t1和t2均能顺利触发。
 
       也就是说,在事件的捕获阶段,非冒泡机制,只要找到一个可以响应时间的函数,就停止了,不会再往下传递。但冒泡机制还会继续往下走,一直到底层为止。
      在事件的冒泡阶段,会按照冒泡顺序,一个个激发事件。如我们上面的那个例子,先激发的是 t2上的事件“t2 click”,接着才是激发t1上的事件“t1 click”。
 
      但是,冒泡机制也同样会产生一些问题,比如说上面的例子中, t1和t2都会触发,但如果我只想触发t2事件,不想触发t1事件,这时候怎么处理呢?这时候就要用到一些event类的方法,我这里先简单的给出代码,具体的我在以后的篇幅中还会介绍。
 
      function p1(event:MouseEvent):void {
              trace("t1 click");
      }
      t1.addEventListener(MouseEvent.CLICK, p1);
 
      function p2(event:MouseEvent):void {
              trace("t2 click");
              event.stopPropagation(); //阻止再冒泡
      }
      t1.t2.addEventListener(MouseEvent.CLICK, p2);
 
      以上代码运行后,只侦听到 t2,不再侦听t1事件。








本文转自 windtoto 51CTO博客,原文链接:http://blog.51cto.com/windtoto/372029,如需转载请自行联系原作者
目录
相关文章
|
机器学习/深度学习 算法 决策智能
选址问题-精确重心法和遗传算法
选址问题-精确重心法和遗传算法
2420 0
|
机器学习/深度学习 存储 SQL
15个超级棒的外文免费数据集,学习数据分析不愁没有数据用了!
15个超级棒的外文免费数据集,学习数据分析不愁没有数据用了!
690 0
|
前端开发 jenkins 应用服务中间件
使用verdaccio打造自己的npm私有化仓库
使用verdaccio打造自己的npm私有化仓库
1058 0
使用verdaccio打造自己的npm私有化仓库
|
小程序 开发者
HBuilderX运行uniapp到微信开发者工具常见报错
HBuilderX运行uniapp到微信开发者工具常见报错
2487 0
|
8月前
|
存储 监控 安全
RFID固定资产管理
RFID(射频识别)技术为现代企业固定资产管理提供了创新解决方案。相比传统人工管理方式,RFID技术通过标签与阅读器实现资产快速、精准识别,大幅提升管理效率与准确性。它在资产采购、入库、日常管理、盘点及折旧报废等环节均有广泛应用,帮助企业降低丢失率、优化资源配置并增强竞争力。尽管存在成本和技术标准等挑战,但随着物联网、大数据等技术融合,RFID固定资产管理将更智能化,助力企业高质量发展。
|
JavaScript 前端开发 API
探索组合式API与Options API的对比及最佳实践
探索组合式API与Options API的对比及最佳实践
417 83
ly~
|
消息中间件 搜索推荐 大数据
一般情况下在 RocketMQ 中添加 access key 的步骤: 一、确定配置文件位置 RocketMQ 的配置文件通常位于安装目录下的 conf 文件夹中。你需要找到 broker.conf 或相关的配置文件。 二、编辑配置文件 打开配置文件,查找与 ACL(访问控制列表)相关的配置部分。 在配置文件中添加以下内容:
大数据广泛应用于商业、金融、医疗和政府等多个领域。在商业上,它支持精准营销、客户细分及流失预测,并优化供应链管理;金融领域则利用大数据进行风险评估、市场预测及欺诈检测;医疗行业通过大数据预测疾病、提供个性化治疗;政府运用大数据进行城市规划和公共安全管理;工业领域则借助大数据进行设备维护、故障预测及质量控制。
ly~
921 2
|
缓存 网络协议 网络架构
网络抓包分析【IP,ICMP,ARP】以及 IP数据报,MAC帧,ICMP报和ARP报的数据报格式
本文详细介绍了如何使用网络抓包工具Wireshark进行网络抓包分析,包括以太网v2 MAC帧、IP数据报、ICMP报文和ARP报文的格式,以及不同网络通信的过程。文章通过抓包分析展示了IP数据报、ICMP数据报和ARP数据报的具体信息,包括MAC地址、IP地址、ICMP类型和代码、以及ARP的硬件类型、协议类型、操作类型等。通过这些分析,可以更好地理解网络协议的工作机制和数据传输过程。
网络抓包分析【IP,ICMP,ARP】以及 IP数据报,MAC帧,ICMP报和ARP报的数据报格式
|
网络协议 安全 Java
Wireshark抓取Android数据包
Wireshark抓取Android数据包
2850 0
ChatGPT高效提问—prompt实践(白领助手)
ChatGPT高效提问—prompt实践(白领助手)
165 0