- 浏览: 84993 次
- 性别:
- 来自: 北京
最新评论
-
A5121612886:
好文要顶!
Flash Builder 编译器选项 -
谁在哀伤望月:
非常好,谢谢分享
Flash builder4 插件终极破解方法
在群里有人问了个问题:
为什么我把父剪辑的 mouseEnabled 设置为 false 但父剪辑还是可以侦听到 鼠标事件?
很有意思的一个问题,不是么!
AS3 里使用了事件流机制。简单说来一个完整的事件流应该从 Flash Player 到目标然后再回到 Flash Player。我们用一个简单的例子看看如何描述这个问题。
假如有如下结构的SWF文件,场景里有一个MovieClip(以下简称MC) A,A 里面包含一个名为 B 的MC,B 里面又包含 MC D。 有些复杂了,还是画个简单的图吧。
|-stage
..|-A
….|-B
……|-D
然后我们假设 D 触发了CLICK 事件,那么事件流程应该是:
stage -> A -> B -> D -> B -> A -> stage
这里有几个定义, 先看这一段:[ stage -> A -> B ], 这段在事件流当中我们定义为 捕获阶段(是否记得addEventListener的第三个参数?);
我们触发事件的对象 [ D ] 也给它定义一个阶段,命名为:目标阶段;
最后 [ B -> A -> stage ] 这阶段定义为 冒泡阶段。
PS:小建议,如果觉得搞不清为什么事件为什么会从stage跑到目标再回到stage这样的问题的话,还是别去管它了。只要记住不管这个事件在哪里发生, 总是会从stage 出发,然后找到触发事件的对象,再回到stage。
这样,一个完整的事件流由 捕获, 目标和冒泡 这三个阶段构成。
更多事件流的信息请访问黑羽博客:http://www.kingda.org/archives/kingda/2006/07/as305.html
扯了这么远,回到开始的话题。
当 我们设置对象的 mouseEnabled 值的时候,它只影响对象本身不会触发事件,但这并不影响对象在事件件中的地位。也就是说当对象的子对象触发鼠标事件的时候,自身也会伴随发送事件。想想整 个事件流,也就不难理解为什么我把父剪辑的 mouseEnabled 设置为 false 但父剪辑还是可以侦听到 鼠标事件。
所以,要禁止一个对象的触发交互事件,完整的做法是 mouseEnabled=false; mosueChildren=false; 同时设置这两个值。
好了,说了一堆全是文字。动手试一下:
- 在场景里画一个圆,选个红色或是什么的,保存为影片剪辑;
- 继续在场景里画一个方框,颜色和前面的圆区分开就行,位置最好重叠;
- 同时选中的圆(影片剪辑)和刚画好的方框,保存影片剪辑;
- 再在主时间轴上添加代码:getChildAt(0).addEventListener(MouseEevnt.MOUSE_OVER, function (e){trace(“overed”);});
- Ctrl+ENTER 运行测试,看看运行效果。
- 再添加一行代码:getChildAt(0).mouseEnabled = false;
- 再测试运行。是不是注意到区别了呢?
发表评论
-
全面提升你的程序效率 之细说 bitmapdata AS3 Bitmap 抠图(透明部分)和碰撞(点击)检测
2012-06-05 09:54 7176如果你是刚接触as编程 ... -
PureMVC MultiCore报错 multitonKey for this Notifier not yet initialized!
2012-05-23 16:08 992multitonKey for this Notifier n ... -
关于优化
2012-05-21 14:58 9761. Avoid the new operator whe ... -
AS3经验之谈
2012-05-11 10:56 1092【改变输出swf的尺度,背景颜色 ... -
AS3动态获得类名及类的方法
2012-05-08 13:50 28141.获得某个实例对象的类名:getQualifiedClass ... -
Flex 应用内存泄露的分析与诊断
2012-05-03 11:32 706http://www.ibm.com/developerwor ... -
Flash Builder 编译器选项
2012-05-02 10:30 6387-benchmark 输出性 ... -
【AS3】为什么AS3.0事件流机制会有捕获阶段、目标阶段、冒泡阶段三个阶段
2012-04-26 10:03 3823原问题:事件机制有三个步骤,捕获,目标和冒泡。请问,在目标阶段 ... -
Socket+AMF3粘包问题
2012-04-17 10:05 1804问题: 服务端Mina 前台接收Flex 参照的 ... -
AS3事件中target和currentTarget的区别
2012-04-12 15:40 1926在事件处理过程中,会 ... -
ActionScript垃圾回收
2012-04-12 15:04 1401在《给AS程序员的一点建议一文 》中我提到了释放资源的重 ... -
updateAfterEvent的作用
2012-04-10 17:26 1230flash中一共有三个类具 ... -
深入理解flash重绘
2012-04-10 17:21 1172Flash Player 会以SWF内 ... -
[AS3]registerClassAlias的用法
2012-03-20 10:35 1082registerClassAlias在利用AMF3进行序列话网 ... -
navigateToURL
2012-03-09 15:51 1161navigateToURL整理总结一些关于navigate ... -
flash中cacheAsBitmap的使用
2012-03-09 11:59 814缓存显示对象 如果 Flash 中的设计尺寸增大,无论创建 ... -
Debug和Release之本质区别
2012-02-27 11:41 1171关于Debug和Release之本质区别 使用条件编译来完成区 ... -
AS3中super的用法[转自A闪]
2012-02-13 10:19 1224super它到底是什么?这是我第一个问题,在帮助中石这样说明的 ... -
AS3.0的Dictionary类
2012-02-10 11:00 815AS3中的Dictionary类(flash. ... -
AS3中public internal private protected的区别
2012-02-10 10:43 2532protected Java與AS3中的 ...
相关推荐
深入了解as3事件流,阐明target和currentTarget属性的区别与应用
AS3 特效 demo 鼠标事件 鼠标顶球
张志晨:as3语言,最为典型的自定义事件 模板,可以自己修改并扩充。
AS3 多点旋转缩放类 适合多点触发
Flash AS3 动态注册点 类 任意点旋转Flash AS3 动态注册点 类 任意点旋转Flash AS3 动态注册点 类 任意点旋转Flash AS3 动态注册点 类 任意点旋转Flash AS3 动态...类 任意点旋转Flash AS3 动态注册点 类 任意点旋转
来自《潮汕IT男》网站的文章《解决flash/flex/as3 访问中文域名时的流错误》代码示例,地址:http://chenlinsheng.com/?p=990
基于as3的多点触摸学习源码,易上手 ,方便。
AS3、flash基础知识,非常适合新手学习。
flash AS3 AS3简单教程 AS3简单实例 AS3简单鼠标键盘事件
as3swf AS3库
可以学习as3事件机制的源码,里面有嵌套了3个sprite。
as3 3D螺旋相册 as3 3D螺旋相册 as3 3D螺旋相册
Flash as3调用外部AS脚本 很小的示例
as3动态修改对象注册点的类库,与相应实例应用
开源as3基础类库as3isolib as3isolib is a great isometric library for actionscript 3 by Justin Opitz. This is a lower level isometric library that could be used in
使as3事件支持参数的代理类,通常as3的事件只能调一个方法,不能传参数,如: addEventListener(MouseEvent.MOUSE_DOWN, mouseDowV);
as3实现播放.wav扩展名的声音文件 as3实现flash与javascript(js)的通讯 要引用: import de.popforge.audio.output.SoundFactory; import de.popforge.audio.output.Audio;
As3.0+Away3d+as3dmod超炫3D相册 立体感超强3D环形相册 效果:http://blog.csdn.net/he_wen_jian/article/details/21695711
AS3滚动条,可自定义横向还是竖向,带源码
as3读取excel的类包,用flex读取excel文件