脚本语句Word文件下载.docx
《脚本语句Word文件下载.docx》由会员分享,可在线阅读,更多相关《脚本语句Word文件下载.docx(49页珍藏版)》请在冰豆网上搜索。
//FilenamePlant.as
classPlant{
//Definepropertynamesandtypes
varleafType:
String;
varbloomSeason:
//Followinglineisconstructor
//becauseithasthesamenameastheclass
functionPlant(param_leafType:
String,param_bloomSeason:
String){
//AssignpassedvaluestopropertieswhennewPlantobjectiscreated
this.leafType=param_leafType;
this.bloomSeason=param_bloomSeason;
}
//Createmethodstoreturnpropertyvalues,becausebestpractice
//recommendsagainstdirectlyreferencingapropertyofaclass
functiongetLeafType():
String{
returnleafType;
functiongetBloomSeason():
returnbloomSeason;
在外部脚本文件或"
动作"
面板中,使用new运算符创建一个Plant对象。
varpineTree:
Plant=newPlant("
Evergreen"
"
N/A"
);
//Confirmparameterswerepassedcorrectly
trace(pineTree.getLeafType());
trace(pineTree.getBloomSeason());
下面的示例创建一个名为ImageLoader的类。
ImageLoader构造函数采用三个参数。
//FilenameImageLoader.as
classImageLoaderextendsMovieClip{
functionImageLoader(image:
String,target_mc:
MovieClip,init:
Object){
varlistenerObject:
Object=newObject();
listenerObject.onLoadInit=function(target){
for(variininit){
target[i]=init[i];
}
};
varJPEG_mcl:
MovieClipLoader=newMovieClipLoader();
JPEG_mcl.addListener(listenerObject);
JPEG_mcl.loadClip(image,target_mc);
}
面板中,使用new运算符创建一个ImageLoader对象。
varjakob_mc:
MovieClip=this.createEmptyMovieClip("
jakob_mc"
this.getNextHighestDepth());
varjakob:
ImageLoader=newImageLoader("
jakob_mc,{_x:
10,_y:
10,_alpha:
70,_rotation:
-5});
break语句
break
出现在循环(for、for..in、do..while或while)内或与switch语句中的特定情况相关的语句块内。
当在循环中使用时,break语句指示Flash跳过循环体的其余部分,停止循环动作,并执行循环语句后面的语句。
当在switch中使用时,break语句指示Flash跳过此case块中的其余语句,并跳到包含它的switch语句后面的第一个语句。
在嵌套循环中,break语句只跳过当前循环的其余部分,而不是跳出整个系列的嵌套循环。
关于跳出整个系列的嵌套循环,请参见try..catch..finally。
FlashPlayer4;
ActionScript1.0
下面的示例使用break语句来退出一个循环(如果没有该语句,则该循环为无限循环):
vari:
Number=0;
while(true){
trace(i);
if(i>
=10){
break;
//thiswillterminate/exittheloop
i++;
它跟踪以下输出:
0
1
2
3
4
5
6
7
8
9
10
case语句
caseexpression:
statement(s)
定义switch语句的条件。
如果expression参数全等于(===)switch语句的expression参数,则FlashPlayer将执行statement(s)中的语句,直到遇到一个break语句或直到switch语句结束。
如果在switch语句外部使用case语句,会产生错误,而且脚本不能编译。
注意:
应始终用break语句来结束statement(s)参数。
如果从statement(s)参数中省略breakstatement,它将继续执行下一个case语句,而不是退出switch语句。
expression:
String-任何表达式。
下面的示例为switch语句thisMonth定义条件。
如果thisMonth等于case语句中的表达式,则执行该语句。
varthisMonth:
Number=newDate().getMonth();
switch(thisMonth){
case0:
trace("
January"
case1:
February"
case2:
march"
case3:
April"
case4:
may"
case5:
June"
case6:
July"
case7:
August"
case8:
September"
case9:
October"
case10:
November"
case11:
December"
default:
someothermonth"
另请参见
continue语句
continue
跳过最里层循环中所有其余的语句并开始循环的下一个迭代,就像控制正常传递到了循环结尾一样。
在循环外无效。
在下面的while循环中,continue使Flash解释程序跳过循环体的其余部分,并转到循环的顶端(在该处进行条件测试):
trace("
example1"
while(i<
10){
if(i%3==0){
continue;
在下面的do..while循环中,continue使Flash解释程序跳过循环体的其余部分,并转到循环的底端(在该处进行条件测试):
example2"
do{
10);
在for循环中,continue使Flash解释程序跳过循环体的其余部分。
在下面的示例中,如果i以3为模等于0,则跳过trace(i)语句:
example3"
for(vari=0;
i<
10;
i++){
在下面的for..in循环中,continue使Flash解释程序跳过循环体的其余部分,并跳回循环的顶端(在该处处理枚举中的下一个值):
for(iin_root){
if(i=="
$version"
){
default语句
default:
statements
定义switch语句的默认情况。
如果switch语句的expression参数不等于(使用全等运算符[===])给定switch语句的case关键字后的任何expression参数,则执行这些语句。
switch不要求一定有defaultcase语句。
defaultcase语句也不一定要出现在列表的最后。
如果在switch语句外使用default语句,将会产生错误,并且脚本不能编译。
statements:
String-任何语句。
在下面的示例中,表达式A与表达式B或D不相等,所以运行default关键字后面的语句,并将trace()语句发送到"
输出"
面板。
vardayOfWeek:
Number=newDate().getDay();
switch(dayOfWeek){
Monday"
Tuesday"
Wednesday"
Thursday"
Friday"
default:
Weekend"
delete语句
deletereference
破坏由reference参数指定的对象引用,如果成功删除了引用,则返回true;
否则返回false。
该运算符对于释放脚本所用的内存非常有用。
可以用delete运算符删除对对象的引用。
删除所有对对象的引用后,FlashPlayer会删除该对象并释放由该对象使用的内存。
虽然delete是一个运算符,但它通常作为语句使用,如以下示例所示:
deletex;
如果reference参数不存在或无法删除,delete运算符将失败并返回false。
您不能删除预定义的对象和属性,也不能删除使用var语句在函数内声明的变量。
不能使用delete运算符删除影片剪辑。
FlashPlayer5;
返回
Boolean-一个布尔值。
reference:
Object-要消除的变量或对象的名称。
用法1:
下面的示例创建一个对象并使用它,然后在不再需要时删除它:
varaccount:
account.name="
Jon"
;
account.balance=10000;
trace(account.name);
//output:
Jon
deleteaccount;
undefined
用法2:
下面的示例删除对象的一个属性:
//createthenewobject"
account"
//assignpropertynametotheaccount
//deletetheproperty
deleteaccount.name;
用法3:
下面的示例删除一个对象属性:
varmy_array:
Array=newArray();
my_array[0]="
abc"
//my_array.length==1
my_array[1]="
def"
//my_array.length==2
my_array[2]="
ghi"
//my_array.length==3
//my_array[2]isdeleted,butArray.lengthisnotchanged
deletemy_array[2];
trace(my_array.length);
//output:
3
trace(my_array);
abc,def,undefined
用法4:
下面的示例说明delete在对象引用上的行为:
varref1:
ref1.name="
Jody"
//copythereferencevariableintoanewvariable
//anddeleteref1
ref2=ref1;
deleteref1;
ref1.name"
+ref1.name);
ref1.nameundefined
ref2.name"
+ref2.name);
ref2.nameJody
如果ref1尚未复制到ref2中,则当删除了ref1时,该对象将被删除,因为将没有对它的引用。
如果您删除ref2,则没有对该对象的引用;
它将被破坏,它所用的内存变为可用。
do..while语句
do{statement(s)}while(condition)
与while循环类似,不同之处是在对条件进行初始计算前执行一次语句。
随后,仅当条件计算结果是true时执行语句。
do..while循环确保循环内的代码至少执行一次。
尽管这也可以用while循环通过在while循环开始前放一段要执行的语句副本来实现,但很多程序员认为do..while循环更易于阅读。
如果条件计算结果始终为true,do..while就会无限循环。
如果进入了无限循环,则FlashPlayer会遇到问题,最终会发出警告信息,或播放器崩溃。
如果知道要循环的次数,应该尽可能使用for循环。
尽管for循环易于阅读和调试,但不是在所有情况下都能代替do..while循环。
condition:
Boolean-要计算的条件。
只要condition参数的计算结果为true,就会执行do代码块内的statement(s)。
下面的示例使用do..while循环计算一个条件是否为true,并一直跟踪myVar,直到myVar大于5。
当myVar大于5时,循环将结束。
varmyVar:
trace(myVar);
myVar++;
while(myVar<
5);
/*output:
4
*/
dynamic语句
dynamicclassclassName[extendssuperClass][implementsinterfaceName[,interfaceName...]]{
//classdefinitionhere
指明基于所指定类的对象可以在运行时添加和访问动态属性。
对于动态类的类型检查比对于非动态类的类型检查更为宽松,因为在类定义内访问的成员和在类实例上访问的成员不与在类范围内定义的那些成员进行比较。
但是,仍可能对类成员函数进行类型检查,以确定返回类型和参数类型。
当处理MovieClip对象时,此行为特别有用,因为这种情况下可以通过多种不同的方法动态地将属性和对象添加到影片剪辑,如MovieClip.createEmptyMovieClip()和MovieClip.createTextField()。
动态类的子类也是动态的。
确保在声明对象时指定类型,如下所示:
varx:
MyClass=newMyClass();
如果在声明对象时没有指定类型(如下所示),则该对象被视为动态的:
varx=newMyClass();
在下面的示例中,类Person2尚未标记为动态的,因此对它调用未声明的函数将在编译时生成错误:
classPerson2{
varname:
varage:
Number;
functionPerson2(param_name:
String,param_age:
Number){
trace("
anything"
this.name=param_name;
this.age=param_age;
在位于同一目录的FLA或AS文件中,将以下ActionScript添加到时间轴上的第1帧:
//Beforedynamicisadded
varcraig:
Person2=newPerson2("
Craiggers"
32);
for(iincraig){
craig."
+i+"
="
+craig[i]);
craig.age=32
craig.name=Craiggers*/
如果添加未声明的函数dance,则生成一个错误,如下例所示:
"
craig.dance=true;
**Error**Scene=Scene1,layer=Layer1,frame=1:
Line14:
Thereisnopropertywiththename'
dance'
.craig.dance=true;
TotalActionScriptErrors:
1ReportedErrors:
1*/
将关键字dynamic添加到类Person2,以便第一行如下所示:
dynamicclassPerson2{
再次测试代码,您就会看到以下输出:
craig.dance=truecraig.age=32craig.name=Craiggers
else语句
if(c