Flash5 ActionScript高級編程指南(5)
發(fā)布時間:2008-08-14 閱讀數(shù): 次 來源:網(wǎng)樂原科技
二、點語法對象與目標(biāo)路徑的使用
3、相關(guān)函數(shù)與指令
eval(expression)是與點語法對象和目標(biāo)路徑的使用有關(guān)的最常用的函數(shù)。它的實質(zhì)是把目標(biāo)路徑轉(zhuǎn)化成點語法對象。系統(tǒng)先把expression自動轉(zhuǎn)化成字符串,相當(dāng)于調(diào)用了一次String(expression),得到"expression_string"的形式。這時的"expression_string"必須為目標(biāo)路徑形式(否則無返回值),然后返回"expression_string"所指代的內(nèi)容。
為什么說是內(nèi)容而不說是值呢?這是因為eval(expression)的返回值實際上是一個點語法對象。比如:
eval("anyMovieClip"+1)._x = 200;
仍是合法的語句。如果說._x的左邊是一個值似乎就不合適了。類似的如前面提到的2.2式。故對于形如:
c = a+eval("b");
的理解(設(shè)b的值為1)不應(yīng)為c=a+1,而應(yīng)該是c=a+b。在處理形如上述2.1式的表達(dá)式時,F(xiàn)lash5推薦使用eval函數(shù),即寫成:
for (i=1;i<10;i++) {
eval("myMovieClip"+i)._x = 20*i;
}
另當(dāng)"expression_string"指代的是一個影片片段時,返回的是形同_level0.anyMovieClip的絕對路徑形式,所以就不能使用如_root.eval(expression)之類的調(diào)用了。
with與tellTarget也是與點語法對象和目標(biāo)路徑密切相關(guān)的指令。其中with是Flash5中新增加的。它們的使用格式相同:
with (expression) {
...
}
tellTarget (expression) {
...
}
expression可以是點語法對象,也可以是目標(biāo)路徑。對于with來說,expression可指代對象和影片片段,而對于tellTarget來說,expression只能是影片片段。
雖然它們形式上極為相仿(尤其當(dāng)expression同指影片片段時),但處理過程卻并不相同。試比較(a非myMovieClip的成員變量):
a = 1;
with (myMovieClip) {
trace(a); // 2.3式
}
與
a = 1;
tellTarget (myMovieClip) {
trace(a); // 2.4式
}
前者輸出1,而后者輸出空值。原因是tellTarget對它所包含的語句中的所有變量、對象等都加上expression所表示的路徑,而with只對其中expression所指對象或影片片段內(nèi)已經(jīng)定義過的變量、對象等加上expression所表示的路徑。所以2.3式就相當(dāng)于with外的:
trace(a);
而2.4式就相當(dāng)于tellTarget外的:
trace(myMovieClip.a);
當(dāng)然,如果a本就是myMovieClip的成員的話,二者的輸出就一樣了。