- 浏览: 1062503 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (695)
- 心情日记 (14)
- AS开发工具 (12)
- 文章转载 (99)
- AIR (5)
- 问题总结 (46)
- SWF格式 (7)
- 测试总结 (10)
- 外文资料 (9)
- 算法技术 (33)
- AS3常用开源库 (43)
- 源码范例 (102)
- FLEX (72)
- FLASH 优化 (33)
- 游戏开发 (49)
- 开发技术 (11)
- 工作应用 (34)
- AS3收集 (140)
- WebBase (0)
- 开发构想 (4)
- 设计模式 (2)
- 框架和框架范例 (19)
- RED5 (3)
- java开发 (3)
- JAVA (1)
- FLASH-3D (23)
- 3D (6)
- 书籍 (10)
- 业界信息资料 (3)
- C# (1)
- JavaScript (12)
- HTML5 (6)
- Flixel (1)
- D5Power RPG网页游戏引擎 (0)
- ColorMatrixFilter - 获得相应颜色的色调 函数 (0)
- Starling (0)
最新评论
-
老顽童203:
字体
水果忍者鼠标跟随特效制作[转载] -
hairball00:
[转] 放出超多的Flash组件源代码 -
he74552775:
flash AS3 RegExp简单功能用法(转) -
hanshuai1232000:
第四点,有利也有弊,等你做了大型的aprg,你就知道了
[转]位图数据内存优化 -
yangfantao:
太感谢
[转] 放出超多的Flash组件源代码
http://www.flashas.net/asbc/20090215/3921.html
AS3的 事件流就三个阶段,捕获 > 目标 > 冒泡
而在鼠标事件中,共有10种鼠标事件,分别如下:
点击事件: MouseEvent.CLICK ,MouseEvent.DOUBLE_CLICK
按键事件: MouseEvent.MOUSE_DOWN ,MouseEvent.MOUSE_UP
悬停事件: MouseEvent.MOUSE_OVER ,MouseEvent.MOUSE_OUT ,MouseEvent.ROLL_OVER ,MouseEvent.ROLL_OUT
移动事件: MouseEvent.MOUSE_MOVE
滚轮事件: MouseEvent.MOUSE_WHEEL
最令我不解的就是
悬停事件: MOUSE_OVER ,MOUSE_OUT ,ROLL_OVER ,ROLL_OUT
它们的具体工用是相似的
MOUSE_OVER = ROLL_OVER
MOUSE_OUT = ROLL_OUT
唯一不同的是前者参与事件流的冒泡阶段,而后者则不参加,
黑羽书上的例子类似,一个内部有文本框的按钮,
MOUSE_OVER ,MOUSE_OUT 事件中,鼠标移到按钮上,会触发over事件,当鼠标继续移,移到按钮里的文本上时,
就会触发文本的MOUSE_OVER事件,同一时间,按钮的MOUSE_OUT事件也会触发
而如果使用ROLL_OVER ,ROLL_OUT呢,这种情况下,鼠标移入按钮后,只要不移出按钮范围,按钮的OUT事件是不会触发的.
(________________________________
//括号内的内容为后期补充,实然是最终结果,建议先跳过看后面的,回头再看本段文字
此处我掉入了一个误区,不明白为什么移上子mc会触发移出事件,然后又触发移入事件,
其实不然,是事件流的原因,因为事件流机制默认是在冒泡阶段侦听的
所以整个流程解析就是,
1.先是鼠标移入按钮范围,触发按钮mc的①MOUSE_OVER事件,向上冒泡,没有其它对象侦听了,
2.鼠标继续移,移入内部影片剪辑a的范围时,触发mc的②MOUSE_OUT事件,同时又触发a的③MOUSE_OVER事件,
3.进入子影片剪辑a的冒泡阶段,因为a的父对象mc有侦听④MOUSE_OVER事件的,所以会触发mc的移入事件
4.鼠标移出a影片剪辑范围(仍未移出mc范围)时,触发a侦听的⑤MOUSE_OUT事件,
5.进入子影片剪辑a的冒泡阶段,触发mc的移出事件⑥MOUSE_OUT
6.鼠标重新移入到mc影片剪辑的范围,触发mc的⑦MOUSE_OVER事件
7.鼠标移出mc范围,触发mc的⑧MOUSE_OUT事件
//鼠标移入mc范围,未移入子影片剪辑a范围
//外部_移入_当前 mc _目标 mc <<mc的MOUSE_OVER生效 ①
//鼠标移入子影片剪辑a范围
//外部_移出_当前 mc _目标 mc <<mc的MOUSE_OUT生效 ②
//内部_移入_当前 a _目标 a <<mc.a的MOUSE_OVER生效 ③
//外部_移入_当前 mc _目标 a <<冒泡阶段,mc的MOUSE_OVER生效 ④
//鼠标移出子影片剪辑a范围
//内部_移出_当前 a _目标 a <<mc.a的MOUSE_OUT生效 ⑤
//外部_移出_当前 mc _目标 a <<冒泡阶段,mc的MOUSE_OUT生效 ⑥
//外部_移入_当前 mc _目标 mc <<mc的MOUSE_OVER生效 ⑦
//鼠标移出影片剪辑mc范围,回到舞台
//外部_移出_当前 mc _目标 mc <<mc的MOUE_OUT生效⑧
上面是trace出来的结果,下面是源代码,场景中一个大影片剪辑mc,套一个小影片剪辑a
________________________________)
因为displayObject中 DisplayObjectContainer(容器)对象有一个属性mouseChildren,控制子显示对象是否接受事件,一般看到上面的话,而又知道mouseChildren属性的朋友,就会有疑问了(包括刚才的我),那这样我设显示对象的mouseChildren属性为false不就可以避免MOUSE_OUT事件在按钮内部触发了吗?
对了,这点黑羽在最后说明白了,在某些情况下,我们需要在子显示对象上写事件的,如果设了mouseChildren为false,则很不方便了.
最后,我对事件的冒泡过程不太明确,自己写了个小测试来验证了.
在场景中再一个矩形影片剪辑,实例名mc
双击进入后,再画一个矩形(稍小的),做成影片剪辑,实例名a
这样做成了一个父子套的关系,
然后写代码
运行,在单纯mc的范围上单击,返回的target是mc,currentTarget也是mc
输出结果:
mc _ mc
而如果鼠标再移入一点,在a影片剪辑上单击的时候,
事件流先到达目标阶段,触发a的侦听,然后冒泡阶段,再到mc
所以target一直是a,但currentTarget目标会在两次触发中分别为a(内层)和mc(外层)
输出结果:
a _ a
mc _ a
上面这个实验就是想证明自己的一个想法,冒泡事件是否触发的顺序是从底到顶的,上面的输出证实了这点理解.
这里可以返回上面看括号里的内容了,看完再接下面这段总结
总结:
1.事件流是面向DisplayObject的一个过程机制,但凡显示对象触发的事件,必有这个流过程,自上而下,再自下而上
2.事件流机制是在同一条路径上的父子关系的显示对象都会参与的(默认)
3.参与事件流的对象,对内部子对象,同样会触发MOUSE_OUT事件的
4.最重要的一点就是,子对象触发的事件,只要父对象有侦听,那么无论如何,父对象都会触发一次所侦听的事件
而且顺序是子对象先触发事件,然后父对象再触发(这是由冒泡阶段的顺序触发的)
5.将addEventListener函数中的第三个参数设为true,则只在捕获阶段侦听,对于没有子对象的元素,事件是不会触发的,只有当子对象同样侦听相同事件时,才会触发事件(因为没有目标阶段)
反正要理解事件机制,三个阶段的执行顺序及执行因素理解好后,下面的原理就很好理解了
如果设置addEventListener函数的第三个参数为true,会中断目标阶段的检测,但它始终会参加事件流,
所以ROLL_OVER和ROLL_OUT是实现不参加事件流(捕获和冒泡均不参加)操作的方法
呵呵,又加深了一点理解,开心ing.......
(本文花时颇长,其中有多次修改,可能文路上会有点乱,如有错误,敬请大家指正)
AS3的 事件流就三个阶段,捕获 > 目标 > 冒泡
而在鼠标事件中,共有10种鼠标事件,分别如下:
点击事件: MouseEvent.CLICK ,MouseEvent.DOUBLE_CLICK
按键事件: MouseEvent.MOUSE_DOWN ,MouseEvent.MOUSE_UP
悬停事件: MouseEvent.MOUSE_OVER ,MouseEvent.MOUSE_OUT ,MouseEvent.ROLL_OVER ,MouseEvent.ROLL_OUT
移动事件: MouseEvent.MOUSE_MOVE
滚轮事件: MouseEvent.MOUSE_WHEEL
最令我不解的就是
悬停事件: MOUSE_OVER ,MOUSE_OUT ,ROLL_OVER ,ROLL_OUT
它们的具体工用是相似的
MOUSE_OVER = ROLL_OVER
MOUSE_OUT = ROLL_OUT
唯一不同的是前者参与事件流的冒泡阶段,而后者则不参加,
黑羽书上的例子类似,一个内部有文本框的按钮,
MOUSE_OVER ,MOUSE_OUT 事件中,鼠标移到按钮上,会触发over事件,当鼠标继续移,移到按钮里的文本上时,
就会触发文本的MOUSE_OVER事件,同一时间,按钮的MOUSE_OUT事件也会触发
而如果使用ROLL_OVER ,ROLL_OUT呢,这种情况下,鼠标移入按钮后,只要不移出按钮范围,按钮的OUT事件是不会触发的.
(________________________________
//括号内的内容为后期补充,实然是最终结果,建议先跳过看后面的,回头再看本段文字
此处我掉入了一个误区,不明白为什么移上子mc会触发移出事件,然后又触发移入事件,
其实不然,是事件流的原因,因为事件流机制默认是在冒泡阶段侦听的
所以整个流程解析就是,
1.先是鼠标移入按钮范围,触发按钮mc的①MOUSE_OVER事件,向上冒泡,没有其它对象侦听了,
2.鼠标继续移,移入内部影片剪辑a的范围时,触发mc的②MOUSE_OUT事件,同时又触发a的③MOUSE_OVER事件,
3.进入子影片剪辑a的冒泡阶段,因为a的父对象mc有侦听④MOUSE_OVER事件的,所以会触发mc的移入事件
4.鼠标移出a影片剪辑范围(仍未移出mc范围)时,触发a侦听的⑤MOUSE_OUT事件,
5.进入子影片剪辑a的冒泡阶段,触发mc的移出事件⑥MOUSE_OUT
6.鼠标重新移入到mc影片剪辑的范围,触发mc的⑦MOUSE_OVER事件
7.鼠标移出mc范围,触发mc的⑧MOUSE_OUT事件
//鼠标移入mc范围,未移入子影片剪辑a范围
//外部_移入_当前 mc _目标 mc <<mc的MOUSE_OVER生效 ①
//鼠标移入子影片剪辑a范围
//外部_移出_当前 mc _目标 mc <<mc的MOUSE_OUT生效 ②
//内部_移入_当前 a _目标 a <<mc.a的MOUSE_OVER生效 ③
//外部_移入_当前 mc _目标 a <<冒泡阶段,mc的MOUSE_OVER生效 ④
//鼠标移出子影片剪辑a范围
//内部_移出_当前 a _目标 a <<mc.a的MOUSE_OUT生效 ⑤
//外部_移出_当前 mc _目标 a <<冒泡阶段,mc的MOUSE_OUT生效 ⑥
//外部_移入_当前 mc _目标 mc <<mc的MOUSE_OVER生效 ⑦
//鼠标移出影片剪辑mc范围,回到舞台
//外部_移出_当前 mc _目标 mc <<mc的MOUE_OUT生效⑧
上面是trace出来的结果,下面是源代码,场景中一个大影片剪辑mc,套一个小影片剪辑a
mc.a.addEventListener(MouseEvent.MOUSE_OVER,onFunA) mc.a.addEventListener(MouseEvent.MOUSE_OUT,onFunB) mc.addEventListener(MouseEvent.MOUSE_OVER,onFunC) mc.addEventListener(MouseEvent.MOUSE_OUT,onFunD) function onFunA(_evt:MouseEvent){ trace("内部_移入_当前",_evt.currentTarget.name,"_目标",_evt.target.name) } function onFunB(_evt:MouseEvent){ trace("内部_移出_当前",_evt.currentTarget.name,"_目标",_evt.target.name) } function onFunC(_evt:MouseEvent){ trace("外部_移入_当前",_evt.currentTarget.name,"_目标",_evt.target.name) } function onFunD(_evt:MouseEvent){ trace("外部_移出_当前",_evt.currentTarget.name,"_目标",_evt.target.name) }
________________________________)
因为displayObject中 DisplayObjectContainer(容器)对象有一个属性mouseChildren,控制子显示对象是否接受事件,一般看到上面的话,而又知道mouseChildren属性的朋友,就会有疑问了(包括刚才的我),那这样我设显示对象的mouseChildren属性为false不就可以避免MOUSE_OUT事件在按钮内部触发了吗?
对了,这点黑羽在最后说明白了,在某些情况下,我们需要在子显示对象上写事件的,如果设了mouseChildren为false,则很不方便了.
最后,我对事件的冒泡过程不太明确,自己写了个小测试来验证了.
在场景中再一个矩形影片剪辑,实例名mc
双击进入后,再画一个矩形(稍小的),做成影片剪辑,实例名a
这样做成了一个父子套的关系,
然后写代码
mc.a.addEventListener(MouseEvent.CLICK,onFunA) mc.addEventListener(MouseEvent.CLICK,onFunB) function onFunA(_evt:MouseEvent){ trace(_evt.currentTarget.name,"_",_evt.target.name) } function onFunB(_evt:MouseEvent){ trace(_evt.currentTarget.name,"_",_evt.target.name) }
运行,在单纯mc的范围上单击,返回的target是mc,currentTarget也是mc
输出结果:
mc _ mc
而如果鼠标再移入一点,在a影片剪辑上单击的时候,
事件流先到达目标阶段,触发a的侦听,然后冒泡阶段,再到mc
所以target一直是a,但currentTarget目标会在两次触发中分别为a(内层)和mc(外层)
输出结果:
a _ a
mc _ a
上面这个实验就是想证明自己的一个想法,冒泡事件是否触发的顺序是从底到顶的,上面的输出证实了这点理解.
这里可以返回上面看括号里的内容了,看完再接下面这段总结
总结:
1.事件流是面向DisplayObject的一个过程机制,但凡显示对象触发的事件,必有这个流过程,自上而下,再自下而上
2.事件流机制是在同一条路径上的父子关系的显示对象都会参与的(默认)
3.参与事件流的对象,对内部子对象,同样会触发MOUSE_OUT事件的
4.最重要的一点就是,子对象触发的事件,只要父对象有侦听,那么无论如何,父对象都会触发一次所侦听的事件
而且顺序是子对象先触发事件,然后父对象再触发(这是由冒泡阶段的顺序触发的)
5.将addEventListener函数中的第三个参数设为true,则只在捕获阶段侦听,对于没有子对象的元素,事件是不会触发的,只有当子对象同样侦听相同事件时,才会触发事件(因为没有目标阶段)
反正要理解事件机制,三个阶段的执行顺序及执行因素理解好后,下面的原理就很好理解了
如果设置addEventListener函数的第三个参数为true,会中断目标阶段的检测,但它始终会参加事件流,
所以ROLL_OVER和ROLL_OUT是实现不参加事件流(捕获和冒泡均不参加)操作的方法
呵呵,又加深了一点理解,开心ing.......
(本文花时颇长,其中有多次修改,可能文路上会有点乱,如有错误,敬请大家指正)
发表评论
-
HTTP/1.1协议规范(中文归纳版)
2012-04-18 16:39 2013一、介绍(introduction) ... -
[转] [Flash/Flex] 加载SWF性能VS影片剪辑性能
2012-03-15 22:29 0http://bbs.9ria.com/viewthread. ... -
请问如何才能让加载到一半的SWF不自动播放
2012-02-29 03:06 1476我用loader加载l=new Loader(); ... -
Embed绑定XML与txt文本文件
2011-12-28 15:54 4603使用Embed标签可以将图片绑定到swf中并显示,那么我 ... -
Flash_Rich_Text_Editor(完美的富文本编辑器)
2011-12-27 17:55 0Flash_Rich_Text_Editor(完美的富文 ... -
Matrix学习
2011-11-28 16:51 0Matrix学习 -
[转]三次贝尔曲线
2011-11-10 01:09 1873http://bbs.9ria.com/viewt ... -
[心得] 完美解决as3在ie中初始化时stageWidth和stageHeight为0的问题
2011-11-03 00:46 2887先看下面的一段脚本,这是比较经典的初始化脚本: pa ... -
Flash Player和Adobe AIR内部的垃圾回收机制
2011-10-29 22:37 0资讯类型: 翻译 来源页面: http://www.ad ... -
[转]FLASH与JS序列简单应用
2011-10-28 01:03 2031FLASH与JS序列简单应用 (一) 用swfob ... -
2个加载作用
2011-10-24 22:14 1825第一话:加载Base64 encoded string 通过 ... -
[原创]围绕任意一个中心点旋转
2011-10-23 13:46 0package guwanyuan.qicool.game.c ... -
[转]這是一個多分頁打印的類
2011-10-23 00:12 1366http://bbs.9ria.com/viewthread. ... -
[心得] localToGlobal 和 globalToLocal 的理解
2011-10-20 03:10 0http://bbs.9ria.com/viewthread. ... -
翻译: Flash文本引擎, 第三部分: 布局
2011-10-20 02:36 0http://www.riade ... -
翻译: Flash文本引擎, 第二部分: 交互
2011-10-20 02:34 0http://www.riadev.com/flex-thre ... -
翻译: Flash文本引擎, 第一部分: 概述
2011-10-20 02:33 0http://www.riadev.com/flex-thre ... -
海洋效果非常绚丽
2011-09-30 02:17 0海洋效果非常绚丽 -
[转][心得] numChildren > 0, getChildAt(0)却是null?
2011-09-25 00:55 0if(numChildren) ... -
[转]批量生成swf资源文件 JSFL
2011-09-22 22:58 0发布文件夹里的所有flash.jsfl var fol ...
相关推荐
as3写的粒子与贝塞尔曲线碰撞 希望能给想做线条骑士(line rider)游戏的朋友有一定帮助
ASF流HTTP封装格式的研究,赵莎,,流媒体文件在通信系统中传送,需要封装在对应协议数据包中,但不同协议封装ASF流的格式的大不相同,本文从流媒体应用的角度出发,
IAS2021年推文趋势和信息流广告研究报告(英文)2021.6(19页).pdf
在LHC的ATLAS探测器使用积分光度为3.2 fb -1的数据集,研究了质子-质子碰撞中质子-质子碰撞中质子-质子碰撞中的射流与动力学的关系,并使用LLAS的ATLAS探测器进行了研究。 光子必须具有超过125 GeV的横向能量。 使用...
PPStream 是一套完整的基于 P2P 技术的流媒体大规模应用解决方案,包括流媒体编码、发布、广播、播放和超大规模用户直播。 能够为宽带用户提供稳定和流畅的视频直播节目。与传统的流媒体相比, PPStream 采用了P2P-...
在深入解析ASF(Advanced Streaming Format)文件内部结构的基础上,介绍使用Visual C 来实现对ASF文件的编辑,同时实现多媒体间同步的功能。
采用改良的乳化冷冻凝聚法制备As2O3磁性纳米微球,用能谱仪、透射电镜、原子荧光分光光度计、原子吸收分光光度计、图像分析仪和动力渗析系统等进行特性研究。结果显示所制备的As2O3磁性纳米微球近似球形,粒径为...
在分析ASF文件的组成及结构并介绍一些常见的同步方法的基础上,给出了一种基于参考点的多媒体间同步方案,并分析了此方案的优缺点。
结果表明当煤在330 MW煤粉炉燃烧的时候,底渣、飞灰、烟气中的As排放对环境的影响值分别是3.28×10-6、2.68×10-5、3.89×10-3,底渣、飞灰、烟气中的Pb排放对环境的影响值分别是8.57×10-6、6.00×10-5、4.83×10-2。...
通过对基本的流量标记,特别是在...理论分析和仿真实验表明,CATSW3CM与CATC相比,不仅提高了AS TCP流的平均吞吐量,而且增强了吞吐量的稳定性,提高了AS TCP流之间占用带宽的公平性,并且更为简单,具有很好的扩展性。
数据可视化在数据分析和科学研究中起着重要的作用。Matplotlib是一个流行的Python数据可视化库,提供了丰富的绘图工具和函数。在本篇博客中,我们将介绍如何使用Matplotlib绘制一个三维曲面图像,并通过代码实例演示...
研究了载流、KBH4浓度对As和Hg测定的影响。在最佳实验操作条件下,As和Hg检出限分别为0.028 3μg/L、0.017 4μg/L。底泥中As和Hg的加标回收率分别为89.7%~112.6%和91.7%~110.8%,相对标准偏差分别为...
对于层流拟阵具有常数的问题,我们给出了第一个多项式时间近似方案(PTAS)深度。 我们的方法基于对线性规划松弛层次结构的解决方案进行舍入,该解决方案以任何精度近似最佳在线解决方案,加上显示舍入会导致小的...
1 Linux中流数据的操作 在本设计中,数据在整个系统中是以流数据的形式存在的,Linux内核为流数据提供了一个标准的编程接口,...在本系统中采用了开放的ASF流格式。压缩后的视频数据在传输前需要对其进行ASF编码。A
针对城市污泥焚烧面临的重金属污染严重等问题,提出了在城市污泥中掺烧生物质解决重金属污染的新方法,并利用5 k W鼓泡流化床进行试验研究,考查城市污泥掺烧生物质过程中重金属的含量和形态分布特性及燃烧飞灰中重金属...
设计一种网络多媒体监控系统,研究该系统的组成结构及软件实现关键技术——流媒体传输技术和Windows Socket套接字技术.借鉴流媒体和Browser/server(B/S)模式的思想,利用Windows Media Format开发包(WMFSDK)将实时...
结果表明,传输服务提供商和接入服务提供商的域间流量与对等连接策略之间存在较强的关联,而内容服务提供商的域间流量与对等连接策略的关联性较弱,主要采取开放式对等连接。根据服务提供商在信息流传输中的作用,...
在受大量采矿活动影响的富金流域的一条河流和两条河流中,比较研究了水质参数以及水和沉积物中重金属的时空变化。 从2010年11月到2011年10月的12个月期间,每月从所研究溪流的上游(未开采)和下游(开采)部分采集...
Minas Gerais天主教大学(PUC-MG)使用Python 3以及关系和非关系数据库(Oracle,MongoDB,Redis,Neo4J)的脚本和笔记本存储库,用于数据科学和大数据的毕业后研究) 技术涵盖 的Python 3 NumPy 大熊猫 ...
为实现对P2P-TV应用的实时内容检测,简要介绍了P2P-TV监控系统对P2P-TV平台与频道的精细识别,针对PPTV采用ASF流媒体格式进行数据流传输、节点之间通过UDP协议获取数据,在精确识别出平台与频道的基础上,识别出数据...