新浪博客

[转载]飞浪脚本零起点入门系列(七)Maxscript对话框--rollout和c

2014-11-03 21:13阅读:

飞浪脚本起点入门系列(七) Maxscript对话框--rollout和createdialog语句初探

本节关键词: rollout editText button Maxscript Editor Visual MAXScript createdialog

前六节我们进行了简短的Maxscript学习,大概了解了MAXScript的一些基础语句,也学会了编写一些处理大量物体或者材质的简单程序代码,这些代码都是通过maxscript li
stener直接执行的。这一节里,我们来学习一下如何将这些代码写成界面,写成一个按钮,写成大家通常见到的ms格式的文件。这里面要用到一些新的语句,这些语句本身不具备处理max场景数据的能力,它们只是把我们以前学的代码进行归纳,方便使用。
首先我们要用到的是MAX脚本编辑器(Maxscript Editor),通过MAX菜单--MAXScript--New MAXScript...可以新建一个max脚本窗口,它就跟一个记事本差不多,以后我们所有的代码将在这里进行编写。
40omv7LQ.gif

编辑器的具体用法,我们在使用中进行讲解。本人用的是max9,不同版本的MAX脚本编辑器会有所不同,特别是max2009的MAX脚本编辑器先进很多。废话就这些,直接切入主题。
首先我们在MAX脚本编辑器(以后简称Editor)里写下如下代码:
rollout myrollout 'test'
(
)

讲解:rollout--这是maxscript保留关键词,只要它出现就表示这儿有个新的卷展栏。
myrollout--这是你自己定义的一个变量,它必须遵循变量的命名规则,详见第三节。
'test'--这是此卷展栏标题的名称,引号里面内容任意填写。
现在把光标放在rollout到反括号任意位置,找到并选择Edit--Edit Rollout,快捷键F2,注意这是max9的编辑方式,其它版本自己找一下。

yJTieDWK.gif

这样就会弹出一个新的界面,上面标题是:myrollout - Visual MAXScript意思就是卷展栏myrollout的可视化编辑。Visual MAXScript,可视化max脚本,完全可视化界面编辑,省去我们非常多的时间,以后我们就要在这个界面完全一个又一个“鸿篇巨制”,嘿嘿,开个玩笑。对于界面编辑来说,它非常重要!
bpz7GGj1.jpg

下面了解下它的用法:
创建一个编辑文本控制器
BE3AVo11.jpg

再创建一个按钮:
9HT1SU5e.jpg

这样我们就得到这样的代码:
rollout myrollout '重命名' width:162 height:98
(
editText edt_name '名称:' pos:[5,7] width:152 height:22
button btn_rename '重命名' pos:[25,45] width:107 height:22
)
我们注意到,rollout myrollout '重命名'后面多了两个参数,宽度和高度,这是我们在Visual MAXScript拖放窗口时,自动生成的,当然你也可以手动设置。再看另外两行:
editText edt_name '名称:' pos:[5,7] width:152 height:22
editText --表示这是一个编辑文本。
edt_name --是变量名,以后要调用这个编辑文本就用这个置。
'名称:' --这个编辑文本的名称,出现在脚本界面。
pos:[5,7]--此编辑文本在脚本界面的相对位置,可以在刚才Visual MAXScript界面用上下左右键调整。
width:152 height:22 --此编辑文本的宽度和高度。
下面的button 意思差不多,只不过把控制器类型(Controls)换成了按钮(button)
上面的editText和button都是rollout的控制器类型,这些控制器可以在Visual MAXScript拖出来。
rollout的所有控制器:

http://www.cgplusplus.com/online-reference/maxscript-reference/source/rollout_user_interface_controls_types.htm

我们在程序最后加上一句代码:createdialog myrollout,于是此脚本就成为:
rollout myrollout '重命名' width:162 height:98
(
editText edt_name '名称:' pos:[5,7] width:152 height:22
button btn_rename '重命名' pos:[25,45] width:107 height:22
)
createdialog myrollout

再执行File--Evaluate All (快捷键ctrl + E)这样就执行了这个脚本程序,

zgTpP7Dx.jpg

出现什么了没?我运行出现以下对话框:
wVwALtrI.jpg
这就是我们刚才编写的脚本界面。有一个输入框,一个按钮,但是你单击按钮没有任何反应,因为我们还没有告诉它应该做什么。
现在,单击File--save保存此脚本,快捷键ctrl+s,取个名字,记着要养成时刻保存的好习惯,万一max挂了或者断电什么的,你就白写了。
再次进入Visual MAXScript进行如下操作:

nAkVmcaC.jpg

我们得到:
nqN4W9m1.jpg

这次多了一句:
on btn_rename pressed do
(

)
这句就是当按钮btn_rename按下时,该干什么,干什么呢?括号里面就是应该干的内容,现在是空的就是什么也不干,呵呵。。。
关于button的参考如下:

http://www.cgplusplus.com/online-reference/maxscript-reference/source/button.htm
好,回到我讲的第五节,有个重命名脚本,是这样的:for i in objects do i.name = uniquename 'cgplusplus'这里我们只想命名选择的物体应该是:
for i in selection do i.name = uniquename 'cgplusplus'
但是'cgplusplus'是个常量,我们想要用户可以自己输入,写到此脚本里面就是:
on btn_rename pressed do
(
if edt_name.text != '' then
for i in selection do i.name = uniquename edt_name.text
)
这里,edt_name.text表示编辑文本edt_name里面输入的内容,具体用法可以参考:
http://www.cgplusplus.com/online-reference/maxscript-reference/source/edittext.htm

if edt_name.text != '' then意思是,如果此编辑框里面内容不是空的,就执行下面命令(重命名)
至此,本脚本的完整代码如下:
rollout myrollout '重命名' width:162 height:98
(
editText edt_name '名称:' pos:[5,7] width:152 height:22
button btn_rename '重命名' pos:[25,45] width:107 height:22
on btn_rename pressed do
(
if edt_name.text != '' then
for i in selection do i.name = uniquename edt_name.text
)
)
createdialog myrollout

好了,你再运行一下此代码,选择几个物体,在文本框输入字符,再单击重命名,是不是已经完成命名了呢?这就是一个简单的MAX脚本对话框。此节就到这里。
题外话:写此教程最开始的目的就是想共享一下我的学习经验,因为我当初学习脚本时找遍网络也没有找到想要的入门教程,于是我就硬着头皮啃英文参考文档,我想肯定还有
很多想学习脚本而不知如何入门的同仁,如果你真想学好脚本,请一定要记住两个字:坚持。

我的更多文章

下载客户端阅读体验更佳

APP专享