Adobe
产品
Acrobat
Creative Cloud
创意套装
Digital Marketing Suite
Digital Publishing Suite
Elements
Photoshop
Touch Apps
更多产品
解决方案
数字营销
数字媒体
教育
金融服务业
政府部门
网页体验管理
更多解决方案
学习帮助下载公司
商店
在线商店
批量许可
查找经销商
搜索
 
信息 登录
欢迎,我的支持
我的帐户
注销
为何登录?登录后可以管理您的帐户,访问试用版下载、产品扩展和社区区域等。
Adobe
产品 分类 购买   搜索  
解決方案 公司
学习
登录 注销 我的货物 我的支持
Date Date
Qty:
Subtotal
Checkout
Adobe 开发者中心 / Flash 开发人员中心 /

ActionScript 3的事件处理

作者 H. Paul Robertson

H. Paul Robertson
  • Blog

Content

  • 点击按钮播放当前影片剪辑
  • 检测文本字段输入信息
  • 点击按钮进行URL浏览

创建日期

23 November 2010

页面工具

在 Facebook 上共享
在 Twitter 上共享
在 LinkedIn 上共享
书签
打印

要求

用户级别

初级

必需产品

  • Flash Professional (Download trial)

范例文件

  • click_to_play_source.zip
  • detecting_typing_source.zip
  • click_to_navigate_source.zip

你可以将事件(event)看作是你的SWF文件中的任何类型的事件(occurrence),作为一个编程人员你对这些事件均感兴趣。 例如,大多数SWF文件支持某种形式的用户互动-不管是像鼠标点击这样简单的操作,还是像接收和处理输入到一个表单的数据这样的更为复杂的操作。 任何这样与你的SWF文件的用户互动均称为一个事件。 事件也可以在没有直接用户互动的情形下发生,例如当数据完成从服务器的装载操作时或当一个附着相机变成激活状态时。

在ActionScript 3.0中,每个事件由一个事件对象表示,而事件对象是Event类的一个实例或其子类的一个实例。 事件对象能够存储特定事件相关的信息并且包含能够帮助处理事件对象的方法。 例如,当Flash Player 检测到一个鼠标点击操作,它可以创建一个事件对象(MouseEvent类的一个实例)来表示该特殊鼠标点击事件。

在创建一个事件对象之后,Flash Player 将下发它,这意味着该事件对象将被传递给作为事件目标的对象。 一个用作为下发事件对象的目的文件的对象称为事件目标(event target)。 例如,当一个附着相机变成激活状态时, Flash Player直接下发一个事件对象给相应的事件目标,在本例中,它是表示该相机的对象。 然而,如果该事件目标是屏幕上的一个显示对象,则该事件对象将通过包含事件目标(显示列表)的显示对象容器从Stage被向上传递,直至它到达事件目标。 在某些情形下,事件对象可以“起泡”("bubbles")支持沿相同路径的显示列表分级结构。 对显示列表分级结构的遍历称为事件流程(event flow)。 在本速成文章中,没有给出事件流程的描述。如需获得更多相关信息,参见本文结尾部分的资源列表。

你的代码可以使用事件侦听器监听各种事件。 事件侦听器(Event listener)是你编写的、用于响应特定事件的函数或方法。 为了确保你的程序能够响应各种事件,你必须在事件目标中或在任何显示列表对象中添加事件侦听器,而显示列表对象是一个事件对象的事件流程的一个组成部分。

function eventHandlerFunction(eventObject:EventType):void { // Actions performed in response to the event go here. } eventTarget.addEventListener(EventType.EVENT_NAME, eventHandlerFunction);

该代码可以完成下列两项任务:

  1. 它定义一个函数,这是指定在响应事件时将要执行的动作的方法。
  2. 它调用源对象的 addEventListener() 方法,即实际上为指定的事件“预定”该函数,这样,当事件发生时,该函数的动作将被执行。

当事件真正发生时,事件目标将检查其注册为事件侦听器的所有函数和方法的列表。 然后,它将依次调用这些函数和方法,并且将事件对象作为参数进行传递。

你需要在前面的代码中改变4个元素以创建你自己的事件侦听器。

  • 将函数的名称改变为你希望使用的名称( 必须在两处进行更改,即代码 出现 eventHandlerFunction的位置) )
  • 替换事件对象的合适类名,而事件对象是你希望监听的事件下发的(代码中的EventType )
  • 为特定事件替换合适的常量 (列表中的EVENT_NAME )
  • 改变 addEventListener()方法调用,以便它根据下发事件的对象进行调用(在前面的代码中替换eventTarget)
  • 此外,你还可以改变用作函数参数的变量的名称(在代码列表中的eventObject)

下面章节将给出一些事件处理代码的范例,以便在你编写事件处理代码时为你提供一些公共事件元素和可用变量的理念。

点击按钮播放当前影片剪辑

下面范例演示如何创建一个可点击按钮,它可以用于播放一段影片剪辑(例如,Flash的主Timeline)。 在代码列表中,playButton是按钮的实例名称,而this 是一个特殊名称, 其含义是"当前对象" (在本例中,它一个是一段影片剪辑)。

范例

import flash.events.MouseEvent; this.stop(); function playMovie(event:MouseEvent):void { this.play(); } playButton.addEventListener(MouseEvent.CLICK, playMovie);
结果
缺少 Flash player 您必须装有 Flash 10? 您必须装有 Flash 10?
如需获得本范例的源文件,请从页面的顶部下载click_to_play_source.zip,或右击上面的SWF,然后从context菜单中选择Download Source。 Flash Professional CS5 版本的FLA 文件包含于该 ZIP 文件中,其名称为 click_to_play_CS5.fla。

检测文本字段输入信息

下面范例演示如何使用一个文本字段的textInput事件来检测用户在什么时候在文本字段中输入文本。 在本例中,该代码仅仅编写了用户按键内容的屏幕显示功能。 然而,相同事件可以用于更为复杂的任务。 例如,代码可以进行功能扩展以便自动对文本进行格式化,如变成电话号码形式,或检查文本是否与某种允许的字符或格式匹配。 在下面的代码列表中,entryText是一个输入文本字段,而outputText是一个动态文本字段。

范例

import flash.events.TextEvent; function updateOutput(event:TextEvent):void { var pressedKey:String = event.text; outputText.text = "You typed: " + pressedKey; } entryText.addEventListener(TextEvent.TEXT_INPUT, updateOutput);

结果

缺少 Flash player 您必须装有 Flash 10? 您必须装有 Flash 10?

如需获得本范例的源文件,请从页面的顶部下载detecting_typing_source.zip,或右击上面的SWF,然后从context菜单中选择Download Source。 Flash Professional CS5 版本的FLA 文件包含于该 ZIP 文件中,其名称为 detecting_typing_CS5.fla。

点击按钮进行URL浏览

本例将给出如何创建这样一个按钮,当点击此按钮时,它将会把浏览器导航至指定的URL。 该按钮的行为实际上类似于web页面的超链接功能。 在该代码列表中,linkButton 是该按钮的实例名称。

范例

import flash.events.MouseEvent; function gotoAdobeSite(event:MouseEvent):void { var adobeURL:URLRequest = new URLRequest("http://www.adobe.com/"); navigateToURL(adobeURL); } linkButton.addEventListener(MouseEvent.CLICK, gotoAdobeSite);

结果

缺少 Flash player 您必须装有 Flash 10? 您必须装有 Flash 10?
如需获得本范例的源文件,请从页面的顶部下载click_to_navigate_source.zip,或右击上面的SWF,然后从context菜单中选择Download Source。 Flash Professional CS5 版本的FLA 文件包含于该 ZIP 文件中,其名称为 click_to_navigate_CS5.fla。

更多信息

本文摘自Programming ActionScript 3.0 的章节"Introduction to handling events" 和"Event-handling examples" 。 关于ActionScript 3.0的事件处理的更多信息,请参阅下列资源:

  • Learning ActionScript 3.0 的章节Getting Started with ActionScript > Events 
  • ActionScript 3.0 Developer's Guide 的章节Handling events 
  • Flex Developer Center 的Flex Quick Start: Handling events

相关的Flash 快速入门文章

  • 嵌入字体(Embedding fonts)
  • 利用ActionScript 3在Flash中装载图像和Library组件(Loading images and Library assets in Flash with ActionScript 3)
  • 利用FileReference类装载和存储本地文件(Loading and saving local files with the FileReference class)
  • 显示列表编程(Display list programming)
  • 创建一个简单的ActionScript 3类(Creating a simple ActionScript 3 class)
  • 处理符号和Document类(Working with symbols and the Document class)
  • 利用数组编程(Programming with arrays)
  • 利用Vector类编程(Programming with the Vector class)

产品

  • Acrobat
  • Creative Cloud
  • Creative Suite
  • Digital Marketing Suite
  • Digital Publishing Suite
  • Elements
  • 移动应用程序
  • Photoshop
  • Touch Apps

解决方案

  • 数字营销
  • 数字媒体
  • 网页体验管理

行业

  • 教育
  • 金融服务业
  • 政府部门

帮助

  • 产品帮助中心
  • 订货和退货
  • 下载和安装
  • 我的 Adobe

学习

  • Adobe 开发人员连接
  • Adobe TV
  • 培训和认证
  • 论坛
  • 设计中心

购买方式

  • 在线商店
  • 批量许可
  • 查找经销商

下载

  • Adobe Reader
  • Adobe Flash Player
  • Adobe AIR
  • Adobe Shockwave Player

公司

  • 新闻编辑室
  • 合作伙伴计划
  • 公司社会责任
  • 工作机会
  • 投资者关系
  • 事件
  • 法律
  • 安全
  • 联系 Adobe
选择您的地区 中国(更改)
选择您的地区 关闭

North America

Europe, Middle East and Africa

Asia Pacific

  • Canada - English
  • Canada - Français
  • Latinoamérica
  • México
  • United States

South America

  • Brasil
  • Africa - English
  • Österreich - Deutsch
  • Belgium - English
  • Belgique - Français
  • België - Nederlands
  • България
  • Hrvatska
  • Česká republika
  • Danmark
  • Eastern Europe - English
  • Eesti
  • Suomi
  • France
  • Deutschland
  • Magyarország
  • Ireland
  • Israel - English
  • ישראל - עברית
  • Italia
  • Latvija
  • Lietuva
  • Luxembourg - Deutsch
  • Luxembourg - English
  • Luxembourg - Français
  • الشرق الأوسط وشمال أفريقيا - اللغة العربية
  • Middle East and North Africa - English
  • Moyen-Orient et Afrique du Nord - Français
  • Nederland
  • Norge
  • Polska
  • Portugal
  • România
  • Россия
  • Srbija
  • Slovensko
  • Slovenija
  • España
  • Sverige
  • Schweiz - Deutsch
  • Suisse - Français
  • Svizzera - Italiano
  • Türkiye
  • Україна
  • United Kingdom
  • Australia
  • 中国
  • 中國香港特別行政區
  • Hong Kong S.A.R. of China
  • India - English
  • 日本
  • 한국
  • New Zealand
  • 台灣

Southeast Asia

  • Includes Indonesia, Malaysia, Philippines, Singapore, Thailand, and Vietnam - English

Copyright © 2012 Adobe Systems Incorporated. All rights reserved.

使用条款 | 隐私政策和 Cookies (更新)

京 ICP 备 10217899 号 京公网安备 110105010404