QQD
查看QQD的博客
金钱 | : 2201 |
Level | : 0 |
发帖数 | : 347 |
最后登陆 | : 2007/10/25 |
注册时间 | : 2004/10/18 |
|
关于Flash中变量的声明和寿命 前些天,看到 这个贴子,就有一些疑问,没来得及仔细讨论,其实这个问题很重要,Flash 的 actionScript 和其他的语言有不同的地方,我查了几本书,把我所了解的补充一下。 1.Flash没有真正意义上的全局变量,这点和 Director 不同,全局变量是指一旦声明,在整个电影都有效,这点Flash 是做不到的。对于我们来说,要讨论的是: a: 一个变量可以存在多久? b: 怎样设定和提取变量值? 2. Flash 的变量只在其所在的时间线上有效。在某个时间线上声明的任何变量对于该时间线上的所有 scripts 来说都有效。所以对于在 movieClip 的时间线上声明的变量, 如果要在主时间线上调用,就必须使用点语法来指向所要针对的 movieClip ,也就是对象(object). 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内的重新赋值还是有效 trace(y);//结果是20 trace(z); //结果是nothing, 因为是局部变量, 只在function内有效 出处:蓝色理想
|