Flash5 ActionScript高级编程指南(4)
发布时间:2008-08-14 阅读数: 次 来源:网乐原科技
二、点语法对象与目标路径的使用
Flash ActionScript里最基础但也往往是最不容易搞清楚的恐怕就要算点语法对象和目标路径的使用了。不用说初学者常常不知道什么时候该用点语法对象,什么时候该用目标路径,就连能熟练运用三维显示技术的闪客高手有时也会因为概念混淆而用错,而这种错误又往往是最难发现的。所以,我把它放在第二节来介绍,同时也顺带讲一下与此密切相关的一些指令和函数的使用。
1、形式与含义
形如 a.b.c 的表达形式即为点语法对象。它可以指代变量、数组和对象,也可以指代影片片段、属性和函数。比如:
anyObject.a
b[12].anyArray
_root.anyMovieClip._x
anyMovieClip.anyFunction
等都是合法的点语法对象形式。一般把这种表示形式与Java或C/C++语言中的类与成员、成员函数的表达相类比,但要注意的是FAS里更强调的是对象的层次,甚至还有_parent、_root之类相对路径的表示形式,它并没有继承等面向对象语言的标准概念。所以说把它理解为地址或者路径似乎更为恰当一些。
形如 "a.b/c" 或 "a/b:c" 的为目标路径。它是一个字符串,可以指代变量和对象,也可以指代影片片段和属性,但不能指代数组和函数。它的分隔符可以有"."、"/"和":"三种,其中"/"后跟对象和影片片段,":"后跟变量和属性,"."则都可。不同的分隔符可以混合使用。比如:
"anyObject:a"
"_root/anyMovieClip._x"
等都是合法的目标路径形式。除了点语法对象是变量形式而目标路径是字符串形式这一根本区别外,它们所表示的含义完全相同,只是在使用上各有侧重而已。
2、具体使用
当我们要对某一已知名称的变量或对象等操作时,应选择点语法对象表达。比如对变量或属性赋值:
myMovieClip._xscale = 150;
myObject.index = 16;
_parent.myObjectArray[14].index = 10;
又比如调用函数:
myMovieClip._x = myMath.square(length);
当我们要对某一不定名称的变量或对象等操作时,应选择目标路径表达。比如对一批影片片段的某一属性赋值:
for (i=1;i<10;i++) {
set ("myMovieClip"+i+"._x",20*i); // 2.1式
}
有时我们又要把它们联合起来使用,以弥补点语法对象无法表达不定名称及目标路径无法表达数组和函数的不足。比如对一批影片片段下的某一对象数组赋值:
for (i=1;i<10;i++) {
eval("myMovieClip"+i+".myObjectArray")[0].index = i; // 2.2式
}
这是Flash5中所提倡的用法。所以,从某种意义上来说,目标路径可以看作是在表示源代码。
注意:有时点语法对象也被当成字符串来用,比如:a = anyMovieClip+"1",a的值就为"_level0.anyMovieClip1"。但本质上其实是系统在执行+"1"前自动内部执行了String(anyMovieClip)而已。其他情况也是一样。