第三章 最简单的ActionScript程序设计
ActionScript

ActionScript1.声明变量均以var开始,:[类型]可指定变量类型。
var [变量名]:[变量类型]; var food:String;2.AS中也存在类似于C++中的const,不过定义方式和var相同,const[常量名]:[常量类型]=[常量值]; const BOILING_POINT:int = 212; 但是,常量语句只能与其他属性一起在类的开始处定义或者在类的构造函数中定义。
3.AS 中存在一种通配符数据类型(*),*表示数据的类型只有在运行时才知道(动态确定),或者可以保存多种类型的数据。
var variable:* = “any”;4.AS 中运算符和C语言大致相同,也包括自增自减运算符(i++,--i),复合赋值运算符等(x+=2)。
虽然AS引入了类似Java的布尔值,即1>0的值为true,但是,if 语句中不似Java只能为boolean 类型,反而类似于C语言,0 与非0 分别表示false 与true . 即是说,if(1){}也是合法的,这点和C语言相同。
5.AS 中逻辑运算符,位运算符等均与C类似,同时存在类似于Java的空(null)值和undefine值,这些值转换为bool类型时会被转换为false. AS中循环条件语句(if…else switch while do…while for)均与C语言相同, 但是AS中存在for…in 结构和for each…in.for ( var propertyName:String in targetObject){//do some action} //遍历属性名或者索引号(String类型)for each( var element:Object in targetObject){//do some action} //遍历属性或者元素6.AS中函数定义的格式为:Function doSomething(arg1:TypeA, arg2:TypeB): ReturnType{// the executed code goes here}7.AS中函数对基本数据类型(String Number int uint Boolean)使用值传递,对复杂数据类型(any types else)使用引用传递。
ActionScript编程简介

ActionScript编程简介课时安排
4课时。
教学目的要求
1、了解ActionScript的基本概念及其作用
2、了解Flash MX中的ActionScript编程环境
3、理解Flash MX动画中事件与动作的概念
4、掌握Flash MX动画中事件与动作的设置
5、掌握ActionScript脚本程序的编写
教学重点
1、掌握Flash MX动画中事件与动作的设置
2、掌握ActionScript脚本程序的编写
教学难点
掌握ActionScript脚本程序的编写
教学内容
9.1 什么是ActionScript编程
•ActionScript编程的作用
•ActionSript编程的基本概念
9.2 Flash MX的编程环境
●标准模式下的脚本编程
●专家模式下的脚本编程
●脚本面板的其他选项设置
9.3 事件与动作
•设置帧事件和动作
•设置按钮、按键事件与动作
•设置影片剪辑实例的事件与动作
•简单交互式动画实例——动态鼠标
9.4 帧及其他对象脚本的编写
●为帧编写脚本
●按钮实例脚本的编写
作业
课后反思。
1.ActionScript基础

大小写字母
Action中的关键字与函数名是严格区分大小写的,其它则 大小写等价。书写正确的关键字与函数名则以蓝色高亮显 示。
Var i=1; gotoandstop(); var i=1; gotoAndStop();
下面的语句是等价的:
name=1; 与 NAME=1;
Html=true; 与 html=true;
1.动作面板的认识与操作
工具栏
查找与替换 | 插入目标路径 | 语法检查 自动套用格式 | 代码显示 脚本助手: 普通模式 | 专家模式
查看帮助
点击“脚本助手”右边的“?” 或 右击脚本指令查看帮助
首选参数
更改脚本字体,字号,颜色
2. ActionScript基本术语
3.事件处理函数各部分解释
event: 参数名 MouseEvent: 参数类型为鼠标事件 function: 函数标识符 void: 函数没有返回值,空。 function() { 函数体部分 }
跳转语句goto
同一场景中的跳转
gotoAndPlay(5); gotoAndStop(“aa”); // aa为帧标签名
不同场景中的跳转
两个参数,第1个参数为跳转到帧的位置,可用帧序号或帧 标签,第二个参数为场景名,帧标签与场景名要用半角双号 号括起。 gotoAndPlay(1,”场景名”); gotoAndStop(“aa”,”场景名”);
前进 / 后退帧
PrevFrame() 跳转并停止到上一帧. NextFrame()
instance_name_here.addEventListener(MouseEvent.CLICK, fl_MouseClickHandler);
ActionScript基本语法

的函数,这些函数可以从“动作”面板命令列表区中的“全局函数”目录下 找到。时间轴控制函数是全局函数中的一类,它由9个函数组成,可以在“全 局函数”→“时间轴控制”目录下找到。 (1)stop():暂停当前动画的播放,使播放头停止在当前帧。 (2)play():如果当前动画暂停播放,而且动画并没有播放完时,从播放头 停止处继续播放动画。 (3)gotoAndPlay([scene,]frame):指定跳转到某个帧开始播放动画,参数 scene是设置开始播放的场景,如果省略scene参数,则默认当前场景;参数 frame是指定播放的帧号。 (4)gotoAndStop([scene,]frame);这条函数是指定跳转转至动画的指定 帧并停止在该帧。 (5)nextFrame():播放动画的下一帧,并停在下一帧。 (6)prevFrame():播放动画的前一帧,并停在前一帧。 (7)nextScene():使动画进入下一场景的第1帧,并继续播放动画。
(3)enterFrame(进入帧):当导入帧的时候产生事件。 (4)mouseDown(鼠标按下):当鼠标左键按下时产生事件。 (5)mouseMove(鼠标移动):当鼠标在舞台中移动时产生事件。 (6)mouseUp(鼠标弹起):当鼠标左键释放时产生事件。 (7)keyDown(向下键):当键盘的某个键按下时产生事件。 (8)keyUp(向上键):当键盘的某个按键释放时产生事件。 (9)data(数据):当LoadVariables或者LoadMovie收到了数据变量时产生 事件。 上述命令均可以直接输入到程序编辑区中。 在具有脚本帮助的状态下,用鼠标将“动作-影片剪辑”面板左边命令列表区 中“全局函数”→“影片剪辑控制”目录下的onClipEvent命令拖动到右边程 序编辑区内,“动作-影片剪辑”面板。可以方便地选择一个或多个影片剪辑 事件。 5.“时间轴控制”全局函数 函数是完成一些特定任务的程序,通过定义函数,就可以在程序中通过调用 这些函数来完成具体的任务。函数有利于程序的模块化。Flash 8提供了大量
ActionScript3.0 编程基础_数据类型及其运算、程序流程

ActionScript3.0 编程基础_数据类型及其运算、程序流程关键字: flex7.3 数据类型和数据运算7.3.1 关于数据类型一个变量或者常量被声明时,必须指定其数据类型:原生数据类型:语言本身提供:字符串、整数、布尔型等复杂数据类型:由基本数据类型组成的复合型类型:类、接口等。
基本数据类型:∙Boolean:布尔型,true 和 false∙int:整数,存放32位二进制整数,范围:-2147483648~2147483647,当超出自动转为Number∙Null:空值,是字符串和所有类的默认值。
∙Number:整数型和浮点型,使用64位双精度格式存放数据,没有小数点时自动转换成整数。
最小值和最大值分别存放在Number 对象的MIN_VALUE 和 MAX_VALUE属性中。
∙String:字符串,以Unicode 编码格式存放。
∙uint:正整数类型,0~4294967295∙void:值为undefined,只能用作函数的返回类型。
1、Boolean:布尔型,它可以使用true或false(用于进行逻辑运算)两个值中一个值。
2、int:表示为 32 位带符号整数的数据类型。
int 类表示的值的范围是:-2,147,483,648 (-2^31) 到 2,147,483,647 (2^31-1)。
3、uint:表示 32 位无符号整数的数据类型的方法。
4、String:表示一串字符的数据类型。
5、Number:表示 IEEE-754 双精度浮点数的数据类型。
6、.Date:表示日期和时间信息。
复杂数据类型:Object 对象、 Array 数组、 Date 日期、Error 错误对象、Function 函数、 RegExp 正则表达式、XML XML数据对象、XMLList。
其中Object 是所有对象的基类。
以下是各个类型的默认值∙Object、Array :null∙Number:NaN∙int、uint:0∙Boolean:false∙*:不定类型,默认值:undefined。
ActionScript语法

正则表达式
正则表达式描述用于查找和处理字符串 中的匹配文本的模式。 ActionScript3.0的正则表达式符合 ECMAScript第3版语言规范 (ECMA-262)
正则表达式的术语
正则表达式(Regular expression):定义字符模 式的语句。 标志(Flag):给出如何使用字符模式的选项。 元字符(Metacharacter):在字符模式中具有特 殊含义的字符,它与字符的字面意义不同。 转义字符(Escape character):转义字符表示其 后面的字符是元字符,而不是字面意义。
包函数, 如flash.utils包中
getQualifiedClassNameReturns the fully qualified class name of an object. describeTypeProduces an XML object that describes the ActionScript object named as the parameter of the method. ……
“方法”和“函数闭包”
如果将函数作为类定义的一部分或者将函数附加到 对象的实例,则该函数称为方法。 以其它任何方式定义的函数则称为函数闭包。
方法与函数闭包的区别在于定义函数的上下文
函数
Flash Player API全局函数
trace Displays expressions, or writes to log files, while debugging. parseInt Converts a string to an integer. isNaN Returns true if the value is NaN(not a number). ……
AS3.0自学教程

1.3.2 脚本窗口概述
• Action Script 3.0是很好的面向对象编程语言, 同样Flash CS3也提供了一个很不错的脚本编辑器, 这就是Flash的脚本窗口。使用脚本窗口可以创建 或者导入外部的脚本文件,这些文件可以是 ActionScript、Flash Communication或Flash JavaScript文件。
第1章 AcionScript 3.0概述
• ActionScript 3.0是针对Flash Player运行时环 境的编程语言,它用于处理各种人机交互、数据 交互等功能。本章将粗略的介绍ActionScript语 言的发展历史、新增特色、编程环境等内容,以 及第一个ActionScript3.0程序。
•
• •
• • • •
1.3.3 动作面板和脚本窗口的工具介绍
:折叠成对大括号按钮,用于对出现在当前包含插入点的成对大括号或小括号 间的代码进行折叠。 • :折叠所选按钮:用于折叠当前所选的代码块。 • :展开全部按钮:用于展开当前脚本中所有折叠的代码。 • :应用块注释按钮,用于将注释标记添加到所选代码块的开头和结尾。 • :应用行注释按钮,用于在插入点处或所选多行代码中每一行的开头处 添加单行注释标记。 • :删除注释按钮,用于从当前行或当前选择内容的所有行中删除注释标记。 • :显示/隐藏工具箱按钮,用于显示或隐藏“动作”工具箱。 • :脚本助手按钮(仅限动作面板),其用于打开和关闭“脚本助手”模式。 • :帮助按钮,用于显示“脚本”窗格中所选 ActionScript 元素的参考信 息。 • :面板菜单 (仅限动作面板),包含适用于动作面板的命令和首选参数。
• • • • • • • • 如果要在Flash CS3中加入ActionScript代码,可以直接使用动作面板来输入。 要打开动作面板,请执行下面的操作:单击【窗口|【动作】,或者按【F9】。 打开后的动作面板如图所示。 下面对图中各部分的名称及作用加以说明。 A:脚本窗格,用于输入代码的地方。 B:面板菜单,单击后可显示动作面板功能菜单 C:动作工具箱,可以通过双击或者拖动的方式将其中的ActionScript元素添加到脚 本窗格中。 D:脚本导航器,其有两个功能,一是通过单击其中的项目,可以将与该项目相关的 代码显示在脚本窗口中,二是通过双击其中的项目,对该项目的代码进行固定操作。
第3章 面向对象基础

3.2.1
类的定义
在ActionScript 3.0中使用class关键字进行类的定义。原则上 一个ActionScript 3.0的类对应一个扩展名为as的文件。这 样能够使程序结构更加清晰。
3.2.2
类的属性
类的属性是在类中定义的变量,并且可以被访问。属性可以 通过类进行访问。
3.2.3
类的方法
3.11.2
面向对象设计
首先,面向对象设计需要定义出比赛、运动员和状态接口以 及这些接口的基本联系。比赛的接口比较简单就是通过 一组运动员比赛得到冠军。运动员的接口也比较简单, 进行比赛,并且可以得到运动员的国籍。状态是属于运 动员的,反过来运动员也拥有状态,使用状态去比赛并 且决定比赛的成绩。
3.11.3
面向对象设计的概念是面试中经常遇到的问题。一部分是面 向对象的基本概念,一部分是面向对象设计的思想,模 式是面试时的一个重点。比较常见的有如下几个: 1.面向对象的三个基本要素是什么? 2.继承和实现有什么联系? 3.列举出几个常用的设计模式,并进行说明。
3.13
小结
本章中详细地描述了ActionScript 3.0面向对象的特性。面向 对象程序设计的方式和方法,初步的介绍了基本的设计 模式。
3.4.1
包
与Java语言一致 , ActionScript 3.0当中也是 按照文件夹 来排列包的 结构。不同 之处在于 ActionScript 3.0每一个文 件是以包为 基本元素存 在的。
3.4.2
名称空间
名称空间是 ActionScript 3.0 语言当中特有的 一个概念,可以 通过名称空间对 类的方法进行访 问限定。这点与 包的作用很像, 但可以在一个包 内命名多个名称 空间。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3 当单击某个按钮或按下键盘上的某个键时。 为了使应用程序能够对事件做出反应,必 须编写相应的事件处理程序。事件处理程 序是与特定对象和事件关联的动作脚本代 码。Flash MX 2004提供了三种编写事件处 理程序的方法。 1) 针对对象的on()事件和onClipEvent()事件 处理函数 2 )事件处理函数方法 3 )事件侦听器
在范例3-7的基础上,执行以下操作。 (1)打开影片剪辑实例的“动作”面板,把代码改 为 onClipEvent(load){ trace(“发生了load事件”); } onClipEvent(unload){ trace(“发生了unload事件”); } (2)移出第2帧上的空白关键帧,在第20帧插入帧, 在第21帧插入一空白关键帧,在第40帧插入帧。 (3)测试影片
如果想让菜单链接到网页上,可以在按 钮实例上加上: on(release){ getURL(“”); } 范例3-6:创建具有按钮状态的影片剪辑 (1)新建一个Flash文档。 (2)在场景中制作一个影片剪辑实例,双击 此实例进入元件的编辑场景,选中第一帧, 打开属性面板,设置帧标签为“_up”。
(3)分别在第二帧和第三帧插入一关键帧, 帧标签分别为_over和_down,同时修改场 景中的图形。 (4)返回主场景,单击实例,打开“动作” 面板,输入下列代码: on (release) { trace("这是一个影片剪辑实例"); } (5)测试影片。
2、OnClipEvent()事件处理函数 OnClipEvent()事件处理函数与on()事件处理函数 不同,它只能作用于影片剪辑实例,相关的代码 放在影片剪辑实例的“动作”面板中。 onClipEvent()函数的一般形式为 onClipEvent(事件名称){ //程序 } 编写程序时,Flash会自动提示onClipEvent()的事件 名称,对于影片剪辑而言,可指定的触发事件有9 种,分别如下:
1、load:影片剪辑一旦被实例化并出现在时 间轴中时,即启动此动作。 范例3-7:认识load事件 (1)新建一个Flash文档 (2)在场景中建一个影片剪辑实例,选中该 实例,打开“动作”面板,输入下列代码: onClipEvent(load){ trace(“发生了load事件”); } (3)测试影片,在“输出”面板中可以看到 输出的信息,只有一次。
下面就以第一种方法的事件为例,讲解 这种编写事件处理程序方法的应用。 1、on()事件处理函数 on()事件处理函数是最传统的事件处理 方法。它一般直接作用于按钮实例,也可 以作用于影片剪辑实例。 on()函数的一般形式为: on(鼠标事件){ //程序,这些程序组成的函数体响应鼠标事件 }
其中鼠标事件是“事件”触发器,当发 生此事件时,执行事件后面大括号中的程 序。 按钮可以响应鼠标事件,还可以响应 Key Press(按键)事件。对于按钮而言, 可指定触发动作的按钮时间有八种。 1、press:事件发生于鼠标指针在按钮上方, 并按下鼠标左键时。 2、release:事件发生于按钮上方按下鼠标 左键,接着松开鼠标左键时,也就是“单 击”。
当影片剪辑实例出现在第一帧时,发生load 事件,播放到第21帧,实例消失,发生 unload事件,帧继续播放,重复以上过程, 间隔的发生load事件和unload事件。 3、 enterFrame:以影片剪辑帧频不断触发 的动作。首先处理与enterFrame影片剪辑 事件关联的动作,然后才处理附加到受影 响帧的所有帧动作。 enterFrame事件其实是一个不断执行的程序, 执行的速度取决于帧频,Flash中默认的帧 频是12fbs,表示播放12帧需1秒的时间, 利用这个原理,可以制作一个简单的计时 器。
releaseOutside:事件发生于在按钮上方按下 鼠标左键,接着把鼠标指针移到按钮之外, 然后松开鼠标左键时。 rollover:事件发生于鼠标指针滑入按钮时。 rollOut: 事件发生于鼠标指针滑出按钮时。 dragOver:事件发生于按着鼠标左键不放, 鼠标指针滑入按钮时。 dragOut:事件发生于按着鼠标左键不放,鼠 标指针滑出按钮时。 keyPress:事件发的实例名,是函 数的参数,必须放在括号中。此函数这样调用: mcToFrame(mc); 这个函数已经可以用于所有的影片剪辑实例, 但还有一个不好的地方,就是不能被用户指定要 跳转的帧数,所以还可修改为: function mcToFrame(obj:MovieClip, frameNum:Number) { obj.gotoAndStop(frameNum); }
mcToFrame(); //调用函数 (4)测试影片,可以看到主场景中的影片剪 辑实例停在第20帧。 为了使函数适用于所有的影片剪辑实例, 函数中应建立一个数据类型为MoiveClip的 变量,用来代表影片剪辑的实例名。如下: function mcToFrame(obj:MovieClip){ obj.gotoAndStop(20); }
(3)按住Ctrl键不放,用鼠标拖动复制出七 个按钮实例,选中全部按钮实例,调出 “对齐”面板,分别单击对齐面板上的 “上对齐”和“水平居中分布”按钮。 (4)保持按钮元件实例的选中状态,按F8键 转换为影片剪辑元件,并在“属性”面板 中把实例名设置为menu。双击该影片剪辑 实例,进入到元件的编辑状态,创建一个 补间动画。 (5)测试影片,可看到菜单不断运动,将鼠 标指针移向按钮,菜单停止运动,鼠标指 针离开按钮,菜单又开始运动。
(3)选中第一帧,打开“动作”面板,输入 下列代码: var num = 5; while (num>0) { _root["mc"+num]._y = 200; _root["mc"+num]._x = mc1._x+num*mc1._width; num--; } (4)测试影片。
3.3 事件和事件处理 事件是指软件或硬件发生的事情,它需 要Flash应用程序对这些事件有一定的相应。 硬件发生的事件如按下键盘、单击鼠标、 移动鼠标等,软件发生的事件如影片剪辑 刚刚被载入场景,影片剪辑被卸载等。 为了使应用程序能够对事件做出反应, 必须使用事件处理函数。如单击按钮时, 可以停止影片的播放等。 范例3-4:用按钮控制物体的移动
此函数中,增加一个变量frameNum用 来代表要跳转的帧数,如果要使mc跳转到 第20帧,可以这样调用: mcToFrame(mc.20); 同样,要使影片剪辑实例mc1跳转到第 五帧,就可以使用此函数,这样调用: mcToFrame(mc1.5); 3.2 程序的三种基本结构 3.2.1顺序结构 顺序结构的程序是按顺序执行的,从程 序开头一直执行到结尾。只执行一次。
(3)选中直线,把实例名取名为“line”。 (4)新建一层,选中此层的第一帧,输入如 下代码: line._rotation+=5 (5)测试影片,直线按顺时针方向转动了5 度。 (6)把主场景中的两层都插入一帧,测试影 片,发现直线不断的旋转。 3.2.2选择结构 在选择结构程序中,有一个条件,当条件为
真时,执行一段代码,否则的话,执行另一 段代码。例如: var a=true; var b=3; if(a){ b*=3; }else{ b/=3; } trace(b);
这段程序中,因为a为真,所以只执行 b*=3,b等于9,程序中的b/=3跳过,最后执行 trace(b),输出9。 3.2.3循环结构 循环结构程序最主要的特点是有一个重 复执行程序的过程,当条件为真时,反复执 行程序,一直到条件为假时停止。 范例3-3:让影片剪辑横向均匀排列 (1)新建一个Flash文档 (2)在场景建立五个影片剪辑实例,实例名 分别设置为mc1、mc2、mc3、mc4、mc5
(1)新建一个Flash文档,并在场景中建立 一个影片剪辑实例,实例名设置为ball。 (2)单击按钮,打开动作面板,输入下列代 码: on (keyPress "<Left>") { ball._x -= 10; } (3)测试影片,按住左方向键不放,观看影 片剪辑实例的运动。 按下方向键就是一个事件,当这个事件发生 时,程序会对这个事件进行出理,让场景 中的影片剪辑实例的x坐标不断减少,形成 移动的效果。
第三章 最简单的ActionScript程序设计 3.1认识函数 函数在编程中必不可少,Flash中有 一些非常简单的函数,如: Stop(); 它的作用是停止当前正在播放的 SWF文件,其中stop代表函数的标识符, 即函数的名称。()表示运算符,所有函数 都有如下格式。 函数名();
例如:
nextFrame(); 这个函数表示将播放头转到下一帧。 有很多函数在()中还必须加入一些参数,例 如:gotoAndStop(8); 其中8为函数的参数,表示将播放头转到当前 场景中的第八帧并停止播放。函数中的参数 可以是多个,参数与参数之间用逗号隔开, 如: Math.atan2(y,x); 此函数表示以弧度为单位计算并返回y/x的反正 切值。
(4)返回主场景,在第二帧插入一帧,让其循环, 测试影片,虽然帧不断的循环播放,但输出的信 息也只有一次。 (5)返回主场景,在第二帧插入一空白关键帧,让 其循环播放,测试影片,将看到信息不断出现。 通过测试可以看出,当影片剪辑实例出现在时 间轴上时,load事件发生,当实例在事件轴上消 失又重新出现时,也会发生load事件。 2、unload:在时间轴中删除影片剪辑之后,此动作 在第一帧中启动。在向受影响的帧附加任何动作 以前,先处理与unload影片剪辑事件关联的动作。 Unload事件与load事件刚好相反,当影片剪辑实例 在时间轴上消失时才会发生。
Flash中的事件包括用户事件和系统事 件两类。用户事件是指用户直接与计算机 交互操作而产生的事件,例如单击或按下 键盘键等事件。系统事件是指Flash Player 自动生成的事件,它不是由用户生成的, 例如影片剪辑在舞台上第一次出现或播放 头经过某个关键帧等。 一般情况下,在以下几种情况下会产生 事件。 1 当在时间轴上播放到某一帧时。 2 当载入或卸载某个影片剪辑时。