自由者CG
标题:
零起点入门MAXScript(第八节)
[打印本页]
作者:
有空
时间:
2015-12-2 15:09
标题:
零起点入门MAXScript(第八节)
全局变量,就是整个脚本都可以用的一个变量。
局部变量,就是指在一定范围才能使用的变量。
怎么定义呢?
例子:
rollout 自由者cg "U1" width:162 height:122
(
button btn4 "测一" pos:[18,15] width:125 height:39
button btn5 "测二" pos:[18,69] width:125 height:39
on btn4 pressed do
(
)
on btn5 pressed do
(
)
)
createdialog 自由者cg
运行后得到如下界面:
(, 下载次数: 13)
上传
点击文件名下载附件
这里我们设置了两个按钮,来做测试。
现在加两个变量,如下:
global str1 = "全局变量"
rollout 自由者cg "U1" width:162 height:122
(
local str2 = "局部变量"
button btn4 "测一" pos:[18,15] width:125 height:39
button btn5 "测二" pos:[18,69] width:125 height:39
on btn4 pressed do
(
messagebox str1
)
on btn5 pressed do
(
messagebox str2
)
)
createdialog 自由者cg
上面命名有两个变量,str1和str2,
凡是用global申明的变量名,为全局变量,整个脚本的任何地方都能对其进行修改调用。
凡是用local申明的变量名,为局部变量,它只能在当前所在范围(可以理解为当前语句的括号内使用)。
上面有一句:messagebox str1,这句是生成一个弹出信息窗口,简单用法是messagebox <字符串>
运行上面的脚本,就会看到结果,试试。
下面改一下代码:
global str1 = "全局变量"
rollout 自由者cg "U1" width:162 height:122
(
local str2 = "局部变量"
global str4 = "这个呢?"
button btn4 "测一" pos:[18,15] width:125 height:39
button btn5 "测二" pos:[18,69] width:125 height:39
on btn4 pressed do
(
messagebox str1
)
on btn5 pressed do
(
createdialog test2
)
)
rollout test2 "U2" width:162 height:57
(
local str5 = "测五"
button btn8 "测六" pos:[22,13] width:125 height:39
on btn8 pressed do
(
messagebox str4
)
)
createdialog 自由者cg
运行试一下,发现什么?点击测一,正确,点击测二,出错了。为什么呢?因为程序从上到下没有对test2进行过定义,所以程序运行出错。现在再点击一下测二,结果又是对的了,这又是为什么?因为当你运行一次后,test2就当成了全局变量定义了,还记录在内存里,下次可以继续用。现在要避免这种情况怎么办?很简单,只需要改一下:
global str1 = "全局变量",test2
这样,无论怎么运行都不会出错。因为test2已经定义为全局变量。在有申明global或local的时候,可以用半角逗号来分隔每一个定义的变量。再回来看,刚才那个程序里面,rollout test2里面调用了rollout unnamedRollout里面一个变量str4,这样也没出错,因为str4前面用global申明了,全局变量global可以在任意位置定义。但是如果你把test2里面的str4改成str2就不行了,因为str2只能用在unnameRollout里面。除非,你在test2里面再定义一次str2。
其实,脚本能自动识别一个变量是全局是局部变量,如果我们不用global或local也可以。脚本就会根据变量出现的位置自动判断它是全局还是局部变量。
如:
str1 = "全局变量"; test2
注意这里变量不能用逗号分隔,没有申明,变量赋值就是单独的语句,要么换行写,要么用;号表示语句结尾。去年所有申明,那么刚才那个str4就变成了局部变量了,因为它在里面。而rollout的名称 自由者cg 和 test2都默认为全局变量。
全局变量可以通用,这个概念是,只要你运行过脚本的3dmax没有关闭,那么全局变量就还在内存里,如果别人的脚本跟你用的全局变量名相同,就有可能出现错误。所以建议变量命名时,形成自己独有的习惯,尽量不要和别人的重复,而且变量名最好一看就大概明白含义。
注释,每个程序都有的一种重要功能,用来解释代码,没有注释的程序代码是不完整的。
注释方法:
一种是用英文的两个"-"中划线表示,如:--这是一个注释。
另一种与c++相同:/*注释内容*/
两种的区别是"--"可以随意增加,更方便小型注释;/*......*/适用于大篇注释。
注释过的程序,方便自己记起代码的功能,同时也能让他人知道代码的意思。
——————本节完——————
欢迎光临 自由者CG (https://bbs.zhise168.com/)
Powered by Discuz! X3.4