ADC推荐:Flash快速入门:AS3编程-ActionScript 3的事件处理

本文由ADC中文站推荐

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

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

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

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

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

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

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

当事件真正发生时,事件目标将检查其注册为事件侦听器的所有函数和方法的列表。 然后,它将依次调用这些函数和方法,并且将事件对象作为参数进行传递。
你需要在前面的代码中改变4个元素以创建你自己的事件侦听器。

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

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

目录

要求

为了充分利用本文,您需要以下软件和文件:Flash Professional

范例文件:

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

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

范例

  1. import flash.events.MouseEvent;
  2. this.stop();
  3. function playMovie(event:MouseEvent):void
  4. {
  5. this.play();
  6. }
  7. playButton.addEventListener(MouseEvent.CLICK, playMovie);

结果

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

检测文本字段输入信息

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

范例

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

结果

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

点击按钮进行URL浏览

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

范例

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

结果

如需获得本范例的源文件,请从页面的顶部下载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的事件处理的更多信息,请参阅下列资源:

相关的Flash 快速入门文章

关于作者

H. Paul Robertson 是 Adobe Systems 公司的平台开发人员文档团队的一名 ActionScript 开发人员/文档撰写人员。他曾作为一名 Web 应用程序开发人员与 Russell Chun 共同编写了《Macromedia Flash 8 Advanced: Visual QuickPro Guide》*(Peachpit 出版社, 2005 年)。Paul 是一名 Flash 认证开发人员, 拥有印地安那大学的教学系统技术专业硕士学位。在编写 Web 应用程序、撰写关于 Web 应用程序的稿件、讲授 Web 应用程序课程或更新博客*之余, Paul 喜欢收集各种厨房用具, 并乐于同他的三个孩子在乐高玩具、星球大战游戏等各种重大游艺项目上一争高下。

ADC中文站原文地址: http://www.adobe.com/cn/devnet/flash/quickstart/event_handling_as3/index.html

riadevID: 
您给予的分值: None 平均分: 5.5 ( 186 票)

发表新评论

  • 网页地址和电子邮件地址将会被自动转换为链接。
  • 行和段被自动切分。
  • 您可以使用下面的标签来高亮显示您的评论内容: <code>, <blockcode>. 可以使用"[foo]".旁边显示标签样式 "<foo>" PHP代码可以用这样的区块来包含<?php ... ?> or <% ... %>

更多格式化选项信息

验证区域
系统验证:请回答下面的问题