|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
FlashScreensaversMaker能够迅速的将您的Flash作品转化为屏保程序。
delete关头字在Flash中是用来删除界说的变量,可是其实不将工具从内存中扫除失落(这是渣滓搜集器的事情)。它只是将一个变量的援用设置成有效,让内存中的这个工具没法再被援用和利用,也没法再利用forin来列举。
现实上,渣滓处置器(GC)将在特定的时分,主动的从内存中删除那些不再被援用和利用的变量。好比,你创立了两个工具援用A和B,都指向了对工具ObjectX的援用,假如delete了A,其实不会让渣滓搜集器把ObjectX从内存中删除,由于B的援用仍是指向了这个工具。假如将A和B都delete,则不再有对ObjectX的援用,ObjectX也将被渣滓搜集器接纳。比方:
vara:Object=newObject();
varb:Object=a;//b和a援用统一个newObject();
deletea;
trace(b);//输入[objectObject]-在内存中仍是存在
deleteb;
//GC将接纳object这个特征在Flash8和9(AS123)中几近都是一样的,可是在Flash8中,GC的一些特征失掉改良并能更好的事情。(注重,渣滓搜集不是立即的)
固然GC在AS3中并没有甚么实质上的改动,可是由于利用了新的假造机,delete关头字的举动有所改动。如今,delete关头字只能针对类的静态属性和非私有成员无效。而在AS1和2中,delete能被用在一切的器材上。
//ActionScript2
classDeleteVarClass{
publicvarmyVar:Number;
functionDeleteVarClass(){
myVar=1;
trace(myVar);//1
deletemyVar;
trace(myVar);//undefined
}
}
//ActionScript3
package{
publicclassDeleteVarClass{
publicvarmyVar:Number;
publicfunctionDeleteVarClass(){
myVar=1;
trace(myVar);//1
deletemyVar;
trace(myVar);//1
}
}
}在下面的AS3例子中,由于myVar变量是一个私有成员,以是不克不及用delete来删除这个变量。
只管在AS3中不克不及删除类成员,可是假如你想删除一个工具的一切援用,能够经由过程将变量设置为null来取代delete。如:
myVar=null;假如一个工具的一切援用都是null,GC将主动的从内存中删除这个工具。
*Dictionary类
AS3中的Dictionary类(flash.utils.Dictionary)是一个新的AS类。Dictionary类和Object独一的区分在于:Dictionary工具可使用非字符串作为键值对的键。比方:
varobj:Object=newObject();
obj["name"]=1;//键是字符串"name"
obj[1]=2;//键是1(被转换成字符串"1")
obj[newObject()]=3;//键是newObject(),被转传成字符串"[objectObject]"
for(varprop:Stringinobj){
trace(prop);//输入:[objectObject],1,name
trace(obj[prop]);//输入:3,2,1
}也就是说,不管用甚么范例的变量作为键,都将被转换成字符串。同时,假如你利用了分歧的工具作为键,城市北转换成字符串"[objectObject]"作为键,因而而指向了统一个数据。比方:
ActionScriptCode:
vara:Object=newObject();
varb:Object=newObject();
varobj:Object=newObject();
obj[a]=1;//obj["[objectObject]"]=1;
obj=2;//obj["[objectObject]"]=2;
for(varprop:Stringinobj){
trace(prop);//traces:[objectObject]
trace(obj[prop]);//traces:2
}Dictionary类将没有这个限定,你能够将键设置成任何一种数据范例。比方:
importflash.utils.Dictionary;
vara:Object=newObject();
varb:Object=newObject();
vardict:Dictionary=newDictionary();
dict[a]=1;//dict[a]=1;
dict=2;//dict=2;
for(varprop:*indict){
trace(prop);//traces:[objectObject],[objectObject]
trace(dict[prop]);//traces:1,2
}固然在trace的时分,输入的仍是[objectObject],可是这个了局是工具的toString的了局。在Dictionary工具中,代表的是分歧的工具援用。
注重,这里的prop的范例是*。这是很主要的,由于dict工具中的键多是任何数据范例的。
ActionScript是一种程序语言的简单文本文件.FLA档案能够直接包含ActionScript。 |
|