`
demojava
  • 浏览: 548917 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

AsEvent事件小计

阅读更多

事件:

import mx.Events.PropertyChangeEvent;
import mx.Binding.utils.*;
import mx.Events.FlexEvent;

public var thiswatcher:ChangeWatcher;
public function initFunction():void
{
watchInit();
}
public function watchInit():void
{
 thiswatcher=ChangeWatcher.watch(textInput,"text" func);
// 告诉ChangeWatcher去监听那些变化
}
public function stopEvent():void
{
 if(thiswatch.isWatching())
 {
  thiswatcher.unwatch();//取消监听
 }
}
public function func():void
{
mylable.text=textInput.text;
}

 
//移除事件监听器 在mxml中定义的定义的事件必须使用removeEventListener();

来实现

import mx.controle.Alert;
[Bindable]
public var labeltext:Stirng="hello word";
public var count:Number=0;
public function  clickFunction(event:Event):void
{
var messag:String="hello "+event.target.label;
Alert.show(message);
}
public function addEvent():void
{
 if(myButtion.hasEventListener(MousEvetn.MOUS_OVER))
 {
  myButtion.removeEventListener

(MousEvetn.MOUS_OVER,changeLabel);
  count=0;
  labeltext="remove";
 }else
 {
  myButton.addEventListener

(MousEvetn.MOUS_OVER,changeLabel);

 }
}

public function changeLabel(event:MouseEvent):void
{
 count++;
}

 

//自定义事件

import flash.events.Event;
import mx.controls.Alert;
public function initFunction():void
{
 mybuttion.addEventListener("newEvent",respondEvent);
}
public function doEvent():void //click="doEvent"
{
 mybutton.dispatchEvent(new Event("newEvent"));
}
public function respondEvent(e:Event):void 
{
 Alert.show(e.type);
}

 

//自定义事件
 import flash.events.Event;
public class TestEvent extends Event
{
       public static const  TEST_EVENT:String="TEST_EVENT";//事件类型
   public var data:Object; //存储事件附加信息
   /**
    *自定义事件的构造器
    */
   public function TestEvent(type:String, bubbles:Boolean = false,

cancelable:Boolean = false)
  {
      super(type,bubbles,cancelable);
  }
} //end class

import flash.events.EventDispatcher;
import mx.controls.Alert;
public class TestEventDispacher extends EventDispatcher
{
 public function TestEventDispacher()
    {
     super();
//将onTestEvent成员函数作为该对象所派发的TestEvent事件的侦听//器以处理

传递给该事件
 this.addEventListener(TestEvent.TEST_EVENT,onTestEvent);
 }

 public function createAndDispatchTestEvent():void
    {
      //创建一个新事件对象,在被调度之前,事件对象的target属性为null
  var testEvent:TestEvent=new TestEvent(TestEvent.TEST_EVENT);
      //为事件添加附加信息data
  testEvent.data="this is a test event";
  //调度该事件,该方法执行后,事件的target属性被设置为
 // 执行该方法的TestEventDispacher对象。
      this.dispatchEvent(testEvent);
      Alert.show("当testEvent对象所有侦听器都执行完毕你才会看到我!");
    }
  //事件侦听器,用来对侦听到的事件进行处理。
private function onTestEvent(event:TestEvent):void
    {
   //在控制台中打印侦听器侦听到的TestEvent事件对象data属性中所存//储的

事件附加信息
 Alert.show(event.data.toString());
    }
}//end class
private function doOnButtonClick():void
{
 var ted:TestEventDispacher=new TestEventDispacher();
 ted.createAndDispatchTestEvent();  
}
在任何事件阶段都可以使用stopPropagation()和sotpimmediatePropagation();
这两个方法的本质上都是想相同的,区别在余是否允许同一个组件上
的其它时间按侦听器接受相应的事件换句话说,如果在事件上调用

evet.stopPropagation()
方法它会在给定的组件上的所有其它事件的侦听器完成对这个时间的响应之后停

止事件的传播
如果使用sotpimmediatePropagation();方法实践会在传播到其它任何事件侦听器

之前被终止,即使这些事件
侦听器侦听的是同一个组件

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" 

layout="absolute"  creationComplete="initFunction()">
 <mx:Script>
  <![CDATA[
import mx.controls.Alert;
public function initFunction():void
{
 mybutton.addEventListener("click",respondToEvent,false,100);//

添加带有最高优先级的事件侦听器
 myHBox.addEventListener("click",parentEventResponse,false,0);
}
public function respondToEvent(e:Event):void 
{
 var msg:String="this is the first responder";
 Alert.show(msg,"first event listener");
 e.stopImmediatePropagation();
}
public function responedEventClick(e:Event):void
{
 Alert.show("this is the mxml click Event");
}

public function parentEventResponse(e:Event):void
{
 Alert.show("you shoud never see ths alert","parent Event 

Response");
}
  ]]>
 </mx:Script>
 <mx:HBox x="158" y="180" width="291" height="165" id="myHBox">
  <mx:Button label="Button" id="mybutton" 

click="responedEventClick(event)"/>
 </mx:HBox>
</mx:Application>

 

如果把e.stopPropagation()修改成e.stopImmediatePropagation();
结果看到的是一个警告e.stopImmediateP事件ropagation()方法会在第一个事件

侦听器执行完毕后
立即终止传播而e.stopPropagation();终止当前的事件传播
stopImmediatePropagation():void
防止对事件流中当前节点中和所有后续节点中的事件侦听器进行处理。防止对事

件流中当前节点中和所有后续节点中的事件侦听器进行处理。此方法会立即生效

,并且会影响当前节点中的事件侦听器。相比之下,在当前节点中的所有事件侦

听器都完成处理之前,stopPropagation() 方法不会生效。
stopPropagation():void
防止对事件流中当前节点的后续节点中的所有事件侦听器进行处理。防止对事件

流中当前节点的后续节点中的所有事件侦听器进行处理。 此方法不会影响当前节

点 (currentTarget) 中的任何事件侦听器。相比之下,

stopImmediatePropagation() 方法可以防止对当前节点中和后续节点中的事件侦

听器进行处理。 对此方法的其它调用没有任何效果。可以在事件流的任何阶段中

调用此方法。

如果使用 e.stopPropagation(),结果
 btn  click
hbox  click
否则如果没有使用的话,
btn  click
hbox  click
pan  click
stage  click
//主键添加元数据
<mx:Metadate>
 [Event(name="customButtonClick",true)]
</mx:Metadate>
this.dispatchEvent(new Event("customButtonClick"),true);

相关code:

 

<?xml version="1.0" encoding="utf-8"?>
<mx:VBox xmlns="*" xmlns:mx="http://www.adobe.com/2006/mxml">
  <mx:Metadata> 
        [Event(name="customButtonClick", type="flash.events.Event")] 
    </mx:Metadata> 
    
    <mx:Script>
     <![CDATA[
      
      public function doCustomEvent():void {
       
       this.dispatchEvent(new Event("customButtonClick",true));
      }
     ]]>
    </mx:Script>
    
    <mx:Button id="myButton" label="click me to dispatch custom event" click="doCustomEvent()"/>
</mx:VBox>

 

------------------------------------------------------------------------------------------------------

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" xmlns:comp="components.*">
 
 <mx:Script>
  <![CDATA[
   
   import mx.controls.Alert;
   
   public function doAlert(e:Event):void {
    
    Alert.show("this is the alert thrown from the parent app in response to component custom event","component custom event");
   }
  ]]>
 </mx:Script>
 <comp:CustomEventMeta customButtonClick="doAlert(event)"/>
</mx:Application>

 

1.不是所有的事件都有三个阶段:Capture,Target,Bubbling。
事件只有在DisplayObject才上有Capturing和Bubbling阶段。

2.Target是派发该事件的对象。CurrentTarget是监听了该事件并正在处理该事

件的对象。

3.Capturing流程:StageàSystemManageràApplicationà…à派发该事件的父对象

4.Bubbling流程:派发该事件的父对象à…àApplicationàSystemManageràStage

5.在mxml标签中定义的事件监听器是无法用removeEventListener()去掉的,并

且无法设置useCapture和priority属性。

6.用removeEventListener()去掉未添加的事件器时是不会报错的,所有无需用

hasEventListener()判断,但添加时需要判断,否则可能会添加多次。

7.Priority越大的监听器,越先执行。

8.weakRef对于非内嵌函数没用。

9.一个对象可以给同一个事件多个监听器:

假如按添加顺序是eventListener1,eventListener2和eventListener3。

eventListener1没有调stopPropagation()和stopImmediatePropagation()方法。

假设eventListener2调了其中的stopPropatation(),则eventListener3还会继续

执行。但如果eventListener2调的是stopImmediatePropagation(),则

eventListener3不会继续执行。

10.removeEventListener()只能一次去掉一个监听器,为同一个事件添加了几个

监听器就需要调几次removeEventListener(),而且参数要相符。

11.hasEventListener()与willTrigger()的区别是:hasEventListener()只检查

它所属的对象,而willTrigge()检查整个事件流以查找由type参数指定的事件。

12.keyCode对应的是key在键盘上的键值,是一个数字;charCode对应的是该key

在当前字符集中的值,也是一个数字。因此就有下面的情况发生:1和!的keyCode

是一样的,但他们的charCode是不一样的。


事件只有在DisplayObject才上有Capturing和Bubbling阶段。

从根节点到叶节点的父对象

从叶节点的父对象到根节点

如果设为true,只有内嵌函数可能会被垃圾回收器处理。

指stopPropagation()和stopImmediatePropagation()

use_capture

包括检查所有的父对象。

keyCode和keyChar都是KeyBoardEvent的属性。

分享到:
评论

相关推荐

    Android应用源码之android姿态传感器源代码_Android.zip

    这些传感器包括加速度计、陀螺仪和磁力计,它们协同工作来检测设备的运动、方向和姿态变化。本篇将深入探讨Android应用中如何利用姿态传感器的源代码。 一、姿态传感器介绍 姿态传感器主要包括以下三种: 1. 加速度...

    python 分析日志(初本)

    在这个例子中,`event_counts`会记录每个事件出现的次数,`most_common()`方法按计数值降序列出事件。 除了基本的统计,还可以使用可视化库如`matplotlib`或`seaborn`创建图表,帮助我们更好地理解数据分布和趋势:...

    Accelerometer

    // 创建一个SensorEventListener来处理加速度计的事件 inner class AccelerometerListener : SensorEventListener { override fun onSensorChanged(event: SensorEvent?) { if (event?.sensor?.type == Sensor....

    使用加速度传感器

    Acceleration := EventData.SensorData as TSensorAcceleration; // 处理Acceleration.X, Acceleration.Y, Acceleration.Z的值 end; ``` 4. **处理异常和关闭传感器**: 在不再需要加速度传感器时,记得停止监听...

    EDA复习.docx

    5. 下载和硬件测试:将生成的配置文件(如.sof for JTAG或.pof for AS)下载到目标设备,并进行硬件测试。 【VHDL基础知识】 VHDL是一种超高速集成电路硬件描述语言,用于描述数字系统。VHDL的组成部分包括: 1. ...

    javascript 打字效果的文字特效

    - `event.button` 属性:在 `onMousedown` 事件处理函数中,`event.button` 可以获取用户按下的是哪个鼠标按钮。这在某些交互设计中可能会用到,但并非打字效果的核心部分。 5. 页面加载事件: `onLoad` 事件在...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    为小黑点。 loginDlg::loginDlg(QWidget *parent) : QDialog(parent), m_ui(new Ui::loginDlg) { m_ui-&gt;setupUi(this); m_ui-&gt;pwdLineEdit-&gt;setEchoMode(QLineEdit::Password); } 效果如下: 11.如果输入如下图中的...

    浅析MySQL之字符串函数

    此外,MySQL还提供了事件调度器(Event Scheduler)来实现定时任务,如定期备份、数据清理等,以及对用户权限的管理,包括添加、删除用户以及分配权限等。通过学习和掌握这些功能,你可以更好地管理和优化你的MySQL...

    javascript Window及document对象详细整理

    1. `window.event`:事件对象,提供有关发生的事件的信息。 2. `window.document`:指向Document对象,用于操作网页内容。 3. `window.history`:处理浏览器的历史记录。 4. `window.screen`:提供关于用户屏幕的...

    英语六级核心词汇.doc

    - **例句**:It’s not appropriate to wear casual clothes to a formal event. ##### authentic α. 可靠的/可信的 - **定义**:真实可靠,未被伪造或更改。 - **例句**:The antique dealer claimed that the ...

Global site tag (gtag.js) - Google Analytics