`
iamzealotwang
  • 浏览: 118622 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

As3 Event

    博客分类:
  • As3
阅读更多

target 属性:

 

target 属性包含对作为事件目标的对象的引用。在某些情况下,这很简单,例如当麦克风变
为活动状态时,事件对象的目标是 Microphone 对象。但是,如果目标在显示列表中,则必
须考虑显示列表层次结构。
例如,如果用户在包括重叠的显示列表对象的某一点输入一个鼠
标单击,则 Flash Player 始终会选择距离舞台层次最深的对象作为事件目标。 

对于复杂的 SWF 文件,特别是那些通常使用更小的子对象来修饰按钮的 SWF 文件,
target 属性可能并不常用,因为它通常指向按钮的子对象,而不是按钮。在这些情况下,常
见的做法是将事件侦听器添加到按钮并使用 currentTarget 属性,因为该属性指向按钮,而
target 属性可能指向按钮的子对象。

 

ActionScript 3.0 中包括它是为了在组织事件侦听器时提供更大的灵活性。调用
addEventListener() 时,可以将一个整数值作为 priority 参数传递,以设置该事件侦听
器的优先级。默认值为 0,但您可以将它设置为负整数值或正整数值。将优先执行此数字较
大的事件侦听器。对于具有相同优先级的事件侦听器,则按它们的添加顺序执行,因此将优
先执行较早添加的侦听器。

 

从概念上来说,事件流分为三部分。

第一部分称为捕获阶段,该阶段包括从舞台到目标节点的父节点范围内的所有节点。

第二部分称为目标阶段,该阶段仅包括目标节点。

第三部分称为冒泡阶段。冒泡阶段包括从目标节点的父节点返回到舞台的行程中遇到的节点。

 

Example:

定义一个Event类型Class:

ActionScript 3语言:
package
{
  import flash.events.Event;

  /**
   * When user want to user Event , then create a class extends
   * flash.events.Event
   */
  public class UserEvent extends Event
  {
    public static const EVENT_TEST:String="EventTest";

    private var _message:String;
    /**
     * @param type              定义该Event的Type值,外部addListener通过该值确定是否监听该Event
     * @param bubbles        此Event是否参与冒泡阶段
     *  bubbles 属性
     *  如果事件对象参与事件流的冒泡阶段,则将该事件称为 “冒泡” ,这指的是从目标节点将事
     *  件对象往回传递,经过目标节点的父节点,直到到达舞台。Event.bubbles 属性存储一个布
     *  尔值,用于指示事件对象是否参与冒泡阶段。由于冒泡的所有事件还参与捕获和目标阶段,
     *  因此这些事件参与事件流的所有三个阶段。如果值为 true,则事件对象参与所有三个阶段。
     *  如果值为 false,则事件对象不参与冒泡阶段。
     *
     * @param cancelable
     *
     */
    public function UserEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
    {
      super(type, bubbles, cancelable);
    }

    public function get message():String{ return _message; }
    public function set message(v:String):void{ _message=v; }
  }
}

 

 

定义EventReceive:

 

ActionScript 3语言:
package
{
  import flash.display.Sprite;

  public class EventReceiver extends Sprite
  {
    private var receiverName:String;
    public function EventReceiver(_name:String)
    {
      super();
      this.receiverName = _name;
      this.addEventListener(UserEvent.EVENT_TEST , onEvent);
    }

    public function sendEvent():void{
      var userEvent:UserEvent = new UserEvent(UserEvent.EVENT_TEST ,true); //①
      userEvent.message = "(**&&**)";
      this.dispatchEvent( userEvent );
    }

    private function onEvent(e:UserEvent):void{
      trace(receiverName + " receive message :"+ e.message );
    }
  }
}

Main:

ActionScript 3语言:
package
{
  import flash.display.Sprite;

  public class TestEvent extends Sprite
  {
    public function TestEvent()
    {
       var node1:EventReceiver = new EventReceiver("Node1");
       var node11:EventReceiver = new EventReceiver("Node11");
       var node12:EventReceiver = new EventReceiver("Node12");
       var node121:EventReceiver = new EventReceiver("Node121");
       var node13:EventReceiver = new EventReceiver("Node13");
       var node2:EventReceiver = new EventReceiver("Node12");

       this.addChild(node1);
       this.addChild(node2);

       node1.addChild(node11);
       node1.addChild(node12);
       node1.addChild(node13);
       node12.addChild(node121);
       node12.sendEvent();
    }
  }
}

整体树结构

Stage---Node1

               --------------Node11

               --------------Node12  //发送事件(事件产生)

                         -------------------Node121

        ---Node2

运行结果

Node12 receive message :(**&&**)
Node1 receive message :(**&&**)

 

结果分析:

1· 由于事件不是由舞台操作(点击鼠标,键盘操作等)导致的事件触发 所以事件的捕获阶段并不存在

   捕获节点应为从舞台到事件发生点的阶段,若存在应为Stage--->Node1----->Nodel12

2· 第一行Node12 receive message :(**&&**) Trace出来消息属于事件流第二部分 这部分仅包括事件目标阶段

3· 第二行Node1 receive message :(**&&**) Trace消息之所以存在是因为 在①中 设置bubbles属性为True及Event参与冒泡阶段,所以Node1可以接收到Node12冒泡到Stage回来的消息

 

 

 

 

分享到:
评论

相关推荐

    很好的flash as3 event 例子

    点那个长方形,消失。 在flash cs4运行

    AS3中的EVENT

    原文件下载 博文链接:https://mzlilei.iteye.com/blog/173944

    flash as3 的例子

    不错的flash as3例子 event

    As3 Tween Library

    TweenMax extends the extremely lightweight, fast TweenLite engine, adding many useful features like timeScale, AS3 event dispatching, updateTo(), yoyo

    Processing-Event-System:用于处理的类 AS3 事件

    #Processing-Event-System 这是尝试创建一个事件系统以进行,该系统以 ActionScript 3 事件系统为模型。 它提供了通过事件松散地连接和断开不同类的能力,事件可以“监听”事件并在发生事件时调用函数。 这是正在...

    AS3代码 心跳

    AS3代码 心跳 package { import flash.display.Sprite; import flash.events.Event; public class Pulse extends Sprite { private var ball:Ball; private var angle:Number = 0; private var ...

    as3比较详尽的工具类

    ButtonEvent.as ---------------------- button相关的事件 FLVEvent.as ---------------------- FLV相关的事件 LoadEvent.as ---------------------- load相关的事件 ListEvent.as ---------------------- list...

    EventLog_Analyzer.zip

    IBM AS/400日志报表 VMware服务器日志报表 活动目录日志报表 特权用户监控报表 用户会话监控 事件日志监控 - 问答报表 历史事件趋势 搜索结果报表 安全信息管理 管理网络安全信息 无代理的采集日志方式 基于代理的...

    c++ event示例

    If the client wants to handle an event, it has to create an instance of your class with the constructor that has a function pointer as the argument. The second way is to call a class member function...

    Event Processing in Action PDF

    Unlike traditional information systems which work by issuing requests and waiting for responses, event-driven systems are designed to process events as they occur, allowing the system to observe, ...

    用AS3编写的萤火虫效果代码

    用AS3.0编写的萤火虫随机飞舞代码,初学者代码交流,使用随机数及Event.ENTER_FRAME事件制作,文档类、内容类……

    Eventsource-masterPHP事件源库.zip

    use Hoa\Exception as HoaException; /**  * Class \Hoa\Eventsource\Exception.  *  * Extending the \Hoa\Exception\Exception class.  *  * @copyright Copyright © 2007-2017 Hoa ...

    AS事件侦听案例,源码

    初级AS3学习,AS3.0的EventListener事件侦听

    Discrete-Event Modeling and Simulation: a practitioners approach

    They also demonstrate how to map different modeling techniques, such as Finite State Machines and VHDL, to DEVS. The in-depth coverage elaborates on the creation of simulation software for DEVS ...

    Object-Oriented.Programming.Languages.And.Event-Driven.Programming.epub )

    Provides broad-based coverage of all languages, imparting essential skills as well as an appreciation for each language’s design philosophy Includes chapter summary, review questions, and exercises ...

    adobe starling as3 flash 3d Starling演讲PPT以及附件

    内容包括AS3 项目源文件两个 包含PDF中提到的例子 以及运行效果SWF10个 在Stage3D出现之前,Flash3D引擎( Papervision3D, Away3D,…)都是软解 CPU是通用处理器,没有为渲染三角形而优化过 Stage3D是一个新的Flash...

    as3 水果机案例 源码 滚动

    通过按钮来控制Event.EnterFrame 动作的快慢等等。 这里有个定位层,在程序中有段代码 这里的函数我使用的还不够熟悉localToGlobal和 var poin1:Point = slot1.localToGlobal(new Point(get_rec(luck,slot1).x,...

    event.currentTarget与event.target的区别介绍

    event.currentTarget identifies the current target for the event, as the event traverses the DOM. It always refers to the element the event handler has been attached to as opposed to event.target which...

Global site tag (gtag.js) - Google Analytics