学习笔记(1)——关于变量
初学FlashAS,往往对于变量的使用范围搞不懂。
AS的书籍说,变量有 全局变量、时间轴变量、局部变量,其实这个容易理解,因为所有的编程语言都有这些定义。但是在AS这里,理论和实际常常不一定相符,搞得人头昏。
以下我用一个简单的例子,大家看看是否有不妥?
在简单的一帧里,有一个MovieClip,还有一个动态文本 TextField,TextField字符对应的变量是aaa。
如果在帧脚本里有一条语句:
aaa="000"
很简单,TextField会显示000。
但是,如果我们在同个帧的那个MovieClip的动作脚本里,加上这么一句:
onClipEvent (load) {
trace(aaa)
}
trace的结果很奇怪:aaa未定义!
如果我们把上面的语句改一下:
onClipEvent (load) {
trace(_root.aaa)
}
trace的结果是000。
为什么呢?
TextField的变量aaa是_root的变量;我想,_root就是时间轴,他的变量应该对于这个时间轴上的所有对象有效。
其实不然啊,时间轴_root也有局部变量?
我曾经有一次,在一个MovieClip的动作脚本里,直接给aaa赋值,结果总是不能传递到TextField。当时真是百思不得其解啊!!
好了,这样解释不知道是否过得去?吃了时间轴变量的亏,对全局变量我也不敢轻易相信,再来试验看看。
把帧脚本的
aaa="000"
改成
_global.aaa="000"
这下aaa是全局变量啦,我想应该对于场景中所有对象有效了吧。
试验结果:
onClipEvent (load) {
trace(aaa)
}
得到000,很好!
证实了aaa的值可以传递到 ClipEvent 的处理过程。看来_global就是牛B!
但是注意看看帧的显示,TextField居然显示空白!全局变量aaa竟然不能传递到TextField。
于是我尝试加上一句 TextField.text=aaa ,一测试,TextField就有000显示了。
我又昏了……
回复Comments
作者:
{commentrecontent}