as3 rollOver or mouseOver使用说明_Flash as3

所以当监听MouseEvent.ROLL_OVER事件后,鼠标移动到panel的几个按钮时,程序仍然认为鼠标悬停在panel上方。假设我们监听MouseEvent.MOUSE_OVER, 随着鼠标移到panel的按钮上,程序立刻判断鼠标离开了panel,已经到了按钮上方——这个结果不是我们需要的,此时本应去单击按钮,结果程序判断鼠标离开panel,会直接removeChild或者visible=false。

关于冒泡的话,不得不提AS3的事件流,简单的说就是一个捕捉——目标——冒泡的循环过程:事件发生后,先从显示层中的根容器开始往下层级逐个捕捉直至到达派发事件的目标对象后向上返回冒泡,而这一事件中的target属性始终指向最内层的派发事件目标,currentTarget则顾名思义指向事件流中当前所在的对象。
事件发生后,从根节点到目标节点的父节点,这中间所有节点都有两次机会可以响应事件,分别在捕获和冒泡阶段。在事件流经过的任意节点上注册侦听器都会触发。当然前提是打开了捕获和冒泡功能。

默认情况下,捕获功能处于关闭状态,因为实际开发中,监听目标很明确,没必要捕获。
而事件只有在bubbles属性为true时才进行冒泡,默认冒泡的事件包括:change,click,doubleClick,keyDown,keyUp,mouseDown,mouseUp。一旦捕获打开,默认的冒泡将被取消。
因此在同一个监听器中不能同时打开捕获和冒泡,只能注册两个监听一个开捕获一个开冒泡才行。
只有可视化对象(容器,控件)才有捕获和冒泡阶段,而像XML,WebService等非可视化对象只有目标阶段。

注册侦听器方法为:
addEventListener(type:String, listener:Function, useCapture:Boolean=false, priority:int=0, useWeakReference:Boolean=false)
useCapture即为是否打开捕获功能,
priority为优先级设定,当有多个侦听器时,priority越大,优先级越高越先调用,如果同级的话则按注册的顺序来调用。这里注意即使优先级有先后也无法保证后一个侦听调用执行时前一个侦听函数已执行完毕。
useWeakReference为弱引用开关,推荐设为true,便于垃圾自动回收。但最规范的还是直接removeEventListener。注意当注册监听器打开了捕获,则removeEventListener(type:String, listener:Function, useCapture:Boolean=false)的useCapture必须设为true,否则无效

事件对象的构造方法为:
Event(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
bubbles即为是否冒泡
cancelable为true时可以调用PreventDefault方法停止系统默认的行为。比如输入文本,默认行为会马上显示在文本区,当cancelable为true时调用PreventDefault方法让字符不出现。
另外,Event还有两个方法可以停止事件流的继续传播,stopPropagation和stopImmediatePropagation,区别在于前者不会停止正在处理的对象。而后者还会停止同一object上的其他侦听器。

时间: 2024-09-12 21:05:26

as3 rollOver or mouseOver使用说明_Flash as3的相关文章

编写高效率的AS3代码的小技巧_Flash as3

下面是我的一些测试结果 Array & Object constructing 构造数组和对象的时候,new Array() and new Object()要比 [] and {}慢3倍的时间 Index Number type for Arrays 数组的数字索引类型 ist[int(0)] 比list[0]要快 Create Array vs. Updating Array 再循环语句中避免多次创建数组,最好创建一次用多次更新内容替换Nulling Array vs. Splicing A

flash PureMVC 使用例子_Flash as3

此例环境:flash cs3链接PureMVC类<编辑->首选参数->ActionScript->ActioScript 3.0 设置(加上你的下载的PureMVC类包), PureMVC下载地址>开始动手喽~1, 在flash里准备一下要显示层的东东: 此例就画了一个背景方框, 添加一个动态的TextField命名为txt, 然后绑定一个类AppTextField.as; AppTextField.as里需要接收一个字符串并显示出来, 些字符串数据就是来自于数据层的(后面有

ActionScript 3.0 编程体验_Flash as3

如图1所示.在这个版本中最为显著的改变就是增加了对ActionScript 3.0的支持,而界面和Flash 8相比并没有任何改动.Flash 9预览版只是为我们提供了一个ActionScript 3.0开发环境,相信在正式版中还有更多改变和新增功能.在本文中,我们将一起来体验使用Flash 9预览版编译ActionScript 3.0的新功能. 图1 一.新增功能 使用Flash 9预览版可以让我们编译包含或者导入到Fla文件中的ActionScript 3.0脚本,利用直接添加在关键帧上或与

Actionscript 3.0 鼠标事件_Flash as3

关于Actionscript 3.0的事件机制,以后分模块一个一个介绍,最后形成一个完整的文档.看了第一章,就说说鼠标事件,顺便说下我遇到的一个问题.Actionscript 3.0鼠标事件无非就是监听和捕获鼠标事件,比如Click,DoubleClick等,AS3中鼠标事件包是在flash.events.MouseEvent中. 在这里贴一个简单ActionScript 3.0实现写字板程序代码,结合代码来理解鼠标的监听,捕获处理过程. 复制代码 代码如下: package { import

as3+xml+asp+access做的有奖问答_Flash as3

XML部份 复制代码 代码如下: <?xml version="1.0" encoding="utf-8"?> <li> <id> <pp>1.中国114黄页贵港站的网址是?</pp> <aa>www.gg114chn.com</aa> <aa>gg.114chn.com</aa> <aa>www.114chn.com</aa> <

Google Analytics在Flash cs3下的使用教程分析_Flash as3

这是Google的相关说明(http://code.google.com/intl/zh-CN/apis/analytics/docs/flashTrackingIntro.html),大家有兴趣可以去看一下,我这里做了一个教程,教大家一步一步的使用这个组件.一.申请Gmail帐户因为这个组件获取的数据是跟帐户捆绑的,所以,需要有一个Gmail帐户.打开http://www.google.cn/analytics/zh-CN/ ,选择立即注册,然后选择立即注册然后填好信息后,点'我接受:创建我的

AS3 中的package(包)应用实例代码_Flash as3

包(package)的概念在AS2中就已经存在,它表示硬盘中的一个目录结构,该目录结构是用来分类存贮各种类文件的.在AS3中这个概念仍旧可以理解为是一个路径,或是目录结构,包的名称也就是你的类所在的目录位置. 如果类文件和fla文件保存在同一个目录位置中,那么就不需要为"包"指定一个名字.比如:我们先建立这样一个 MyMsg.as 类定义文件,文件中输入以下的代码: package {     public class MyMsg {          public function 

Actionscript 3.0中Singleton实现 修正篇_Flash as3

在前面的blog中,代码如下: 复制代码 代码如下: package Src { /** * Written by Leezhm, 10th February, 2009 * Contact : Leezhm@126.com * * An example of singleton class **/ public class CSingleton { // variable private static var _instance = new CSingleton(); protected fu

AS3自写类整理笔记:ByteLoader类_Flash as3

index.base.net.byteLoader类讲解: 基本功能按字节加载图片,swf等 构造函数 public function ByteLoader(url:String = "") 如果传入了参数url,则立即执行加载! load 加载方法 public function load(_url:String):void 开始加载,_url是加载的地址 updata 更新数据方法 public function updata():void 更新缓冲区的可读字节 close 关闭方