情热传说x 称号:引用 FLASH动作脚本基本知识 - 成靖的日志 - 网易博客

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 13:15:21

引用 FLASH动作脚本基本知识

FLASH上传空间 2009-09-22 07:51:36 阅读13 评论0 字号:大中

 

引用

平安如意FLASH动作脚本基本知识

FLASH动作脚本基本知识

第一讲 动作脚本基本知识

一、 动作脚本概念动作脚本就是 Flash MX 为我们提供的各种命令,运算符以及对象,使用动作脚本时必须将其附加在按钮、影片剪辑或者帧上,从而使单击按钮和按下键盘键之类的事件时触发这些脚本。以便实现所需的交互性。

学习动作脚本的最佳方法是对其进行实际操作,即使对动作脚本没有完全理解,也不影响对其控制功能的使用,一样能够实现简单的交互性操作,经过一段时间的实践对基本的动作(如 play 和 stop)运用自如,对动作脚本略知一二后,就可以开始学习关于此语言的更多知识了。

二 、动作脚本面板当我们为帧,按钮或影片剪辑指定动作时必须使用动作面板,动作面板的结构如示例1.1

三、基本动作控制命令

1 停止命令格式; stop();

说明动作;停止播放头的移动

2 播放命令

格式;play();

说明动作;在时间轴中向前移动播放头。

3 转移命令gotoAndPlay(scene, frame)

参数scene 播放头将转到的场景的名称。frame 播放头将转到的帧的编号或标签。

动作;将播放头转到场景中指定的帧并从该帧开始播放。如果未指定场景,则播放头将转到当前场景中的指定帧。以上三个命令是动作脚本中最常用的基本动作,它们通过对时间轴上播放头的控制实现的特定功能,在对播放头实施控制时一般有多种方法可供选择,但最常用的是在坐标系内部实施控制和在不同坐标系之间实施控制,前者直接使用命令就可以实现目的(见示例1.2和示例1.3),后者则必须使用目标路径才能实现控制功能(见示例1.4和示例1.5)

四 按钮

使用按钮元件可以在影片中创建响应鼠标点击、滑过或其它动作的交互式按钮。可以定义与各种按钮状态关联的图形,然后指定按钮实例的动作。请参阅为按钮指定动作。在单击或滑过按钮时要让影片执行某个动作。您必须将动作指定给按钮的一个实例;该元件的其它实例不受影响。

当为按钮指定动作时,必须将动作嵌套在 on 处理函数中,并指定触发该动作的鼠标或键盘事件。当在标准模式下为按钮指定动作时,会自动插入 on 处理函数,然后您可从列表中选择一个事件。您也可用动作脚本 Button 对象的事件在发生按钮事件时执行脚本。************************************************

注释1:命令中的圆括号(1) 圆括号一般用来放置函数的参数以便传递这些参数,我们所学习的各种命令,也都可以称为函数.

例如gotoandplay(2);

数字"2"只有放在圆括号内,才能进行传递(2)表示运算符优先级当在同一语句中使用两个或多个运算符时,一些运算符会优先于其它的运算符。动作脚本按照一个精确的层次来确定首先执行那个运算符。例如,乘法总是先于加法执行;但是,括号中的项目会优先于乘法。因此,如果没有括号,动作脚本会在下面的示例中首先执行乘法:

to = 2 + 4 * 3;

结果为 14。

但是当加法运算在括号内时,动作脚本会首先执行加法:

total = (2 + 4) * 3;

结果为 18。

(3) 简化语句例如使用括号评估点语法中点左侧的表达式。例如,在下面的语句中,括号会使 new Color(this) 评估并创建一个新的 Color 对象:

onClipEvent(enterFrame) {

(new Color(this)).setRGB(0xffffff);

}

如果不使用括号,则需要添加一个语句来评估该表达式:

 

onClipEvent(enterFrame) {

myColor = new Color(this);

myColor.setRGB(0xffffff);

}

注释2 分号" ; "

动作脚本语句是用分号结束的。例如,下面的语句是用分号结束的:

_root.getDay();

如果省略了结束分号,Flash 仍然能够成功地编译脚本。但是,使用分号是一个很好的脚本撰写习惯。

******************************************************

小节本章重点:是学会如何使用基本命令和按钮控制影片剪辑1命令可以写在时间轴上2命令可以附加在按钮上3按钮有一些on事件关于动作面板和目标路径大家可以稍作了解,以后我们会在实例中经常讲

第二讲 数据

一 数据

我们思考一下计算机程序所作的一些事情,财务管理程序能够打印帐单,字处理程序能够输入和编辑文本,视频处理程序能够让我们观看影片和玩各种游戏,等等数不胜数,但所有程序都有一个共同特点;他们都需要处理数据.flash中根据数据的处理方法的不同,对数据进行了分类,他们是;数值类型,字符串类型,布尔类型,对象类型,影片剪辑类型,未定义类型共六种.

计算机在处理这些数据的时候,必需使用某种方法存储这些数据,变量就是服务于该目的,所以我们常说"变量是保存信息的容器",下面我们先看看几个最常用的数据

1 number (数值)类型

数值型数据指的是我们常用的数字。可以使用算术运算符加 (+)、减 (-)、乘 (*)、除 (/)、求模 (%)、递增 (++) 和递减 (--) 来处理。也可使用内置的 Math 对象的方法处理数字.使用Number()可以指定数据为数值类型.Number();又叫数值转换函数.

Number(...);

圆括号中放入要转换为数字的表达式

示例2.11

a=2;

b=10;

trace(a-b);

trace(math.abs(a-b));

c=Number(a)+Number(b);//指定a,b为数值型数据,然后求和

2 string(字符串)类型

字符串是诸如字母、数字和标点符号等字符的序列。将字符串放在双引号之间,可以在动作脚本语句中输入它们。字符串被当做字符,而不是变量进行处理。使用String()可以指定数据为字符串类型也可以将数值类型的数据转换为字符串型数据.String();又叫字符串转换函数.

String(...);

圆括号内为要转换为字符串的表达式。

如;  c=String(a)+String(b); //指定a,b为字符串型数据.然后将a,b连接起来

例如,在下面的语句中,"L7" 是一个字符串:

a1 = "L7";

可以使用加法 (+) 运算符连接 或合并两个字符串。

例如

a1="mc"+"2";

trace(a1);

虽然动作脚本在引用变量、实例名称和帧标签时不区分大小写,但是文本字符串是区分大小写的。例如,下面的两个语句会在指定的文本字段变量中放置不同的文本,这是因为 "Hello" 和 "HELLO" 是文本字符串。

invoice.display = "Hello";

invoice.display = "HELLO";

要在字符串中包含引号,可以在它前面放置一个反斜杠字符 (\)。要换行时加入一个(\n)就可以了,这称为字符转义。

示例2.12换行和插入" "号

on (release) {

dd = "中国老三届是我flash入门的地方,\n我的第一个作业是\"运动的光碟\".";

trace(dd);

}

3 boolean(布尔)类型

布尔值是 true 或 false 。动作脚本也会在需要时将值 true 和 false 转换为 1 和 0。布尔值在进行比较以控制脚本流的动作脚本语句中经常与逻辑运算符一起使用。例如,在下面mc中的脚本中,如果变量 a 为 true,变量b也为true则会播放影片mc:

onClipEvent(enterFrame) {

if (b == true && a== true){

play();

}}

实例制作--数据观察

制作步骤

1 选择文本工具在属性栏选输入文本,字号20,颜色黑,在场景中点击构造一个输入文本框,同样的方法再构造一个文本框,并分别在属性面板的变量栏把变量命名为a和b

2选择文本工具在属性栏选动态文本,字号,颜色同上,在场景中点击构造一个动态文本框,在属性面板的变量栏把变量命名为为c,

3选择文本工具在属性栏选静态文本,在场景中制作"+"和"=",放在两个输入文本之间,其后面放"="号,在"="后放动态文本框,

4在公用库中拖出一个按钮,把它一个放在动态文本后面

5在第二帧插入一个关键帧,

6点击第一帧,又点击放在动态文本后面的按钮,打开动作面板输入一下脚本

on (release) { //按下并释放;

c=Number(a)+Number(b); //指定a,b为数值类型的数据,执行加运算后存入c中;

}

7点击第二帧,又点击放在动态文本后面的按钮,打开动作面板输入一下脚本

on (release) { //按下并释放;

c = String(a)+String(b); //指定a,b为字符串类型的数据,执行加运算后存入c中;

}

8新建图层2从库中把按钮拖出两次,旁边分别标注数值型和文本型

点击选中数值型按钮写

on (release) {

gotoAndStop(1);

}

点击选中文本型按钮写

on (release) {

gotoAndStop(2);

}

至此实例完成.通过本实例我们学会

1用动态文本显示数据,用输入文本输入数据

2如何指定数据类型

3字符串数据加法运算是把数据进行连接,数值类型是求和

4复习按钮的goto命令

第三讲 关键字和变量

一 标识符

flash中标识符是用于表示变量、属性、对象、函数或方法的名称。它的第一个字符必须是字母、下划线 (_) 或美元记号 ($)。其后的字符必须是字母、数字、下划线或美元记号。例如,firstName 是一个变量的名称。

二 关键字

关键字是有特殊含义的保留字。例如,var 是用于声明本地变量的关键字。不能使用关键字作为标识符。例如,var 不是合法的变量名。

flash中定义了一些保留关键字,所谓保留关键字就是flash系统已经严格定义了的一类标识符,它们具有固定的含义,不允许再定义或另作它用.flash中的关键字一共有32个,下表列出了所有动作脚本关键字.

break

case

class

continue

default

delete

dynamic

else

extends

for

function

get

if

implements

import

in

instanceof

interface

intrinsic

new

private

public

return

set

static

switch

this

typeof

var

void

while

with

 

下面我们先学习两个个关键字if和else

1 关键字 if和else

if是用来对条件进行计算并判断其真假的一个关键字,使用if构成所谓的条件语句,它的应用格式为;

if(...) {

mmm

}else{

nnn

}

 

说明

圆括号中放入条件,这个条件的计算结果为 true 时就执行大括号中的命令mmm。当这个条件计算结果为false时就执行else后面大括号中的命令nnn,

 

例如

if(2+3>1){ //计算并判断2+3的值是否大于1.如果大于1就输出一个"true"值,

gotoandstop(1); //如果判断结果为true, 就执行gotoadstop(1),

}else{ //如果判断结果为false,就执行gotandstop(2)

gotoandstop(2);

}

 

程序运行时关键字if首先计算2+3的值,然后判断2+3的值是否大于1,如果大于1则执行花括号中的语句,如果不大于1,则不执行else后面花括号中的语句.在实际应用中else有时被省略,省略后的形式为

 

if(2+3>1){

gotoandstop(1);

}

 

三 常量

1在程序运行过程中,其值保持不变的量叫常量,常量的类型有number,string和boolean型,还有一种用标识符表示的常量叫符号常量.

2 数值型常量

"中国" 字符串型常量

true 布尔型常量,代表"真"

false 布尔型常量,代表"假"

null 表示"空值"

newline 表示插入一个回车换行符号

undefined表示没有被赋值的变量,没赋值的变量可以认为是常量 ,类似于null

四 变量

变量是保存信息的容器。变量可以存储任何类型的数据:数字、字符串、布尔值、对象和影片剪辑。要使用变量必需首先把变量附加在某个位置上(如时间轴,影片剪辑,函数体中...),给他起一个名字,即命名变量,然后还得使用特定符号对变量进行声明.变量根据其使用范围可以分成全局变量和局部变量,若要测试变量的值,可以使用 trace() 动作,

1 命名变量

变量名称必须遵守下面的规则:

它必须是标识符。

它不能是关键字或动作脚本文本,例如 true、false、null 或 undefined。

它在其范围内必须是唯一的。

此外,不应将动作脚本语言中的任何元素用作变量名称;

2 声明变量

(1) " = "声明变量

格式 expression1 = expression2

参数

expression1 变量、数组元素或对象属性。

expression2 任何类型的值。

在flash mx中运算符 " = " 执行赋值操作,判断两个值是否相等使用运算符" == ",

示例

下面的示例使用赋值运算符将数字数据类型赋予变量 x。

x = 5

下面的示例使用赋值运算符将字符串数据类型赋予变量 x。

x = "hello"

(2) var声明本地变量

格式 var varriablenam [= m1] [...,varriablenam [=mi] ]

varriablenam 参数给出变量名

m1参数给这个声明的变量赋值

示例

var nam1;//变量被声明但没有赋值

var nam2=600;

var nam3="abcd",nam4="efg";//同时声明两个字符串变量

var mc_a=true;

var m,n,i,j=800;//同时声明四个变量,但只有变量j被赋值

var x;

var y = 1;

var z = 3, w = 4;

var s, t, u = z;

 

var nam=[1,2,3];

trace(nam[0]);

trace(nam[1]);

trace(nam[2]);

 

第四讲 点语法和算术运算符

一 点语法

在动作脚本中,点 (.) 用于表明与对象或影片剪辑相关联的属性或方法。它还用于标识影片剪辑、变量、函数或对象的目标路径。点语法表达式以对象或影片剪辑的名称开始,后面跟着一个点,最后以要指定的元素结束。

示例1

_x 属性表示影片剪辑在舞台上的 x 轴位置。表达式 MC1._x 引用影片剪辑实例 MC1 的 _x 属性。

示例2

aa 是 mc11 影片剪辑中设置的变量,此影片剪辑嵌在影片剪辑 mc1 之中。表达式 mc1.mc11.aa = true 将实例 mc11的 aa 变量设置为 true。

表达对象或影片剪辑的方法遵从同样的模式。例如,MC 实例的 play 方法在 MC 的时间轴中移动播放头,如同下面的语句:

MC.play();

注;flash中方法的概念;方法指的是带有某种动作行为的函数或命令,其特征是在使用时后面加一个圆括号,如stop();

点语法还使用两个特殊别名,_root 和 _parent。别名 _root 是指主时间轴。您可以使用 _root 别名创建一个绝对目标路径。例如,下面的语句调用主时间轴上影片剪辑 mc 中的函数 bu:

_root.mc.bu();

您可以使用别名 _parent 引用当前影片剪辑的父级。也可使用 _parent 创建相对目标路径。例如,如果影片剪辑 mc11 嵌入影片剪辑 mc1 的内部,则写在实例 mc11 的如下语句会指示 mc1 停止:

_parent.stop();

二 目标路径

 

三 算术运算符

算术运算符用来执行(number)数值类型的数据或表达式的算术运算操作,

1 " + "运算

格式 expression1 + expression2

参数 expression1、expression2 数字或字符串。

将数值表达式相加或者连接(合并)字符串。如果其中一个表达式为字符串,则所有其他表达式都被转换为字符串,然后连接起来。两个表达式都为整数时,和为整数;其中一个或两个表达式为浮点数时,和为浮点数。

示例

(1) trace (2 + 3);

(2) trace (2.5 + 3.25);

(3)

a = 1345;

b = "mc" ;

trace (a+b);

2 " - "运算符

减运算符用于用于符号反转或减法运算。

否定格式 –expression(符号反转)

减法格式 expression1 - expression2

示例

(1) -(2 + 3);语句将表达式 2 + 3 的符号反转。

结果为 -5。

(2) 5 - 2 ; //语句从整数 5 中减去整数 2

结果为 3,是一个整数。

(3) 3.25 - 1.5 //语句从浮点数 3.25 中减去浮点数 1.5。

结果为 1.75,是一个浮点数。

3 " * " 运算

将两个数值表达式相乘。

格式 expression1 * expression2

示例

(1) 2 * 3 //结果为 6,是一个整数。

(2) 2.0 * 3.1416 //结果为 6.2832,是一个浮点数。

4 "/"运算符

格式 expression1 / expression2

说明 将 expression1 除以 expression2。

示例

trace(22.0 / 7.0); //结果为 3.1429,是一个浮点数。

5 "%"按模取余运算

格式 expression1 % expression2

计算 expression1 除以 expression2 的余数。如果两个 expression 参数中有一个是非数字值,则模运算符尝试将它们转换为数字。expression 可以是数字或转换为数值的字符串。

示例

下面是一个使用模 (%) 运算符的数字示例。

trace (12 % 5);// returns 2

trace (4.3 % 2.1);// returns approximately 0.1

需要注意的是,当被除数取整数,除数取2的时候其余非1即0,这种情况类似于布尔值,有时可用于逻辑控制,是一个很有用的特性.

6 ++自增量运算

格式 ++expression

expression++

说明

    运算符(算术);将 expression 加 1 的预先递增和滞后递增一元运算符。expression 可以是变量、数组元素或对象属性。此运算符的预先递增格式 (++expression) 将 expression 加 1,然后返回结果。此运算符的滞后递增格式 (expression++) 将 expression 加 1 并返回 expression 的初始值(即加上 1 之前的值)。

示例

(1)预先递增

x = 1;

y = ++x;

(2)滞后递增

x = 1;

y = x++;

(3)

x=1;

y=++x;

trace(x);

trace(y);

(4)

i=1;

j=i++;

trace(i);

trace( j);

5 " - - "运算

格式

- -expression

expression- -

    运算符(算术);从 expression 中减 1 的预先递减和滞后递减一元运算符。此运算符的预先递减格式 (--expression) 从 expression 中减去 1,然后返回结果。此运算符的滞后递减格式 (expression--) 从 expression 中减去 1 然后返回 expression 的初始值(即减去 1 之前的值)。

示例

(1) 预先递减格

x = 3;

y = - -x;

(2)滞后递减格式

x = 3;

y = x- -

(3)i=2;

i=i-1;

trace(i);

(4)j=2;

j- -;

trace( j);

第五讲-赋值运算符和mc的属性

 

中国老三届脚本基础课教材2004.3.25

 

一 赋值运算符

 

 

1 " = "赋值运算

格式 expression1 = expression2

参数

expression1 变量、数组元素或对象属性。

expression2 任何类型的值。

说明

运算符;将 expression2(位于右侧的参数)的类型赋予 expression1 中的变量、数组元素或属性。

示例

下面的示例使用赋值运算符将数字数据类型赋予变量 x。

x = 21;

下面的示例使用赋值运算符将字符串数据类型赋予变量 x。

x = "hello";

2 "+="运算

格式 ;expression1+=expression2

参数;expression1、expression2 数字或字符串。

说明

运算符(算术组合赋值);将 expression1 + expression2 值赋予 expression1。例如,下面两个语句的结果是相同的:

x += y;

x = x + y;

此运算符也可以执行字符串连接运算。加法运算符 (+) 的所有规则适用于加法赋值 (+=) 运算符。

 

示例

(1)

x = 5;

y = 10;

x += y;

trace(x);

(2)

x = "My name is "

x += "Gilbert"

trace (x)//My name is Gilbert

3 "-="运算

格式;expression1、expression2 数字或计算结果为数字的表达式

说明

运算符(算术组合赋值);将 expression1 -expression2 的值赋予 expression1。例如,下面两个语句是相同的:

x -= y;

x = x - y;

字符串表达式必须转换为数字,否则返回 NaN。

示例

(1)

x = 5;

y = 10;

x -= y

trace(x);//-5

(2)

x = "5";

y = "10";

x -= y;

trace(x);//-5

(3)

x = "a5";

y = "10";

x -= y;

trace(x);//NaN

4 *=运算

格式;expression1 *=expression2

说明

运算符(算术组合赋值);将 expression1 *expression2 的值赋予 expression1。例如,下面两个表达式是相同的:

x *= y

x = x * y

 

示例

(1)

x = 5;

y = 10;

trace (x *= y);//50

(2)

i = 5;

x = 4 - 6;

y = i + 2;

trace(x *= y);//-14

5 "/="运算

expression1/=expression2

参数;expression1、expression2 数字或计算结果为数字的变量。

 

说明

运算符(算术组合赋值);将 expression1/expression2 的值赋予 expression1。例如,下面两个语句是相同的:

x /= y

x = x / y

示例

x = 10;

y = 2;

x /= y;

6 "%="运算

格式;expression1%=expression2

说明

运算符(算术复合赋值);将 expression1% expression2 的值赋予 expression1。例如,下面两个表达式是相同的:

x %= y

x = x % y

示例

x = 14;

y = 5;

trace(x %= y);//4

二 影片剪辑的属性

每个影片剪辑在建立时都继承影片剪辑类的所有属性,我们可以在程序中调用和设置这些属性,如果不设置这些属性系统会默认设置这些属性.研究mc的属性应该首先熟悉设置属性和调用属性的两个命令

1 setProperty(位于;动作--影片剪辑控制)

 

setProperty("target",property,value/expression)

 

参数

 

target 到要设置其属性的影片剪辑实例名称的路径。

property 要设置的属性。

value 属性的新文本值。

expression 计算结果为属性新值的公式。

说明

动作;当影片播放时,更改影片剪辑的属性值。

示例

当单击按钮时,此语句将名为 star 的影片剪辑的 _alpha 属性设置为 30%:

on(release) {

setProperty("star", _alpha, "30");

}

2 getProperty(位于;函数)

getProperty(instancename , property)

参数

instancename 要获取其属性的影片剪辑的实例名称。

property 影片剪辑的属性。

说明

函数;返回影片剪辑 instancename 的指定 property 的值。

示例

下面的示例获取影片剪辑 mc1 的水平轴坐标 (_x),并将其分配给变量mymc1x:

 

mymc1x = getProperty(_root.myMovie, _x);

 

本讲重点掌握

(1)赋值运算符" += "

(2)赋值运算符" -= "

 

(3)mc属性设置命令setProperty

(4)mc属性调用命令getProperty

第六讲按钮控制复习

第七讲比较运算符与mc属性

一 比较运算符

1 "<"小于比较(lt)

格式;expression1 < expression2

参数;expression1、expression2 数字或字符串。

说明

运算符(比较);比较两个表达式以确定 expression1 是否小于 expression2;如果是,则该运算符返回 true。如果 expression1 大于或等于 expression2,则该运算符返回 false。使用字母顺序计算字符串表达式;所有的大写字母排在小写字母的前面。

示例

下面的示例举例说明数数值比较和字符串比较所返回的 true 和 false。

3 < 10;// true

10 < 3;// false

"Allen" < "Jack";// true

"Jack" < "Allen";// false

 

"11" < "3";//true

"11" < 3;// false

"C" < "abc";// false

cc="A" < "a";

trace(cc);//true

1 "<"小于比较(lt)     2 "<="小于等于(le)            3 ">"大于比较(gt)   4 ">="大于等于(ge)

5 "=="相等(eg)       6 "!="不相等(<>)             7 "==="严格相等    8 "!==="不严格相等

二 影片剪辑属性2

1 透明度 _alpha

格式

myMovieClip._alpha

说明

属性;设置或获取由 MovieClip 指定的影片剪辑的 Alpha 透明度 (value)。有效值为 0(完全透明)到 100(完全不透明)。如果影片剪辑的 _alpha 设置为 0,虽然其中的对象不可见,但也是活动的。例如,依然可以点击一个 _alpha 属性设置为 0 的影片剪辑中的按钮。

 

示例

下面的语句在点击按钮时,将名为 star 的影片剪辑的 _alpha 属性设置为 30%:

 

on(release) {

star._alpha = 30;

}

2 旋转_rotation

格式

myMovieClip._rotation

说明

属性;以度为单位指定影片剪辑的旋转。

3 可见性_visible

格式

myMovieClip._visible

说明

属性;一个布尔值,指示由 MovieClip 参数指定的影片是否可见。不可见的影片剪辑(_visible 属性设置为 false)处于禁用状态。例如,不能点击 _visible 属性设置为 false 的影片剪辑中的按钮。

第8讲 逻辑运算与mc属性

一 逻辑运算

1 逻辑非"!"(not)

格式

!expression

说明

运算符(逻辑);对变量或表达式的布尔值取反。如果 expression 是绝对值或转换值为 true

的变量,则 !expression 的值为 false。如果表达式 x && y 的计算结果为 false,则表达式

!(x && y) 的计算结果为 true。

下面的表达式说明使用 ! 运算符的结果:

!true 返回 false

!false 返回 true

2 逻辑与"&&"(snd)

格式

expression1 && expression2

说明

对一个或两个表达式的值执行布尔运算。计算 expression1(该运算符左侧的表达式),当

此表达式的计算结果为 false 时返回 false。如果 expression1 的计算结果为 true,则计算

expression2(该运算符右侧的表达式)。如果 expression2 的计算结果为 true,则最终结果

为 true;否则,为 false。

3 逻辑或"||"(or)

格式

expression1 || expression2

参数

expression1、expression2 布尔值或转换为布尔值的表达式。

说明

运算符(逻辑);计算 expression1 和 expression2。如果其中任何一个或者两个表达式的计

 

算结果为 true,则结果为 true;只有当两个表达式的计算结果都为 false 时,结果才为

 

false。逻辑 OR 运算符可用于任意多个操作数;只要任意一个操作数的计算结果为 true,则

结果为 true。

对于非布尔表达式,逻辑 OR 运算符使得 Flash 对左侧的表达式进行计算;如果左侧的表达式

可以转换为 true,则结果为 true。否则,计算右侧的表达式,而且结果就是该表达式的值。

二 影片剪辑属性3

1 影片剪辑宽度 _width

格式

myMovieClip._width

说明

以像素为单位设置和获取影片剪辑的宽度。

2 影片剪辑高度 _height

格式

myMovieClip._height

说明

以像素为单位设置和获取影片剪辑的高度。

3 _x缩放系数 _xscale

格式

myMovieClip._xscale

4 _y缩放系数

格式

myMovieClip._yscale

说明

xscale和_yscale的值代表了相对于库中原影片剪辑的横向尺寸width和纵向尺寸height的百分

比,100为影片剪辑在编辑时的大小,大于100时起放大作用,在0-100之间时起缩小作用,小于0时发生翻转.

第9讲 影片剪辑事件与拖动

一 OnclipEvet

前面我们主要练习了把命令写在时间轴的关键帧上和按钮上,其实我们还可以把命令写在影片剪辑上,我们知道命令写在按钮上的时候,必需首先写on事件例如;on(press){...}或者on(release){...}等等,用来表示鼠标在按钮上发生的动作,同样的道理当我们把命令写在影片剪辑上的时候必需首先写OnclipEvet.

事件处理函数OnclipEvet与on命令十分类似,不同的是on事件设置的是鼠标或键盘事件,而OnclipEvet命令设置的是影片剪辑事件,它只能附加在影片剪辑上面,不能写在帧或按钮元件上.OnclipEvet的事件有九重,他们是

(1) load 当movieclip被下载到当前场景的时间轴上时触发load事件.

(2) unload 事件在当前场景的时间轴上,当movieclip被卸载时触发unload事件,在卸载后第一帧执行OnclipEvet命令设定的操作

(3) enterFrame 以影片帧频不断地触发此动作。

(4) mouseMove 每次移动鼠标时启动此动作。_xmouse 和 _ymouse 属性用于确定当前鼠标位置。

(5) mouseDown 当按下鼠标左键时启动此动作。

(6) mouseUp 当释放鼠标左键时启动此动作。

(7) keyDown 当按下某个键时启动此动作。使用 Key.getCode(); 方法获取最近按下的键的有关信息。

(8) keyUp 当释放某个键时启动此动作。使用 Key.getCode() 方法获取最近按下的键的有关信息。

(9) data 当在 loadVariables 或 loadMovie 动作中接收数据时启动此动作。当与 loadVariables 动作一起指定时,data 事件只发生一次,即加载最后一个变量时。当与 loadMovie 动作一起指定时,获取数据的每一部分时,data 事件都重复发生。

二拖动命令

1 startDrag

格式

startDrag(target,[lock ,left ,top ,right,bottom])

参数

target 要拖动的影片剪辑的目标路径。

lock 一个布尔值,指定可拖动影片剪辑是锁定到鼠标位置中央 (true),还是锁定到用户首次点击该影片剪辑的位置上 (false)。此参数是可选的。

left、top、right、bottom 相对于影片剪辑父级坐标的值,这些坐标指定该影片剪辑的约束矩形。这些参数是可选的。返回无。

说明动作;使 target 影片剪辑在影片播放过程中可拖动。一次只能拖动一个影片剪辑。执行 startDrag 动作后,影片剪辑将保持可拖动状态,直到被 stopDrag 动作明确停止为止,或者直到为其他影片剪辑调用了 startDrag 动作为止。

示例1

若要拖动放在任何位置的影片剪辑,可将 startDrag 和 stopDrag 动作附加到该影片剪辑内的某个按钮上。

on(press) {

startDrag(this,true);

}

on(release) {

stopDrag();

}

第10讲 鼠标

一 捕获鼠标的坐标

我们可以用两种方法捕获鼠标的坐标,其一是用影片剪辑的_xmouse和_ymouse属性,是最常用的方法,其二是对影片剪辑设置跟随,获取该影片剪辑的坐标用来替代鼠标的坐标.获取鼠标坐标的脚本可以写在时间轴上也可以写在影片剪辑上,下面我们使用影片剪辑的enterFrame()和mouseMove事件来做实验

1 影片剪辑的mouseMove事件

onClipEvent (mouseMove) {

_root.my_xmouse = _xmouse;

_root.my_ymouse = _ymouse;

}

2 影片剪辑的enterFrame事件

onClipEvent (enterFrame) {

_root.a=_root._xmouse;

_root.b=_root._ymouse;

}

3 设置跟随测试mc坐标替代鼠标坐标

onClipEvent (enterFrame) {

startDrag(_root.mc, true);

_root.a=getProperty(_root.mc,_x);

_root.b=getProperty(_root.mc,_y);

}

二 鼠标隐藏与替换

1 隐藏命令hide与显示命令 show

格式

Mouse.hide()

说明

方法;隐藏影片中的光标。默认情况下,光标可见。使用Mouse.show()可以把隐藏的鼠标显示出来.

示例

下列附加到主时间轴上的影片剪辑上的代码会隐藏标准光标,并将 mc 影片剪辑实例的 x 和 y 位置设置为主时间轴中的 x 和 y 鼠标位置。这种方法可以省去设置鼠标拖动命令的替换

onClipEvent(enterFrame){

Mouse.hide();

_root.mc._x = _root._xmouse;

_root.mc._y = _root._ymouse;

}

第十一讲复制与mc的颜色设置

一 复制duplicateMovieClip

1 duplicateMovieClip

格式

duplicateMovieClip(target, newname,depth)

参数 target 要复制的影片剪辑的目标路径。

newname 复制的影片剪辑的唯一标识符。

depth 复制的影片剪辑的唯一深度级别。深度级别是复制的影片剪辑的堆叠顺序。这种堆叠顺序很像时间轴中图层的堆叠顺序;较低深度级别的影片剪辑隐藏在较高堆叠顺序的剪辑之下。必须为每个复制的影片剪辑分配一个唯一的深度级别,以防止它替换现有深度上的影片。

说明

动作;当影片正在播放时,创建一个影片剪辑的实例。无论播放头在原始影片剪辑(或“父级”)中处于什么位置,复制的影片剪辑的播放头始终从第一帧开始。父影片剪辑中的变量不拷贝到复制的影片剪辑中。如果删除父影片剪辑,则复制的影片剪辑也被删除。使用 removeMovieClip 动作或方法可以删除由 duplicateMovieClip 创建的影片剪辑实例。

示例1;当用按钮设置变量kk为1时,复制15次mc, 源文件见"命令写在帧上复制"

i++;

if(_root.kk==1){

duplicateMovieClip(_root.mc,"mc"+i,i);

mx=getProperty("mc"+i,_x);

my=getProperty("mc"+i,_y);

setProperty("mc"+i,_x,mx+i*35);

setProperty("mc"+i,_y,my);

set("mc"+i+".a",i);

}

if(i>=15){

i=0;

}

示例2 源文件见"命令写在按钮上复制"

按钮1

on (release) {

i++;

if(i>10){

i=0;

}

k = 0;

duplicateMovieClip(mc, "mc"+i, i);

mx = getProperty("mc"+i, _x);

my = getProperty("mc"+i, _y);

setProperty("mc"+i, _x, mx+i*50);

setProperty("mc"+i, _y, my);

set("mc"+i+".a", i);

}

按钮2

on (release) {

k++;

if(k>10){

k=0;

}

i = 0;

duplicateMovieClip(mc, "mc"+k, k);

mx = getProperty("mc"+k, _x);

my = getProperty("mc"+k, _y);

setProperty("mc"+k, _x, mx+k*50);

setProperty("mc"+k, _y, my+k*50);

set("mc"+k+".a", k);

}

 

 

按钮3

 

on (release) {

j++;

removeMovieClip("mc"+j);

if(j>10){

j=0;

}

}

二 color对象

 

使用color(颜色)对象可以自由设置影片剪辑的颜色属性,在flash中颜色的值使用红绿兰三原色的值组合起来表示,格式为0xrrggbb其中rrggbb表示红绿兰,分别用十六进制数表示,取值范围为0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f.

例如

黑色0x000000

白色0xffffff

红色0xff0000

绿色0x00ff00

蓝色0x0000ff

黄色0xffff00

1 构造color对象

格式

new Color(target)

参数 target 影片剪辑的实例名称。

说明

构造函数;为由 target 参数指定的影片剪辑创建 Color 对象的实例。然后可使用该 Color 对象的方法来更改整个目标影片剪辑的颜色。

2用setRGB设置颜色对象

myColor.setRGB(0xRRGGBB)

参数  0xRRGGBB 要设置的十六进制或 RGB 颜色。对于 RR、GG 和 BB,每种代码由两个十六进制数字组成,这些数字指定每种颜色成分的偏移量。0x 告知动作脚本编译器该数字是十六进制数值。

说明

方法;指定 Color 对象实例的 RGB 颜色。

示例1

下面的示例为影片剪辑 mc 创建一个名为 myColor 的 Color 对象实例,并设置其 RGB 值:

myColor = new Color(mc);

myColor.setRGB(0xff9933);

示例2 源文件见"2颜色设置"

帧1

foo = 0;

帧2

foo++;

_root.mc.play();

duplicateMovieClip("_root.flower", "mc" + foo, foo);

setProperty("mc" + foo, _x, random(350));

setProperty("mc" + foo, _y, random(300));

setProperty("mc" + foo, _alpha, random(275));

setProperty("mc" + foo, _xscale, random(200));

setProperty("mc" + foo, _yscale, random(200));

col = random(0xafafaf+0x999999);

mycolor = new Color("mc"+foo);

mycolor.setRGB(col);

 

帧3

if(foo<100){

gotoAndPlay(2);

} else {

gotoAndPlay(1);

 

}

3 用setTransform进行颜色设置

格式

myColor.setTransform(colorTransformObject);

参数

colorTransformObject 使用 new Object 构造函数创建的对象。此 Object 对象实例必须具有下列指定颜色转换值的属性:ra、rb、ga、gb、ba、bb、aa、ab。这些属性在下面进行了解释。

说明

方法;设置 Color 对象实例的颜色转换信息。colorTransformObject 参数是通过 new Object 构造函数创建的通用对象。它具有指定颜色的红、绿、蓝和 alpha(透明度)成分百分比和偏移量数值的参数,下面是设置举例

颜色转换对象的参数与“高级效果”对话框中的设置相对应,定义如下:

- ra 是红色成分的百分比(-100 到 100)。

- rb 是红色成分的偏移量(-255 到 255)。

- ga 是绿色成分的百分比(-100 到 100)。

- gb 是绿色成分的偏移量(-255 到 255)。

- ba 是蓝色成分的百分比(-100 到 100)。

- bb 是蓝色成分的偏移量(-255 到 255)。

- aa 是 alpha 的百分比(-100 到 100)。

- ab 是 alpha 的偏移量(-255 到 255)。

可以按如下形式创建 colorTransformObject 参数:

myColorTransform = new Object();

myColorTransform.ra = 50;

myColorTransform.rb = 244;

myColorTransform.ga = 40;

myColorTransform.gb = 112;

myColorTransform.ba = 12;

myColorTransform.bb = 90;

myColorTransform.aa = 40;

myColorTransform.ab = 70;

也可使用以下语法来创建 colorTransformObject 参数:

myColorTransform = { ra: ‘50’, rb: ‘244’, ga: ‘40’, gb: ‘112’, ba: ‘12’, bb: ‘90’, aa: ‘40’, ab: ‘70’}

示例 源文件见"3颜色设置"

i=i+5;

duplicateMovieClip(mc,"mc"+i,i);

fmc=getProperty("mc"+i,_rotation)

setProperty("mc"+i,_rotation,fmc+i);

mycolor=new Color(mc);

myobj=new Object();

myobj.ra=random(100);

myobj.rb=random(255);

myobj.ga=random(100);

myobj.gb=random(255);

myobj.ba=random(100);

myobj.bb=random(255);

myobj.aa=random(100)-random(50);

myobj.ab=random(255)-random(80);

mycolor.setTransform(myobj);

第12讲 影片剪辑深度

一 影片剪辑深度

每个影片剪辑都具有自身的 z 顺序空间,z 顺序空间确定各对象在其父级 SWF 文件或影片剪辑中的重叠方式。每个影片剪辑都有一个关联的深度值,该值用来确定它是显示在同一个影片剪辑时间轴中其它影片剪辑的前面还是后面。当使用 MovieClip.attachMovie()、

MovieClip.duplicateMovieClip() 或 MovieClip.createEmptyMovieClip() 创建影片剪辑时,总是要以方法参数的形式为新剪辑指定一个深度。影片剪辑的深度值的范围是从 -16384 到 1048575。

格式

MovieClip.swapDepths()

用法

my_mc.swapDepths(depth)

my_mc.swapDepths(target)

参数

depth 一个数字,指定 my_mc 将被放置的深度级别。

target 一个字符串,指定其深度将被 my_mc 指定的实例交换的影片剪辑实例。两个实例必须具有相同的父级影片剪辑。

说明

方法;用由 target 参数指定的影片剪辑或者当前占据着 depth 参数中指定的深度级别的影片剪辑交换指定实例 (my_mc) 的堆叠,即 z 顺序(深度级别)。两个影片剪辑必须具有相同的父级影片剪辑。交换影片剪辑的深度级别的作用是将一个影片剪辑移到另一个影片剪辑的前面或后面。如果调用该方法时影片剪辑正在补间,则补间会停止。

示例1,以下代码将复制出一系列新影片剪辑,每个影片剪辑的深度都不相同

duplicateMovieClip(mc, "mc"+i, i);

示例2 以下代码将两个新影片剪辑附加到 my_mc。第一个剪辑(名为 mc_1)将显示在 mc_2 的后面,这是因为向第一个剪辑分配了一个较小的深度值。

container_mc.attachMovie("symbolID", "clip_1", 10);

container_mc.attachMovie("symbolID", "clip_2", 15);

示例3 当按钮点击后mc的深度将会被从新设置

on (release) {

_root.mc1.swapDepths(30);

_root.mc2.swapDepths(20);

_root.mc3.swapDepths(10);

}

第13讲 循环结构控制

一 while与do_while循环

while与do_while结构都可以按照一定的条件循环执行循环体,wihle结构先判定循环条件,当条件符合时就执行循环体,按顺序执行完循环体中的语句后,在返回wihle语句开始处,重新判定条件,并以此规则进行循环操作,直到循环条件为false时终止循环,转而执行wihle结构下面的命令,与wihle结构不同的是do_while循环结构先执行循环体中的语句,然后判定循环条件.这就是说do_while循环结构无论条件是否符合,循环至少执行一次.

1 while

格式

while(condition) {

statement(s);

}

参数

condition 每次执行 while 动作时都要重新计算的表达式。如果该语句的计算结果为 true,则运行 statement(s)。

statement(s) 条件的计算结果为 true 时要执行的代码。又叫循环体

说明

动作;测试表达式,只要该表达式为 true,就重复运行循环中的语句或语句序列。

在运行语句块之前,首先测试 condition;如果该测试返回 true,则运行该语句块。如果该条件为 false,则跳过该语句块,并执行 while 动作语句块之后的第一条语句。

通常当计数器变量小于某指定值时,使用循环执行动作。在每个循环的结尾递增计数器的值,直到达到指定值为止。此时,condition 不再为 true,且循环结束。

while 语句执行的步骤。

1 计算表达式 condition。2 如果 condition 的计算结果为 true,或者一个可转换为布尔值 true 的值(比如一个非零数字),则转到步骤 3。否则,while 语句结束,并从 while 循环之后的下一语句恢复执行过程。3 运行语句块 statement(s)。4 转到步骤 1。

步骤 1 至 4 的每次重复叫做循环的“迭代”。在每次迭代的开始重新测试 condition.

示例1

此示例在舞台上复制五个影片剪辑,每个影片剪辑具有随机生成的 、 位置;xscale、yscale 以及 _alpha 属性以达到分散的效果。.变量 foo 初始化为值 0。设置 condition 参数使 while 循环运行五次,即只要变量 foo 的值小于 5 就运行。在 while 循环中,复制影片剪辑,并使用 setProperty 调整所复制影片剪辑的各种属性。循环的最后一条语句递增 foo,以便当该值达到 5 时,condition 参数计算结果为 false,从而不再执行该循环。

on(release) {

foo = 0;

while(foo < 5) {

duplicateMovieClip("_root.flower", "mc" + foo, foo);

setProperty("mc" + foo, _x, random(275));

setProperty("mc" + foo, _y, random(275));

setProperty("mc" + foo, _alpha, random(275));

setProperty("mc" + foo, _xscale, random(200));

setProperty("mc" + foo, _yscale, random(200));

foo++;

}}

2 do_while

do {statement(s)

} while (condition)

参数

condition 要计算的条件。

statement(s) 只要 condition 参数计算结果为 true 就会执行的语句。

动作;执行语句,然后只要条件为 true,就计算循环中的条件。

二 for

格式

for(init; condition; next) {

statement(s);

}

 

参数

init 一个在开始循环序列前要计算的表达式,通常为赋值表达式。此参数还允许使用 var 语句。

condition 计算结果为 true 或 false 的表达式。在每次循环迭代前计算该条件;当条件的计算结果为 false 时退出循环。

next 一个在每次循环迭代后要计算的表达式;通常为使用 ++(递增)或 --(递减)运算符的赋值表达式。

statement(s) 在循环体内要执行的指令。

说明

动作;一种循环结构,首先计算 init(初始化)表达式一次,只要 condition 的计算结果为 true,则按照以下顺序开始循环序列,执行 statement,然后计算 next 表达式。

示例1

下面是使用 for 重复执行同一动作的示例。下面的代码中,for 循环将从 1 到 100 的数字相加:

var sum = 0;

for (var i=1; i<=100; i++) {

sum = sum + i;

trace(sum);//

}

结果