Flash5 ActionScript高級編程指南(4)
發(fā)布時間:2008-08-14 閱讀數(shù): 次 來源:網(wǎng)樂原科技
二、點語法對象與目標(biāo)路徑的使用
Flash ActionScript里最基礎(chǔ)但也往往是最不容易搞清楚的恐怕就要算點語法對象和目標(biāo)路徑的使用了。不用說初學(xué)者常常不知道什么時候該用點語法對象,什么時候該用目標(biāo)路徑,就連能熟練運用三維顯示技術(shù)的閃客高手有時也會因為概念混淆而用錯,而這種錯誤又往往是最難發(fā)現(xiàn)的。所以,我把它放在第二節(jié)來介紹,同時也順帶講一下與此密切相關(guān)的一些指令和函數(shù)的使用。
1、形式與含義
形如 a.b.c 的表達(dá)形式即為點語法對象。它可以指代變量、數(shù)組和對象,也可以指代影片片段、屬性和函數(shù)。比如:
anyObject.a
b[12].anyArray
_root.anyMovieClip._x
anyMovieClip.anyFunction
等都是合法的點語法對象形式。一般把這種表示形式與Java或C/C++語言中的類與成員、成員函數(shù)的表達(dá)相類比,但要注意的是FAS里更強調(diào)的是對象的層次,甚至還有_parent、_root之類相對路徑的表示形式,它并沒有繼承等面向?qū)ο笳Z言的標(biāo)準(zhǔn)概念。所以說把它理解為地址或者路徑似乎更為恰當(dāng)一些。
形如 "a.b/c" 或 "a/b:c" 的為目標(biāo)路徑。它是一個字符串,可以指代變量和對象,也可以指代影片片段和屬性,但不能指代數(shù)組和函數(shù)。它的分隔符可以有"."、"/"和":"三種,其中"/"后跟對象和影片片段,":"后跟變量和屬性,"."則都可。不同的分隔符可以混合使用。比如:
"anyObject:a"
"_root/anyMovieClip._x"
等都是合法的目標(biāo)路徑形式。除了點語法對象是變量形式而目標(biāo)路徑是字符串形式這一根本區(qū)別外,它們所表示的含義完全相同,只是在使用上各有側(cè)重而已。
2、具體使用
當(dāng)我們要對某一已知名稱的變量或?qū)ο蟮炔僮鲿r,應(yīng)選擇點語法對象表達(dá)。比如對變量或?qū)傩再x值:
myMovieClip._xscale = 150;
myObject.index = 16;
_parent.myObjectArray[14].index = 10;
又比如調(diào)用函數(shù):
myMovieClip._x = myMath.square(length);
當(dāng)我們要對某一不定名稱的變量或?qū)ο蟮炔僮鲿r,應(yīng)選擇目標(biāo)路徑表達(dá)。比如對一批影片片段的某一屬性賦值:
for (i=1;i<10;i++) {
set ("myMovieClip"+i+"._x",20*i); // 2.1式
}
有時我們又要把它們聯(lián)合起來使用,以彌補點語法對象無法表達(dá)不定名稱及目標(biāo)路徑無法表達(dá)數(shù)組和函數(shù)的不足。比如對一批影片片段下的某一對象數(shù)組賦值:
for (i=1;i<10;i++) {
eval("myMovieClip"+i+".myObjectArray")[0].index = i; // 2.2式
}
這是Flash5中所提倡的用法。所以,從某種意義上來說,目標(biāo)路徑可以看作是在表示源代碼。
注意:有時點語法對象也被當(dāng)成字符串來用,比如:a = anyMovieClip+"1",a的值就為"_level0.anyMovieClip1"。但本質(zhì)上其實是系統(tǒng)在執(zhí)行+"1"前自動內(nèi)部執(zhí)行了String(anyMovieClip)而已。其他情況也是一樣。