循環(huán)
演示效果:
點(diǎn)擊這里下載源文件
使用for 是優(yōu)化AS的重要手段,
Flash AS學(xué)習(xí):for循環(huán)與退出循環(huán)
。如果我們要對(duì)20個(gè)MC實(shí)現(xiàn)響應(yīng)鼠標(biāo)點(diǎn)擊事件,如果不用for而直接寫(xiě)那么需要幾十乃至幾百行,而用for只需要用幾行就可以了?次覀儗(shí)現(xiàn)這樣的效果: 對(duì)舞臺(tái)上的20個(gè)MC點(diǎn)擊,在MC中的動(dòng)態(tài)文本中顯示出該MC的實(shí)例名.步驟:1、 制作一個(gè)MC,MC中包含一個(gè)動(dòng)態(tài)文本,實(shí)例名為txt。
2、按住ctrl,拖動(dòng)復(fù)制出20個(gè)MC出來(lái)。
3、為每個(gè)MC輸入實(shí)例名mc0、mc1、mc2...mc19,然后選中楨,打開(kāi)動(dòng)作面板,輸入以下語(yǔ)句。
mc0.onPress = function() {
this.txt.text = this._name;
};
mc1.onPress = function() {
this.txt.text = this._name;
};
.....
mc19.onPress = function() {
this.txt.text = this._name;
};
以上語(yǔ)句共60行,實(shí)現(xiàn)了點(diǎn)擊MC,在MC中的動(dòng)態(tài)文本txt中顯示該MC的實(shí)例名,如果有100個(gè)MC,那么照這樣就需要300行,挺嚇人的。現(xiàn)在用for幾行搞定。
for(var i=0;i<20;i++){
this["mc"+i].onPress=function(){
this.txt.text=this._name
}
}
我們分析一下這個(gè)for是怎樣解決問(wèn)題的:for(var i=0;i<20;i++)共會(huì)讀取20次,第一次i=0;檢查i是否小于20,檢查到符合條件,執(zhí)行i++,于是i=1了,然后執(zhí)行{}中的語(yǔ)句;第二次i=1;檢查i是否小于20,檢查到符合條件,執(zhí)行i++,于是i=2了,然后執(zhí)行{}中的語(yǔ)句;第三次i=2;檢查i是否小于20,檢查到符合條件,執(zhí)行i++,于是i=3了,然后執(zhí)行{}中的語(yǔ)句;......第二十一次i=20;檢查i是否小于20,檢查到不符合條件,執(zhí)行i++,于是i=21了,此時(shí)循環(huán)結(jié)束,退出循環(huán)。
第一次執(zhí)行的程序即是
this["mc"+0].onPress=function(){//同this.mc0.onPress=function()
this.txt.text=this._name
}
第二次執(zhí)行的程序即是
this["mc"+1].onPress=function(){//同this.mc1.onPress=function()
this.txt.text=this._name
}
第三次執(zhí)行的程序即是
this["mc"+2].onPress=function(){//同this.mc2.onPress=function()
this.txt.text=this._name
}
......
由此,我們可以看到,for對(duì)于簡(jiǎn)化語(yǔ)句有非常重要的作用,適用for適用于MC的實(shí)例名是連續(xù)的情況,即mc0、mc1、mc2...,如果MC的實(shí)例名不是連續(xù)的,那么可以利用數(shù)組來(lái)解決這個(gè)問(wèn)題,首先將MC的實(shí)例名作為數(shù)組中的元素,然后進(jìn)行調(diào)用,如下:
var myarr=["mc0","mc1",""mc2","mc3"....]
for(var i=0;i<20;i++){
this[myarr[i]].onPress=function(){
this.txt.text=this._name
}
}
以上介紹了for的使用,現(xiàn)在介紹一下如何中途退出for循環(huán),如果我們只對(duì)10個(gè)MC進(jìn)行讀取,那么
for (var i = 0; i<20; i++) {
if (i>=10) {
break;
}
this["mc"+i].onPress = function() {
this.txt.text = this._name;
};
}
如果我們只不讀取第10個(gè),那么
for (var i = 0; i<20; i++) {
if (i == 10) {
continue;
}
this["mc"+i].onPress = function() {
this.txt.text = this._name;
};
}