使用ActionScript的单击事件示例

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
  3. xmlns:s="library://ns.adobe.com/flex/spark"
  4. xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600" applicationComplete="init()">
  5. <fx:Script>
  6. <![CDATA[
  7. import mx.controls.Alert;
  8. protected function init():void
  9. {
  10. test3.addEventListener(MouseEvent.CLICK,onClick)
  11. }
  12. protected function onClick(event:Event):void
  13. {
  14. Alert.show(event.target.label+"clicked","时间测试");
  15. }
  16. ]]>
  17. </fx:Script>
  18. <fx:Declarations>
  19. <!-- 将非可视元素(例如服务、值对象)放在此处 -->
  20. </fx:Declarations>
  21. <s:Button id="test3" x="493" y="62" width="112" height="44" label="按钮"/>
  22. </s:Application>

绑定事件

无论何时创建对某个变量的绑定,都会注册一个事件监听器,监听器会在变量被修改时做出响应。

ActionScript依赖ChangeWatcher类实现数据绑定

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
  3. xmlns:s="library://ns.adobe.com/flex/spark"
  4. xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
  5. applicationComplete="init()">
  6. <fx:Script>
  7. <![CDATA[
  8. import mx.binding.utils.ChangeWatcher;
  9. import mx.events.FlexEvent;
  10. import mx.events.PropertyChangeEvent;
  11.  
  12. protected var _watcher:ChangeWatcher;
  13.  
  14. protected function init():void
  15. {
  16. toggleWatch();
  17. }
  18. protected function toggleWatch():void
  19. {
  20. if(_watcher&&_watcher.isWatching())//确定监视器活跃
  21. {
  22. _watcher.unwatch();//移除监视器的变量
  23. test3.label="Watch";
  24. }
  25. else
  26. {
  27. _watcher=ChangeWatcher.watch(input,"text",onChange);
  28. test3.label="Stop Watching!";
  29. }
  30. }
  31. protected function onChange(event:Event):void
  32. {
  33. label1.text=input.text;
  34. }
  35.  
  36. ]]>
  37. </fx:Script>
  38. <s:Button id="test3" x="338" y="176" width="112"
  39. height="44" label="Watch Text" click="toggleWatch()"/>
  40. <s:Label id="label1" x="510" y="176" width="176" height="53" />
  41. <s:TextInput id="input" x="510" y="239" width="176" height="53" text="start text"/>
  42. </s:Application>

我们刚刚看到的是unwatch()方法的用法,该方法可以取消监视变量的行为。在使用事件监听器的情况下,同样可以做到这一点。如果事件监听器是在运行时通过ActionScript添加的,就可以使用removeEventListener()方法移除。Unwatch()方法只是使用removeEventListener停止事件的分派。

看如何移除事件监听器:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
  3. xmlns:s="library://ns.adobe.com/flex/spark"
  4. xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600">
  5. <s:layout>
  6. <s:VerticalLayout/>
  7. </s:layout>
  8. <fx:Script>
  9. <![CDATA[
  10. import mx.events.DragEvent;
  11. protected function toggleListener():void
  12. {
  13. if(box.hasEventListener(MouseEvent.CLICK))
  14. {
  15. log("Listeners removeed");
  16. //移除事件侦听器
  17. box.removeEventListener(MouseEvent.MOUSE_OVER,onEvent);
  18. box.removeEventListener(MouseEvent.MOUSE_OUT,onEvent);
  19. box.removeEventListener(MouseEvent.MOUSE_MOVE,onEvent);
  20. box.removeEventListener(MouseEvent.CLICK,onEvent);
  21. }
  22. else
  23. {
  24. log("Listeners added")
  25. //添加事件侦听器
  26. box.addEventListener(MouseEvent.CLICK,onEvent);
  27. box.addEventListener(MouseEvent.MOUSE_MOVE,onEvent);
  28. box.addEventListener(MouseEvent.MOUSE_OUT,onEvent);
  29. box.addEventListener(MouseEvent.MOUSE_OVER,onEvent);
  30. }
  31. }
  32. protected function log(text:String):void//添加新的String用于显示
  33. {
  34. logField.text=text+"\n"+logField.text;
  35. }
  36. protected function onEvent(event:Event):void
  37. {
  38. log("Event triggered:"+event.type);
  39. }
  40.  
  41. ]]>
  42. </fx:Script>
  43. <s:Button label="Toggle Listener" click=" toggleListener()"/>
  44. <s:Group id="box">
  45. <s:Rect width="200" height="50">
  46. <s:fill>
  47. <s:SolidColor color="0x979797"/>
  48. </s:fill>
  49. </s:Rect>
  50. </s:Group>
  51. <s:TextArea id="logField" width="400" height="400"/>
  52. </s:Application>

Flex 事件机制的更多相关文章

  1. Flex事件机制学习-自定义事件实现类间通信 .

    今天,学习Flex自定义事件,可以使两个类通信,定义一个Main类. public class Main extends Sprite     {            public function ...

  2. Flex中利用事件机制进行主程序与子窗体间参数传递

    在开发具有子窗体,或者itemrenderer的应用时,常常涉及到子窗体向父窗体传递参数或者从itemrenderer内的控件向外部的主程序传递参数的需求.这些都可以通过事件机制这一统一方法加以解决. ...

  3. AS3事件机制概述

    事件机制是AS3的核心功能之一,没有充分掌握事件机制的方方面面,就不能算是精通AS3语言. 1. AS3事件机制的主要成员 IEventDispatcher:事件派发对象接口,定义了添加.派发.移除. ...

  4. javaScript tips —— z-index 对事件机制的影响

    demo // DOM结构 class App extends React.Component { componentDidMount() { const div1 = document.getEle ...

  5. React 为什么要把事件挂载到 document 上 & 事件机制源码分析

    前言 我们都知道 React 组件绑定事件的本质是代理到 document 上,然而面试被问到,为什么要这么设计,有什么好处吗? 我知道肯定不会是因为虚拟 DOM 的原因,因为 Vue 的事件就能挂载 ...

  6. 【移动端兼容问题研究】javascript事件机制详解(涉及移动兼容)

    前言 这篇博客有点长,如果你是高手请您读一读,能对其中的一些误点提出来,以免我误人子弟,并且帮助我提高 如果你是javascript菜鸟,建议您好好读一读,真的理解下来会有不一样的收获 在下才疏学浅, ...

  7. tkinter事件机制

    一.tkinter.Event tkinter的事件机制跟js是一样的,也是只有一个Event类,这个类包罗万象,集成了键盘事件,鼠标事件,包含各种参数. 不像java swing那种强类型事件,sw ...

  8. [解惑]JavaScript事件机制

    群里童鞋问到关于事件传播的一个问题:“事件捕获的时候,阻止冒泡,事件到达目标之后,还会冒泡吗?”. 初学 JS 的童鞋经常会有诸多疑问,我在很多 QQ 群也混了好几年了,耳濡目染也也收获了不少,以后会 ...

  9. Atitit  数据库的事件机制--触发器与定时任务attilax总结

    Atitit  数据库的事件机制--触发器与定时任务attilax总结 1.1. 事件机制的图谱1 2. 触发器的类型2 3. 实现原理 After触发器 Vs Instead Of触发器2 3.1. ...

随机推荐

  1. Memcached基础

    1.实例化 MemcachedClient client = new XMemcachedClient(); public XMemcachedClient() public XMemcachedCl ...

  2. win8 iis安装及网站发布(转)

    系统:win8 环境:vs2012 一:安装IIS 比较win7的安装来说,多选了几个钩钩,不然会报错,偶就遇到这样的错误. 控制面板->程序和功能->启动和关闭windows功能,钩钩图 ...

  3. JSP page include taglib

    page include taglib 语法:<%@ 指令名称 属性=值 属性=值 -%> ------------------- page 1.language 默认值java 2.ex ...

  4. 纯JS URL编解码

    function urlEncode(str) { var ret = ""; var strSpecial = "!\"#$%&’()*+,/:;&l ...

  5. 经常会用到的js函数

    //获取样式function getStyle(obj,attr){ if(obj.currentStyle){  return obj.currentStyle[attr];  }else{  re ...

  6. PHP用户登录与注册页面

    PHP用户登录模块实现 项目包含的功能脚本: login.php//登录 reg.php//注册用户 user_add.php//注册校验脚本 user_login_check.php//登录校验脚本 ...

  7. 安卓自定义view_GDI绘图 _2d绘图_canvas绘图

    2014年到2016年 发生了很多事情,如今已成定局,现在想忘掉这些烦恼的事情,找点以前想干没有干的事情来做,塞满大脑就不去想了. 之前,一直想做一款挂机类游戏,各种平台和开发语言都选择过了,从htm ...

  8. zoj 2589 Matrix Searching 二维线段树

    题目链接 给一个n*n的矩阵, 给q个查询, 每次给出x1, y1, x2, y2, 求这个矩阵中的最小值. 代码基本上和上一题相同... #include<bits/stdc++.h> ...

  9. CoreText 简单 使用

    - (void)drawRect:(CGRect)rect { NSString *longText = @"CoreText"; /* ... */ NSRange rang = ...

  10. Ubuntu 12.04 LTS下logomaker的安装

    学校嵌入式课程实验,本地装的时候遇到了一系列问题,因为基本不会linux所以到处搜解决方法,中间还走了不少弯路,作个笔记. 1.解压安装倒是没什么问题,运行时提示找不到共享库 logomaker: e ...