Actionscript3快速入门.docx

上传人:b****5 文档编号:6658350 上传时间:2023-01-08 格式:DOCX 页数:22 大小:240.20KB
下载 相关 举报
Actionscript3快速入门.docx_第1页
第1页 / 共22页
Actionscript3快速入门.docx_第2页
第2页 / 共22页
Actionscript3快速入门.docx_第3页
第3页 / 共22页
Actionscript3快速入门.docx_第4页
第4页 / 共22页
Actionscript3快速入门.docx_第5页
第5页 / 共22页
点击查看更多>>
下载资源
资源描述

Actionscript3快速入门.docx

《Actionscript3快速入门.docx》由会员分享,可在线阅读,更多相关《Actionscript3快速入门.docx(22页珍藏版)》请在冰豆网上搜索。

Actionscript3快速入门.docx

Actionscript3快速入门

Actionscript3快速入门

(一)——编程基础

编程基础因为ActionScript是一种编程语言,所以,如果您首先了解几个通用的计算机编程概念,则会对您学习ActionScript很有帮助。

计算机程序的用途

首先,对计算机程序的概念及其用途有一个概念性的认识是非常有用的。

计算机程序主要包括两个方面:

■程序是计算机执行的一系列指令或步骤。

■每一步最终都涉及到对某一段信息或数据的处理。

通常认为,计算机程序只是您提供给计算机并让它逐步执行的指令列表。

每个单独的指令都称为“语句”。

正如您将在本手册中看到的那样,在ActionScript中编写的每个语句的末尾都有一个分号。

实质上,程序中给定指令所做的全部操作就是处理存储在计算机内存中的一些数据位。

举一个简单的例子,您可能指示计算机将两个数字相加并将结果存储在计算机的内存中。

举一个较复杂的例子:

假设在屏幕上绘制了一个矩形,您希望编写一个程序将它移动到屏幕上的其它位置。

计算机跟踪该矩形的某些信息—该矩形所在位置的x、y光标、它的宽度和高度以及颜色等等。

这些信息位中的每一位都存储在计算机内存中的某个位置。

为了将矩形移动到其它位置,程序将采取类似于“将x坐标改为200;将y坐标改为150”的步骤(也就是说,为x和y坐标指定新值)。

当然,计算机的确会对这些数据进行某些处理,以便切实地

将这些数字转变为显示在计算机屏幕上的图像;但考虑到我们所感兴趣的详细程度,我们只

要知道“在屏幕上移动矩形”这一过程确实只涉及更改计算机内存中的数据位就足够了。

变量和常量

由于编程主要涉及更改计算机内存中的信息,因此在程序中需要一种方法来表示单条信息。

“变量”是一个名称,它代表计算机内存中的值。

在编写语句来处理值时,编写变量名来代替值;只要计算机看到程序中的变量名,就会查看自己的内存并使用在内存中找到的值。

例如,如果两个名为value1和value2的变量都包含一个数字,您可以编写如下语句以将这两个数字相加:

value1+value2

在实际执行这些步骤时,计算机将查看每个变量中的值,并将它们相加。

在ActionScript3.0中,一个变量实际上包含三个不同部分:

■变量名

■可以存储在变量中的数据的类型

■存储在计算机内存中的实际值

刚才我们讨论了计算机是如何将名称用作值的占位符的。

数据类型也非常重要。

在ActionScript中创建变量时,应指定该变量将保存的数据的特定类型;此后,程序的指令只能在该变量中存储此类型的数据,您可以使用与该变量的数据类型关联的特定特性来处理值。

在ActionScript中,要创建一个变量(称为“声明”变量),应使用var语句:

varvalue1:

Number;

在本例中,我们指示计算机创建一个名为value1的变量,该变量仅保存Number数据(“Number”是在ActionScript中定义的一种特定数据类型)。

您还可以立即在变量中存储一个值:

varvalue2:

Number=17;

在AdobeFlashCS3Professional中,还包含另外一种变量声明方法。

在将一个影片剪辑元件、按钮元件或文本字段放置在舞台上时,可以在“属性”检查器中为它指定一个实例名称。

在后台,Flash将创建一个与该实例名称同名的变量,您可以在ActionScript代码中使用该变量来引用该舞台项目。

例如,如果您将一个影片剪辑元件放在舞台上并为它指定了实例名称rocketShip,那么,只要您在ActionScript代码中使用变量rocketShip,实际上就是在处理该影片剪辑。

数据类型在ActionScript中,您可以将很多数据类型用作所创建的变量的数据类型。

其中的某些数据类型可以看作是“简单”或“基本”数据类型:

■String:

一个文本值,例如,一个名称或书中某一章的文字

■Numeric:

对于numeric型数据,ActionScript3.0包含三种特定的数据类型:

■Number:

任何数值,包括有小数部分或没有小数部分的值

■Int:

一个整数(不带小数部分的整数)

■Uint:

一个“无符号”整数,即不能为负数的整数

■Boolean:

一个true或false值,例如开关是否开启或两个值是否相等

简单数据类型表示单条信息:

例如,单个数字或单个文本序列。

然而,ActionScript中定义

的大部分数据类型都可以被描述为复杂数据类型,因为它们表示组合在一起的一组值。

如,数据类型为Date的变量表示单个值—时间中的某个片刻。

然而,该日期值实际上表示

为几个值:

年、月、日、时、分、秒等等,它们都是单独的数字。

所以,虽然我们认为日期

是单个值(可以通过创建一个Date变量将日期作为单个值来对待),而在计算机内部却认

为日期是组合在一起、共同定义单个日期的一组值。

大部分内置数据类型以及程序员定义的数据类型都是复杂数据类型。

您可能认识下面的一些

复杂数据类型:

■MovieClip:

影片剪辑元件

■TextField:

动态文本字段或输入文本字段

■SimpleButton:

按钮元件

■Date:

有关时间中的某个片刻的信息(日期和时间)

经常用作数据类型的同义词的两个词是类和对象。

“类”仅仅是数据类型的定义—就像用于该数据类型的所有对象的模板,例如“所有Example数据类型的变量都拥有这些特性:

A、B和C”。

而“对象”仅仅是类的一个实际的实例;可将一个数据类型为MovieClip的变量描述为一个MovieClip对象。

下面几条陈述虽然表达的方式不同,但意思是相同的:

■变量myVariable的数据类型是Number。

■变量myVariable是一个Number实例。

■变量myVariable是一个Number对象。

■变量myVariable是Number类的一个实例。

Actionscript3快速入门

(二)——处理对象

处理对象

ActionScript是一种面向对象的编程语言。

面向对象的编程仅仅是一种编程方法,它与使用对象来组织程序中的代码的方法没有什么差别。

先前我们将计算机程序定义为计算机执行的一系列步骤或指令。

那么从概念上讲,我们可能认为计算机程序只是一个很长的指令列表。

然而,在面向对象的编程中,程序指令被划分到不同的对象中—代码构成功能块,因此相关类型的功能或相关的信息被组合到一个容器中。

事实上,如果您已经在Flash中处理过元件,那么您应已习惯于处理对象了。

假设您已定义了一个影片剪辑元件(假设它是一幅矩形的图画),并且已将它的一个副本放在了舞台上。

从严格意义上来说,该影片剪辑元件也是ActionScript中的一个对象,即MovieClip类的一个实例。

您可以修改该影片剪辑的不同特征。

例如,当选中该影片剪辑时,您可以在“属性”检查器中更改许多值,例如,它的x坐标、宽度,进行各种颜色调整(例如,更改它的alpha值,即透明度),或对它应用投影滤镜。

还可以使用其它Flash工具进行更多更改,例如,使用

“任意变形”工具旋转该矩形。

在Flash创作环境中修改一个影片剪辑元件时所做的更改,同样可在ActionScript中通过更改组合在一起、构成称为MovieClip对象的单个包的各数据片断来实现。

在ActionScript面向对象的编程中,任何类都可以包含三种类型的特性:

■属性

■方法

■事件

这些元素共同用于管理程序使用的数据块,并用于确定执行哪些动作以及动作的执行顺序。

属性

属性表示某个对象中绑定在一起的若干数据块中的一个。

Song对象可能具有名为artist和title的属性;MovieClip类具有rotation、x、width和alpha等属性。

您可以像处理单个变量那样处理属性;事实上,可以将属性视为包含在对象中的“子”变量。

以下是一些使用属性的ActionScript代码的示例。

以下代码行将名为square的MovieClip移动到100个像素的x坐标处:

square.x=100;

以下代码使用rotation属性旋转squareMovieClip以便与triangleMovieClip的旋转相匹配:

square.rotation=triangle.rotation;

以下代码更改squareMovieClip的水平缩放比例,以使其宽度为原始宽度的1.5倍:

square.scaleX=1.5;

请注意上面几个示例的通用结构:

将变量(square和triangle)用作对象的名称,后跟一个句点(.)和属性名(x、rotation和scaleX)。

句点称为“点运算符”,用于指示您要访问对象的某个子元素。

整个结构“变量名-点-属性名”的使用类似于单个变量,变量是计算机内存中的单个值的名称。

方法

“方法”是指可以由对象执行的操作。

例如,如果在Flash中使用时间轴上的几个关键帧和动画制作了一个影片剪辑元件,则可以播放或停止该影片剪辑,或者指示它将播放头移到特定的帧。

下面的代码指示名为shortFilm的MovieClip开始播放:

shortFilm.play();

下面的代码行使名为shortFilm的MovieClip停止播放(播放头停在原地,就像暂停播放视频一样):

shortFilm.stop();

下面的代码使名为shortFilm的MovieClip将其播放头移到第1帧,然后停止播放(就像后退视频一样):

shortFilm.gotoAndStop

(1);

正如您所看到的一样,您可以通过依次写下对象名(变量)、句点、方法名和小括号来访问方法,这与属性类似。

小括号是指示要“调用”某个方法(即指示对象执行该动作)的方式。

有时,为了传递执行动作所需的额外信息,将值(或变量)放入小括号中。

这些值称为方法“参数”。

例如,gotoAndStop()方法需要知道应转到哪一帧,所以要求小括号中有一个参数。

有些方法(如play()和stop())自身的意义已非常明确,因此不需要额外信息。

但书写时仍然带有小括号。

与属性(和变量)不同的是,方法不能用作值占位符。

然而,一些方法可以执行计算并返回可以像变量一样使用的结果。

例如,Number类的toString()方法将数值转换为文本表示形式:

varnumericData:

Number=9;

vartextData:

String=numericData.toString();

例如,如果希望在屏幕上的文本字段中显示Number变量的值,应使用toString()方法。

TextField类的text属性(表示实际在屏幕上显示的文本内容)被定义为String,所以它只能包含文本值。

下面的一行代码将变量numericData中的数值转换为文本,然后使这些文本显示在屏幕上名为calculatorDisplay的TextField对象中:

calculatorDisplay.text=numericData.toString();

事件

我们已经介绍了计算机程序就是计算机分步执行的一系列指令。

一些简单的计算机程序仅包括计算机执行的几个步骤以及程序的结束点。

然而,ActionScript程序可以保持运行、等待用户输入或等待其它事件发生。

事件是确定计算机执行哪些指令以及何时执行的机制。

本质上,“事件”就是所发生的、ActionScript能够识别并可响应的事情。

许多事件与用户交互有关—例如,用户单击按钮,或按键盘上的键—但也有其它类型的事件。

例如,如果使用ActionScript加载外部图像,有一个事件可让您知道图像何时加载完毕。

本质上,当ActionScript程序正在运行时,AdobeFlashPlayer只是坐等某些事情的发生,当这些事情发生时,FlashPlayer将运行您为这些事件指定的特定ActionScript代码。

基本事件处理指定为响应特定事件而应执行的某些动作的技术称为“事件处理”。

在编写执行事件处理的ActionScript代码时,您需要识别三个重要元素:

■事件源:

发生该事件的是哪个对象?

例如,哪个按钮会被单击,或哪个Loader对象正在加载图像?

事件源也称为“事件目标”,因为FlashPlayer将此对象(实际在其中发生事件)作为事件的目标。

■事件:

将要发生什么事情,以及您希望响应什么事情?

识别事件是非常重要的,因为许多对象都会触发多个事件。

■响应:

当事件发生时,您希望执行哪些步骤?

无论何时编写处理事件的ActionScript代码,都会包括这三个元素,并且代码将遵循以下基本结构(以粗体显示的元素是您将针对具体情况填写的占位符):

functioneventResponse(eventObject:

EventType):

void

{

//此处是为响应事件而执行的动作。

}

eventSource.addEventListener(EventType.EVENT_NAME,eventResponse);

此代码执行两个操作。

首先,定义一个函数,这是指定为响应事件而要执行的动作的方法。

接下来,调用源对象的addEventListener()方法,实际上就是为指定事件“订阅”该函数,以便当该事件发生时,执行该函数的动作。

我们将更为详细地讨论其中每个部分。

“函数”提供一种将若干个动作组合在一起、用类似于快捷名称的单个名称来执行这些动作的方法。

函数与方法完全相同,只是不必与特定类关联(事实上,方法可以被定义为与特定类关联的函数)。

在创建事件处理函数时,必须选择函数名称(本例中为eventResponse),还必须指定一个参数(本例中的名称为eventObject)。

指定函数参数类似于声明变量,所以还必须指明参数的数据类型。

将为每个事件定义一个ActionScript类,并且为函数参数指定的数据类型始终是与要响应的特定事件关联的类。

最后,在左大括号与右大括号之间({...}),编写您希望计算机在事件发生时执行的指令。

一旦编写了事件处理函数,就需要通知事件源对象(发生事件的对象,如按钮)您希望在该事件发生时调用函数。

可通过调用该对象的addEventListener()方法来实现此目的(所有具有事件的对象都同时具有addEventListener()方法)。

addEventListener()方法有两个参数:

■第一个参数是您希望响应的特定事件的名称。

同样,每个事件都与一个特定类关联,而该类将为每个事件预定义一个特殊值;类似于事件自己的唯一名称(应将其用于第一个参数)。

■第二个参数是事件响应函数的名称。

请注意,如果将函数名称作为参数进行传递,则在写入函数名称时不使用括号。

了解事件处理过程

下面分步描述了创建事件侦听器时执行的过程。

在本例中,您将创建一个侦听器函数,在单击名为myButton的对象时将调用该函数。

程序员实际编写的代码如下所示:

functioneventResponse(event:

MouseEvent):

void

{

//此处是为响应事件而执行的动作。

}

myButton.addEventListener(MouseEvent.CLICK,eventResponse);

下面是此代码在FlashPlayer中运行时的实际工作方式:

1.加载SWF文件时,FlashPlayer会注意到以下情况:

有一个名为eventResponse()的函数。

2.FlashPlayer随后运行该代码(具体地说,是指不在函数中的代码行)。

在本例中,只

有一行代码:

针对事件源对象(名为myButton)调用addEventListener()方法,并

将eventResponse函数作为参数进行传递。

a.在内部,myButton包含正在侦听其每个事件的函数的列表,因此,当调用其

addEventListener()方法时,myButton将eventResponse()函数存储在其事件

侦听器列表中。

3.在某一时刻,用户单击myButton对象以触发其click事件(在代码中将其标识为

MouseEvent.CLICK)。

此时发生了以下事件:

a.FlashPlayer创建一个对象,它是与所述事件(本示例中为MouseEvent)关联的类

的实例。

对于很多事件,这是Event类的实例;对于鼠标事件,这是MouseEvent

实例;对于其它事件,这是与该事件关联的类的实例。

创建的该对象称为“事件对

象”,它包含有关所发生的事件的特定信息:

事件类型、发生位置以及其它特定于事

件的信息(如果适用)。

b.FlashPlayer随后查看myButton存储的事件侦听器的列表。

它逐个查看这些函数,以

调用每个函数并将事件对象作为参数传递给该函数。

由于eventResponse()函数是

myButton的侦听器之一,因此,FlashPlayer将在此过程中调用eventResponse()

函数。

c.当调用eventResponse()函数时,将运行该函数中的代码,因此,将执行您指定的

动作。

事件处理示例

以下是几个更为具体的事件示例,让您对在编写事件处理代码时常用的一些事件元素以及可

能的变化形式有一个了解:

■单击按钮开始播放当前的影片剪辑。

在下面的示例中,playButton是按钮的实例名称,

而this是表示“当前对象”的特殊名称:

this.stop();

functionplayMovie(event:

MouseEvent):

void

{

this.play();

}

playButton.addEventListener(MouseEvent.CLICK,playMovie);

■检测文本字段中的键入操作。

在下面的示例中,entryText是一个输入文本字段,而

outputText是一个动态文本字段:

functionupdateOutput(event:

TextEvent):

void

{

varpressedKey:

String=event.text;

outputText.text="Youtyped:

"+pressedKey;

}

entryText.addEventListener(TextEvent.TEXT_INPUT,updateOutput);

■单击按钮导航到一个URL。

在本例中,linkButton是该按钮的实例名称:

functiongotoJavaUUSite(event:

MouseEvent):

void

{

varadobeURL:

URLRequest=newURLRequest("

navigateToURL(adobeURL);

}

linkButton.addEventListener(MouseEvent.CLICK,gotoJavaUUSite);

创建对象实例

当然,在ActionScript中使用对象之前,该对象首先必须存在。

创建对象的步骤之一是声明

变量;然而,声明变量仅仅是在计算机的内存中创建一个空位置。

您必须为变量指定实际值

—即创建一个对象并将它存储在该变量中—然后再尝试使用或处理该变量。

创建对象的过

程称为对象“实例化”;也就是说,创建特定类的实例。

有一种创建对象实例的简单方法完全不必涉及ActionScript。

在Flash中,当将一个影片剪

辑元件、按钮元件或文本字段放置在舞台上,并在“属性”检查器中为它指定实例名时,

Flash会自动声明一个拥有该实例名的变量、创建一个对象实例并将该对象存储在该变量

中。

同样,在AdobeFlexBuilder中,当您以AdobeMacromedia®MXML™创建一个组

件(通过用MXML标签进行编码或通过将组件放置在处于设计模式下的编辑器中)并为该

组件分配一个ID(在MXML标记中或在Flex属性视图中)时,该ID将成为一个

ActionScript变量的名称,并且会创建该组件的一个实例并将它存储在该变量中。

然而,您不会总是希望直观地创建对象。

还可以通过几种方法来仅使用ActionScript创建对

象实例。

首先,借助几个ActionScript数据类型,可以使用“文本表达式”(直接写入

ActionScript代码的值)创建一个实例。

下面给出了一些示例:

■文本数字值(直接输入数字):

varsomeNumber:

Number=17.239;

varsomeNegativeInteger:

int=-53;

varsomeUint:

uint=22;

■文本字符串值(用双引号将本文引起来):

varfirstName:

String="George";

varsoliloquy:

String="Tobeornottobe,thatisthequestion...";

■文本布尔值(使用字面值true或false):

varniceWeather:

Boolean=true;

varplayingOutside:

Boolean=false;

■文本XML值(直接输入XML):

varemployee:

XML=

Harold

Webster

;

ActionScript还为Array、RegExp、Object和Function数据类型定义了文本表达式。

关这些类的详细信息,请参阅第189页的“处理数组”、第243页的“使用正则表达式”

和第80页的“Object数据类型”。

对于其它任何数据类型而言,要创建一个对象实例,应将new运算符与类名一起使用,如下

所示:

varraceCar:

MovieClip=newMovieClip();

varbirthday:

Date=newDate(2006,7,9);

通常,将使用new运算符创建对象称为“调用类的构造函数”。

“构造函数”是一种特殊方

法,在创建类实例的过程中将调用该方法。

请注意,当以此方法创建实例时,请在类名后加

上小括号,有时还可以指定参数值—这是在调用方法时另外可执行的两个操作。

熟悉使用newClassName()创建对象的方法是非常重要的。

如果需要创建无可视化表示形

式的ActionScript数据类型的一个实例(无法通过将项目放置在Flash舞台上来创建,也

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教学研究 > 教学计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1