热烈欢迎新会员,新手报到帖招聘3DMAX亚游ag骗局|官网软件开发场景助手3.0下载飞浪亚游ag骗局|官网零起点入门
返回列表 发帖

[原创]飞浪亚游ag骗局|官网零起点入门系列(七)Maxscript对话框--rollout和createdialog语句初探

声明:本教程为CG++原创,转载请注明,谢谢合作:)
?
查看上一节: MAXScript的条件选择语句和找面数为0的物体?

http://www.cgplusplus.com/bbs/viewthread.php?tid=174

?

飞浪亚游ag骗局|官网零起点入门系列(七) Maxscript对话框--rollout和createdialog语句初探

?

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

?

前六节我们进行了简短的Maxscript学习,大概了解了MAXScript的一些基础语句,也学会了编写一些处理大量物体或者材质的简单程序代码,这些代码都是通过maxscript listener直接执行的。这一节里,我们来学习一下如何将这些代码写成界面,写成一个按钮,写成大家通常见到的ms格式的文件。这里面要用到一些新的语句,这些语句本身不具备处理max场景数据的能力,它们只是把我们以前学的代码进行归纳,方便使用。

首先我们要用到的是MAX亚游ag骗局|官网编辑器(Maxscript Editor),通过MAX菜单--MAXScript--New MAXScript...可以新建一个max亚游ag骗局|官网窗口,它就跟一个记事本差不多,以后我们所有的代码将在这里进行编写。

?

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

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

?

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

下面了解下它的用法:

创建一个编辑文本控制器:

?

再创建一个按钮:


?这样我们就得到这样的代码:
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 --是变量名,以后要调用这个编辑文本就用这个置。
"名称:" --这个编辑文本的名称,出现在亚游ag骗局|官网界面。
pos:[5,7]--此编辑文本在亚游ag骗局|官网界面的相对位置,可以在刚才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,于是此亚游ag骗局|官网就成为:
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)这样就执行了这个亚游ag骗局|官网程序,

出现什么了没?我运行出现以下对话框:

?

[此贴子已经被作者于2009-2-12 17:24:03编辑过]

附件: 您需要登录才可以下载或查看附件。没有帐号?成为会员??

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

?

我们得到:

?

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

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

http://www.cgplusplus.com/online-reference/maxscript-reference/source/button.htm
好,回到我讲的第五节,有个重命名亚游ag骗局|官网,是这样的:for i in objects do i.name = uniquename "cgplusplus"这里我们只想命名选择的物体应该是:
for i in selection do i.name = uniquename "cgplusplus"
但是"cgplusplus"是个常量,我们想要用户可以自己输入,写到此亚游ag骗局|官网里面就是:
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意思是,如果此编辑框里面内容不是空的,就执行下面命令(重命名)
至此,本亚游ag骗局|官网的完整代码如下:
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亚游ag骗局|官网对话框。此节就到这里。
题外话:写此教程最开始的目的就是想共享一下我的学习经验,因为我当初学习亚游ag骗局|官网时找遍网络也没有找到想要的入门教程,于是我就硬着头皮啃英文参考文档,我想肯定还有
很多想学习亚游ag骗局|官网而不知如何入门的同仁,如果你真想学好亚游ag骗局|官网,请一定要记住两个字:坚持。

?

下一节:飞浪亚游ag骗局|官网零起点入门系列(八)maxscript全局变量、局部变量及注释

http://www.cgplusplus.com/bbs/viewthread.php?tid=326

[此贴子已经被作者于2009-1-16 12:31:28编辑过]

附件: 您需要登录才可以下载或查看附件。没有帐号?成为会员??

TOP

强烈支持![em57]

TOP

 恩,很好的入门文章!!

TOP

顶啊,加油出,呵呵,期待更多ing

TOP

请问
若是离开了对话框
该怎样才可以把 edt_name 变量数值转
到另一个变量名称中呢?
烦请飞浪作者可以解答一下
谢谢

[此贴子已经被作者于2009-1-3 14:31:06编辑过]

TOP

edt_name.text可以直接读取,如你可以直接用赋值方法:mystring = edt_name.text就把edt_name 变量数值存到了mystring 变量里面。

TOP


谢谢 feilang 的解答

feilang 您说的句子我补上去了,不知道对不对?
rollout myrollout "重命名" width:162 height:98 (
...
on btn_rename pressed do (
if edt_name.text != "" then
mystring = edt_name.text --在这里
...
)
)
createdialog myrollout

不好意思,可以再请问几个问题吗?

当一个移转的变数资料,
若超过了 rollout(..) 包含的内容外,
该怎样才能继续存在这个值呢?

我是过宣告
persistent global glts01
这样就行了..

但请问HELP 常出现 foo, baz, bar ,
这些字是否为系统关键的保留字呢?

烦请各位高手可以解答一下,
谢谢!!!

TOP

,楼主很敬业,支持一下

?

目前也在学习中.

?

有没有Script亚游ag骗局|官网的群呀?

TOP

不错,非常感谢楼主!!

TOP

返回列表