关于变量的问题,关于变量的问题
【 tulaoshi.com - Flash 】
Flash的actionScript和其他的语言有不同的地方, 我查了几本书, 把我所了解的补充一下。
1.Flash没有真正意义上的全局变量, 这点和Director不同, 全局变量是指一旦声明, 在整个电影都有效, 这点Flash 是做不到的。对于我们来说, 要讨论的是:
a: 一个变量可以存在多久?
b: 怎样设定和提取变量值?
2. Flash 的变量只在其所在的时间线上有效。 在某个时间线上声明的任何变量对于该时间线上的所有scripts来说都有效。 所以对于在movieClip的时间线上声明的变量, 如果要在主时间线上调用, 就必须使用点语法来指向所要针对的movieClip, 也就是对象(object).
(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/flash/)3.对于 movieClip里的变量来说, 其寿命和该movieClip的在舞台上的instance的寿命相当。也就是说, 一旦这个instance从舞台上消失(不是指它的visual appearance), 那么其中的变量也同时消失了。 同样的道理对于主时间线上的变量来说, 一旦unload 该swf, 那它上面的变量也就消失了, 或者说不可以在被调用了。
4. var 是的非常好的习惯, 正如斑竹所说的, 每次声明变量用var, 很规范, 很专业, 而且尽可能的先声明, 再赋值, 尽管Flash 5在这一点上很宽松。
5. 在function里使用var来声明变量是标准的局部变量, 也就是说只在function内有效。如果不用var来声明, 仍然是非局部变量。
下面的例子也许可以说明这个问题。
var x = 1 //在function外,只是非局部变量 x,赋值为1
function demo() {
x=10; //非局部变量 x,重新赋值为10
y=20; //非局部变量 y,赋值为20
var z=30; //在function内是局部变量 z,赋值为30
trace(x+","+y+","+z); //在output窗口显示结果
}
demo(); //调用function, 结果是10, 20,30
trace(x); //结果是10, function内的重新赋值还是有效[next]
trace(y); //结果是20
trace(z); //结果是nothing, 因为是局部变量, 只在function内有效
来源:http://www.tulaoshi.com/n/20160129/1487568.html