《Flash ActionScript 30编程技术》课程简明教程.docx
《《Flash ActionScript 30编程技术》课程简明教程.docx》由会员分享,可在线阅读,更多相关《《Flash ActionScript 30编程技术》课程简明教程.docx(86页珍藏版)》请在冰豆网上搜索。
《FlashActionScript30编程技术》课程简明教程
《FlashActionScript3.0编程技术》课程简明教程
浙江外国语学院石其乐
模块1ActionScript3.0概述
1.1AdobeFlashCS5写入ActionScript3.0代码的方法
AdobeFlashCS5两种写入ActionScript3.0代码的方法:
在时间轴的关键帧加入ActionScript代码(动作面板介绍)
trace("Welcomeyou");
在外部写出一个单独的ActionScript类文件,然后绑定或者导入到fla文件中
(类的3种用法:
和fla文件绑定、和Flash中的库元件绑定、使用import关键字导入类)
和fla文件绑定(目的是为了AS代码和Flash设计完全剥离)(脚本窗口介绍)
实例
package{
import
publicclassWelcomeextendsSprite{
publicfunctionWelcome(){
trace("WelcomeYou");
}
}
}
模块2ActionScript3.0编程语言基础
2.1AS3.0语法
2.1.1点语法
1)可以采用对象后面跟点运算符的属性名称(方法)名称来引用对象的属性(方法)。
2)可以采用点运算符表示包路径。
3)可以使用点运算符描述显示对象的路径
实例
package
import;
import;
import;
publicclassAddTextSpriteextendsSprite{
publicfunctionAddTextSprite(){
//创建空容器
varsp:
Sprite=newSprite();
sp.x=50;
sp.y=50;
addChild(sp);
//创建文本对象
varmytext:
TextField=newTextField();
mytext.text="这是一个位于容器中的显示文本";
mytext.width=200;
//显示对象
sp.addChild(mytext);
}
}
}
2.1.2标点符号使用
分号(;)\逗号(,)\冒号(:
)\小括号(())\中括号([])\大括号({})
实例1
vardate:
Date=newDate();
varhh:
int=date.getHours();
if((hh>=0)&&(hh<=4)){
trace("深夜了,注意身体,该休息了!
");
}elseif((hh>=4)&&(hh<7)){
trace("清晨好,这麽早就上网呀?
!
");
}elseif((hh>=7)&&(hh<12)){
trace("早上好,一天之际在于晨,又是美好的一天!
");
}elseif((hh>=12)&&(hh<=13)){
trace("该吃午饭啦!
有什麽好吃的?
");
}elseif((hh>=13)&&(hh<=17)){
trace("外面的天气很热吧?
!
心静自然凉!
");
}elseif((hh>=17)&&(hh<=18)){
trace("太阳落山了!
快看看夕阳吧!
");
}elseif((hh>=18)&&(hh<=19)){
trace("吃过晚饭了吗?
");
}elseif((hh>=19)&&(hh<=23)){
trace("一天过的可真快!
今天过的好吗?
");
}
实例1
vararr:
Array=[1,2,3];
trace(arr[0]);
2.1.3注释
单行注释
多行注释
实例
/*单击以搜寻提示点(需要FLVPlayback组件)
单击此指定的元件实例会在指定的FLVPlayback组件实例中搜寻视频的提示点。
说明:
1.用您要搜寻的FLVPlayback组件的实例名称替换以下video_instance_name。
2.用要搜寻的提示点的名称替换以下"CuePoint1"。
保留引号("")。
*/
cp1.addEventListener(MouseEvent.CLICK,fl_ClickToSeekToCuePoint);
functionfl_ClickToSeekToCuePoint(event:
MouseEvent):
void
{
//用此视频组件的实例名称替换video_instance_name。
//用要搜寻的提示点的名称替换"CuePoint1"。
varcuePointInstance:
Object=myvideo.findCuePoint("提示点1");
myvideo.seek(cuePointInstance.time);
}
/*单击以搜寻提示点(需要FLVPlayback组件)
单击此指定的元件实例会在指定的FLVPlayback组件实例中搜寻视频的提示点。
说明:
1.用您要搜寻的FLVPlayback组件的实例名称替换以下video_instance_name。
2.用要搜寻的提示点的名称替换以下"CuePoint1"。
保留引号("")。
*/
cp2.addEventListener(MouseEvent.CLICK,fl_ClickToSeekToCuePoint_2);
functionfl_ClickToSeekToCuePoint_2(event:
MouseEvent):
void
{
//用此视频组件的实例名称替换video_instance_name。
//用要搜寻的提示点的名称替换"CuePoint1"。
varcuePointInstance:
Object=myvideo.findCuePoint("提示点2");
myvideo.seek(cuePointInstance.time);
}
/*单击以搜寻提示点(需要FLVPlayback组件)
单击此指定的元件实例会在指定的FLVPlayback组件实例中搜寻视频的提示点。
说明:
1.用您要搜寻的FLVPlayback组件的实例名称替换以下video_instance_name。
2.用要搜寻的提示点的名称替换以下"CuePoint1"。
保留引号("")。
*/
cp3.addEventListener(MouseEvent.CLICK,fl_ClickToSeekToCuePoint_3);
functionfl_ClickToSeekToCuePoint_3(event:
MouseEvent):
void
{
//用此视频组件的实例名称替换video_instance_name。
//用要搜寻的提示点的名称替换"CuePoint1"。
varcuePointInstance:
Object=myvideo.findCuePoint("提示点3");
myvideo.seek(cuePointInstance.time);
}
2.1.4关键字和保留字
2.1变量和常量
变量必须要先声明后使用
2.2.1声明变量的语法
var变量名:
数据类型;(例如:
vara:
int)
var变量名:
数据类型=值;(例如:
vara:
int=10)
2.2.2变量的命名规则
1)它必须是一个标识符。
它的第一个字符必须是字母、下划线(_)或美元记号($)。
其后的字符必须是字母、数字、下划线或美元记号。
注意:
不能使用数字作为变量名称的第一个字母。
2)它不能是关键字或动作脚本文本,例如true、false、null或undefined。
特别不能使用ActionScript的保留字,否则编译器会报错。
3)它在其范围内必须是唯一的,不能重复定义变量。
2.2.3变量的作用域
实例全局变量和局部变量
vari:
int=10;
trace("函数使用前访问变量i:
"+i);
functionTest(){
vari:
int=1;
trace("函数体内访问变量i:
"+i);
}
Test();
trace("函数体使用后访问变量i:
"+i);
/*
输出:
函数使用前访问变量i:
10
函数体内访问变量i:
1
函数体使用后访问变量i:
10
*/
2.2.4变量的默认值
实例
varp:
Boolean;
trace("Boolean型变量的默认值是:
"+p);
vari:
int;
trace("int型变量的默认值是:
"+i);
varj:
Number;
trace("Number型变量的默认值是:
"+j);
varobj:
Object;
trace("Object型变量的默认值是:
"+obj);
varstr:
String;
trace("String型变量的默认值是:
"+str);
varu:
uint;
trace("uint型变量的默认值是:
"+u);
varv:
*;
trace("*型变量的默认值是:
"+v);
/*
Boolean型变量的默认值是:
false
int型变量的默认值是:
0
NUmber型变量的默认值是:
NaN
Object型变量的默认值是:
null
String型变量的默认值是:
null
uint型变量的默认值是:
0
*型变量的默认值是:
undefined
*/
2.2.5使用const声明常量
const常量名:
数据类型;
const常量名:
数据类型=值;(例如:
constg:
Number=9.8)
2.3基础数据类型
基础数据类型:
int、uint、Number、Boolean和String
2.3.1整型(int)
数据范围:
-48(-231)~48(231-1)
2.3.2无符号整型(uint)
数据范围:
0~95(232-1)
2.3.3数值型(Number)
数据范围:
1.486231e+308~4.8412467e-324
注:
整数运算时优先使用int、uint
整数有正负之分时,使用int
只有正整数,使用uint
带小数的数值使用Number
2.3.4布尔型(Boolean)
两个值
true(真)
false(假)
实例
varb:
Boolean;
trace(b==0);//输出:
true
b=true;
trace(b==1);//输出:
true
2.3.5字符串型(String)
实例1
varstr:
String="welcome";
trace(str);
实例2转义字符
varstr:
String="我的名字是:
\"石其乐\"。
\n我的职业是:
\"教师\"。
";
trace(str);
2.4运算符与表达式
*学习运算符时应注意以下几点:
1.运算符的功能
2.与运算量的关系(要求运算量的个数,要求运算量的类型)
3.运算的优先级别例:
+-*/
4.结合方向例:
3*5/6a=b=c=5
2.4.1双元算术运算符
*ActionScript3.0编程语言中有5个双元算术运算符
+、-、*、/、%(求余)结合方向:
左结合
2.4.2自反算术赋值运算符
*一般说双元运算表达式呈下面的形式:
c=aOPb
例如:
c=a+b
a=a+b---->a+=b
*a+=b这种运算实际上是算术运算符与赋值运算符的合成或简化,
称为:
自反算术赋值运算符
a=a-b---->a-=b
a=a*b---->a*=b
a=a/b---->a/=b
a=a%b---->a%=b
+=、-=、*=、/=、%=
2.4.2自加自减运算符
i=i+1---->i+=1
i=i-1---->i-=1
后缀形式前缀形式
自加i++++i
自减i----i
先使用后增值
vara:
int;
varb:
int;
vari:
int=5;
a=i++;
b=i;
trace("a="+a,"b="+b);
输出:
a=5b=6
先增值后使用
vara:
int;
varb:
int;
vari:
int=5;
a=++i;
b=i;
trace("a="+a,"b="+b);
输出:
a=6b=6
2.4.3关系运算
ActionScript3.0编程语言中提供的关系运算符有:
>、>=、<、<=、==、!
=
优先级别:
后两个小于前四个
结合方向:
左结合
例:
c>a+b---->c>(a+b)
c>b!
=c---->(a>b)!
=c
a==ba==(ba=b>c---->a=(b>c)
*关系表达式的值只有两个:
关系表达式成立为真,以“true”表示
关系表达式不成立为假,以“false”表示
例:
vara:
int=2;
Varb:
int=3;
1)a==b的值为false
2)a
3)3-1>=a+1<=b+2的值true
过程:
3-1>=a+1<=b+2
2>=3<=5
0<=5
*ActionScript3.0编程语言中有三个逻辑运算符:
&&、||、!
优先级别:
!
高于&&、||
结合方向:
左结合
实例
vara:
int=1;
varb:
int=-1;
trace(a>0);//输出:
true
trace(b<0);//输出:
true
trace(a>0&&b<0);//输出:
true
trace(true&&false);//输出:
false
trace(false&&false);//输出:
false
trace(b>0);//输出:
false
trace(a>0||b>0);//输出:
true
trace(true||true);//输出:
true
trace(false||false);//输出:
false
补充资料:
例1:
写出描述点A(x,y)落在图中兰色部分(不压线)的ActionScript语言中表达式
-21
例2:
设a=3,b=4,c=5写出下列各逻辑表达式的值
(1)a+b>c&&b==c
(2)a||b+c&&b-c
(3)!
(a>b)&&!
c||1
(4)!
(x=a)&&(y=b)&&0
(5)!
(a+b)+c-1&&b+c/2
2.4.5条件运算
*条件运算是一种在两个表达式的值中选择一个的操作
*一般形式为:
e1?
e2:
e3(3>4?
5:
6)
*条件运算符优先于赋值运算符
*条件运算符结合方向:
右结合
a>b?
a:
c>d?
c:
d
a>b?
a:
(c>d?
c:
d)
实例
vari:
int=11;
i>10?
trace("大于10了"):
trace("小于10了");
//输出:
大于10了
2.4.6其他运算符
1)typeof运算符(用于测试对象的类型)
typeof(对象)
例如:
trace(typeof(10))
2)is运算符(用于判断一个对象是不是属于一种数据类型,返回Boolean型变量。
trace(“5”isNumber);//输出false
3)as运算符
as运算符和is运算符的使用格式相同,但是返回的值不同。
如果对象的类型相同,返回对象的值;若不同,则返回null。
trace(“5”asNumber);//输出null
trace(“5”asString);//输出5
2.4.7运算符的优先级
运算符优先顺序表
组
运算符
主要
[]、{x:
y}、()、f(x)、newx.y、x[y]、<>、>、@:
:
..
后缀
x++、x--
一元
++x、--x、+、-、~、!
、delete、typeof、void
乘法
*、/、%
加法
+、-
按位移位
<<、>>、>>>
关系
<、>、<=、>=、as、in、instanceof、is
等于
==、!
=、===、!
==
按位"与"
&
按位"异或"
^
按位"或"
|
逻辑"与"
&&
逻辑"或"
||
条件
?
:
赋值
=、*=、/=、%=、+=、-=、<<=、>>=、>>>=、&=、^=、|=
逗号
模块3ActionScript3.0程序设计
3.1程序的三种结构
3.1.1顺序结构
3.1.2选择结构
3.1.3循环结构
3.2选择程序结构
if..else条件语句
if..elseif..else语句
Switch语句
3.2.1if..else条件语句
基本格式
流程图
if(表达式){
语句1;
}
else
{
语句2;
}
实例1
vara:
uint=12;
if(a%2==0)
{
trace(a,"是偶数。
");
}
else
{
trace(a,"是偶数。
");
}
基本格式
流程图
if(表达式){
语句
}
实例2
vara:
uint=12;
if(a%2==0)
{
trace(a,"是偶数。
");
}
3.2.2if..elseif..else语句
基本格式
if(表达式1){
语句1;
}
elseif(表达式2){
语句2;
}
elseif(表达式3){
语句3;
}
.
.
.
elseif(表达式n){
语句n;
}
else{
语句m;
}
流程图
实例
vardate:
Date=newDate();
varhh:
int=date.getHours();
if((hh>=0)&&(hh<=4)){
trace("深夜了,注意身体,该休息了!
");
}elseif((hh>=4)&&(hh<7)){
trace("清晨好,这麽早就上网呀?
!
");
}elseif((hh>=7)&&(hh<12)){
trace("早上好,一天之际在于晨,又是美好的一天!
");
}elseif((hh>=12)&&(hh<=13)){
trace("该吃午饭啦!
有什麽好吃的?
");
}elseif((hh>=13)&&(hh<=17)){
trace("外面的天气很热吧?
!
心静自然凉!
");
}elseif((hh>=17)&&(hh<=18)){
trace("太阳落山了!
快看看夕阳吧!
");
}elseif((hh>=18)&&(hh<=19)){
trace("吃过晚饭了吗?
");
}elseif((hh>=19)&&(hh<=23)){
trace("一天过的可真快!
今天过的好吗?
");
}
3.2.3switch语句
基本格式
switch(表达式){
case:
常量表达式1
程序语句1;
break;
case:
常量表达式2
程序语句2;
break;
.
.
.
case:
常量表达式n
程序语句n;
break;
default:
程序语句n+1;
}
流程图
实例
vardate:
Date=newDate();
vardd:
uint=date.getDay();
switch(dd){
case0:
trace("今天星期日");
break;
case1:
trace("今天星期一");
break;
case2:
trace("今天星期二");
break;
case3:
trace("今天星期三");
break;
case4:
trace("今天星期四");
break;
case5:
trace("今天星期五");
break;
case6:
trace("今天星期六");
break;
default:
trace("超出星期范围,是不可能的!
");
break;
}
3.3循环程序结构
3.3.1for循环语句
基本格式
流程图
for(初始化;循环条件;步进语句){
循环执行的语句;
}
实例
//初始化变量
varsum=0;
//下面是for循环
for(vari:
int=1;i<=100;i++){
sum=sum+i;//循环体
}
trace("sum="+sum);//输出结果
3.3.2while循环语句
基本格式
流程图
while(循环条件){
循环执行的语句
}
实例
//先初始化变量
vari:
int=0;
varsum:
int=0;
//下面是while循环
while(i<=100){
sum=sum+i;
i++;
}
trace("sum="+sum);
//输出:
sum=5050
3.3.3do…while循环语句
基本格式
流程图
do{
循环执行的语句
}while(循环条件)
实例
//初始化变量
vari:
int=0;
varsum:
int;
//循环语句
do{;
//循环体
sum+=i;
i++;
}while(i<=100);
//输出结果
trace("sum="+sum);
//输出:
sum=5050
3.3.4循环的嵌套
//循环语句1
for(vari:
int=1;i<10;i++){
//循环语句2
for(varj:
int=1;j<=i;j++){
//循环体
varlabel:
TextField=newTextField();
label.text=i+"×"+j+"="+i*j;
label.x=5+50*i;
label.y=20*j;
addChild(label);
}
}
//在FlashPlayer中显示99乘法表
模块4函数