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

AS3.0事件侦听优先级确定的方法是按顺序线性执行么

 
阅读更多

  AS3.0事件侦听优先级确定的方法是按顺序线性执行么?事后才觉得问这个问题挺白痴的(遭到同事鄙视。。。),脚本执行,不涉及资源加载和远程调用,哪来的异步呢。。。。

  结论是线性执行,不论优先级高的那个方法要执行多久,后面的都会等着,这也提醒我们某个事件处理逻辑和算法写得不要过于复杂,否则会耽误后面的侦听函数执行。所有的侦听函数都被放在EventDispatcher的一个listeners数组里,不过应该是private的,开debug模式强行输出可以看到一些内容。有兴趣的继续看吧:

  我被绕进去,是来源于这段话:“给一个对象注册多个监听器,即使每个监听器的优先级别不同,但也无法保证后一个执行时前面的监听函数已经执行完毕。设计时,后面的函数不应该以前者执行完毕为条件。”---来源于Flex学习笔记_08 Flex的事件机制_高级应用

测试代码如下:  

 public class TestEvent extends Sprite

        {
                private var num:Number = 0;
                public function TestEvent()
                {
                        var testNum:int = 0;
                        for(var i:int = 0; i < 1000000; i ++){
                                testNum += i;
                        }
                        trace("the final num is:" + testNum);
                        initListener();
                        
                }
                private function initListener():void{
                        stage.addEventListener(MouseEvent.MOUSE_DOWN,func2,false,2);
                        stage.addEventListener(MouseEvent.MOUSE_DOWN,func3,false,3);
                }
                private function func2(event:MouseEvent):void{
                        trace("when do fun2,the num is:"+num);
                }
                
                private function func3(event:MouseEvent):void{
                        trace("func3 begin,the num is:" + num);
                        for(var i:int = 0; i < 1000000; i ++){
                                num += i;
                        }
                        trace("func3 complete,the num is:"+num);
                }
输出结果如下:
the final num is:1783293664
func3 begin,the num is:0
func3 complete,the num is:1783293664
when do fun2,the num is:1783293664

参考资料:

AS里事件到底是异步执行还是同步执行

分享到:
评论

相关推荐

    AS3.0载入flv播放并侦听.zip

    在本文中,我们将深入探讨如何使用ActionScript 3.0(AS3.0)通过FLVPlayer组件加载和播放外部的FLV视频文件,并实现基本的播放控制功能,如播放、暂停和监听视频事件。首先,我们需要理解AS3.0的基础知识,它是...

    AS事件侦听案例,源码

    5. **事件监听器优先级**:AS3允许你为事件监听器指定优先级,数值越大优先级越高,先执行。这通过`addEventListener`的第三个可选参数`priority`实现。 在提供的"第02章"压缩包文件中,可能包含了一系列的AS3事件...

    AS3.0语言在Flash编程中的应用

    - **AS3的事件侦听机制**: - 通过`addEventListener()`监听特定事件,如点击或移动。 - **在AS3中改变对象的位置和缩放对象**: - 调用对象的`x`和`y`属性来改变位置。 - 使用`scaleX`和`scaleY`属性缩放对象大小...

    AS2中的侦听器

    在AS2(ActionScript 2.0)中,事件处理是动态交互系统的重要组成部分,而事件侦听器是实现这一机制的关键。事件侦听器允许我们响应特定的事件,如用户点击、对象加载等,而无需不断检查这些事件是否已经发生,这与...

    Flash AS3.0制作飘动的气泡内含详细注释

    在本示例中,我们探讨了如何使用Flash AS3.0来制作飘动的气泡效果。这个程序通过创建多个彩色气泡,并让它们在舞台上随机移动,模拟气泡上升和下降的效果。以下是对关键代码段的详细解释: 1. **自定义函数 ball**...

    [Flash as3.0动画教程]文字版

    ### Flash AS3.0动画教程知识点汇总 #### 一、ActionScript动画基础 **1.1 什么是动画** - **定义**: 动画是通过连续播放一系列图像来产生视觉效果的技术,使静止的图像看起来像在移动或发生变化。 - **原理**: ...

    第六节 事件侦听.docx

    在本节中,我们将深入探讨事件侦听的概念及其在编程中的应用。事件侦听是ActionScript(特别是Flash和Flex)中一个重要的交互处理机制。它允许我们对用户的行为或者对象的状态变化做出响应,例如,当用户点击一个...

    FlashActionScript3.0事件的传递-打枪小游戏的制作.pdf

    "Flash ActionScript 3.0 事件传递-打枪小游戏的制作" 本文档主要介绍了 Flash ActionScript 3.0 事件传递机制的应用,在小游戏的制作中如何使用事件来传递状态变化。事件传递机制是程序设计中的一种重要机制,它...

    matlab开发-单个事件侦听器和Matlabui的SimulinksignalView

    在MATLAB代码生成的上下文中,事件侦听器和Simulink Signal Viewer的结合应用可以帮助开发者优化代码执行,通过实时反馈来调整模型参数,从而提高仿真效率和结果精度。事件侦听器可以捕获模型运行过程中的关键事件,...

    Dojo基础2事件侦听器

    接下来,我们讨论Dojo的事件侦听器方法——`dojo.connect`。这个方法允许我们将一个函数连接到另一个函数上,形成事件监听。例如,`dojo.connect(object, "method", context, "handler")`,其中`object`是目标对象,...

    ActionScript 3.0 开发人员指南 (AS3开发帮助文档)

    ### ActionScript 3.0 开发人员指南精要解析 #### 第 1 章: 使用日期和时间 **管理日历日期和时间** ActionScript 3.0 提供了强大的日期和时间处理功能,主要通过`Date`类实现。这个类支持多种日期和时间格式的...

    非常小且简单的工具类用于将事件侦听器绑定到元素

    在这个假设的`EventTools`类中,`addEventListenerToMultipleElements`方法接收元素的ID数组、事件类型以及事件处理函数,然后批量为这些元素添加事件侦听器,节省了编码时间。 此外,考虑到"其它杂项"的标签,这个...

    as3常用属性语句整理

    在as3.0中,侦听器是处理事件的核心机制。它允许程序员为特定的事件目标(如按钮点击)注册回调函数,从而在事件触发时执行预定义的代码。这极大地增强了交互性,使开发者能够响应用户的输入或其他环境变化。 #####...

    javascript事件侦听器

    JavaScript事件侦听器是JavaScript中处理用户交互或DOM(文档对象模型)变化的关键机制。它允许程序员注册回调函数,以便当特定的事件发生时,这些函数会被调用。事件可以是用户的行为,如点击按钮、鼠标移动,或者...

    vu3 事件侦听和抛送模式

    在这个主题下,我们将深入探讨“Vu3 事件侦听和抛送模式”,特别是关于跨模板使用的事件模式。 1. **事件绑定(Event Binding)**: 在Vue 3中,我们可以使用`.emit`方法来触发事件,而`.on`用于监听事件。相比于...

Global site tag (gtag.js) - Google Analytics