MayaMel:UI—窗口简介_Karon_NeverAlone的博客-程序员宅基地_maya窗口mel

技术标签: 动画  mayamel  maya  

一、窗口

1.写法

基础指令 (加方括号表示可以没有)

window  [后缀指令] [窗口名];

[布局声明;]

[基础元素;]

showWindow [窗口名];

2.最简单的窗口创建

window;
showWindow;

这里maya会给window起一个默认的名字。但是最好是自己取一个窗口名,不然回头调用起来也挺麻烦的

3.多次打开某个窗口

按照我们平时使用maya的经验,当某一个窗口已经打开了,再次点开一遍,并不会报错,而且这个窗口还会从新移动到比较显眼的位置,想要达到这个效果,需要写一个判断语句。

如果窗口存在,则先删除窗口,然后再从新创建一个

window zyr;
if(`window -ex zyr`)          //-ex 查看是否存在zyr
{                                         //mel语句里面很多时候会加``  它的意思是取mel函数的返回值
    deleteUI zyr;
}
showWindow zyr;

4.后缀指令

就是指定一下window的各个参数值,比如说标题名称,长宽高,背景颜色等等

具体的参数看window帮助文档

string $window = `window -title "zyr"
       -iconName "美女"   //the windows icon tittle
       -widthHeight 200 55`;         //取window语句的返回值到$window中

showWindow $window;

也可以这样写

window 

       -title "zyr"
       -iconName "美女"   //the windows icon tittle
       -widthHeight 200 55

        zyr;    

showWindow zyr;

窗口建好之后也可以进行一些修改

window -edit -widthHeight 900 777 zyr;

5.布局声明

就是安排窗口内部的组件该怎么放置,比如说

columnLayout -adjustableColumn true; // 竖直排列  每个元素都拉伸到窗口一样的宽度

详见官方文档

6.基础元素

窗口内的基本元素有:按钮button、滑条int/floatSliderGrp、文本框int/floatField、文字text、分隔符separator等等

具体的内容在官方文档里面搜索即可

基础元素这一部分的内容就是写在“布局声明”和showWindow之间的,比如声明了两个按钮

       button -label "Do Nothing";
       button -label "Close";

        末尾我会放一下完整的代码

但是现在按钮点了并没有什么用,要给每一个按钮添加一个脚本,也就是click之后自动调用某个脚本(一般是调用一个函数,但是如果脚本很简单也可以直接写),以实现点击按钮有相应效果。

     

比如给刚才的close按钮添加关闭窗口的脚本

 button -label "Close" -command   ("deleteUI -window " + $window) ;

//因为是写在双引号中的,所以可以认为script是一大串的字符

7.完整代码

string $window = `window -title "zyr"
       -iconName "美女"
       -widthHeight 800 400`;
columnLayout -adjustableColumn true;
       button -label "Do Nothing";
       button -label "Close" -command ("deleteUI -window " + $window);
setParent ..;
showWindow $window;

二、快速创建物体插件实例

1.插件作用设计

        快速的创建小球,可以在创建之前调节小球的参数

string $window = `window -title "createpoly"
       -widthHeight 800 400`;
columnLayout -adjustableColumn true;
       text -label "\n 快速创建物体 \n" ;
       floatSliderGrp -label "半径: " -field true -min 0.0 -max 10.0 sphereslider;
       button -label "polySphere" -command "sphereradius";
       button -label "Close" -command ("deleteUI -window " + $window);
setParent ..;
showWindow $window;

global proc sphereradius()
{
    //get slider's float number
    float $spradius=`floatSliderGrp -q -v sphereslider`;
    //create sphere
    polySphere -radius $spradius;
}

//另一种排布的示例

window;

rowLayout -numberOfColumns 4
        -columnWidth4 80 100 80 100
        -adjustableColumn 1
        -adjustableColumn 3
        -columnAlign 1 "right"
        -columnAlign 3 "right"
        -columnAttach 1 "both" 0
        -columnAttach 2 "both" 0
        -columnAttach 3 "both" 0
        -columnAttach 4 "both" 0; 
       text -label "width:";     
       floatField ;
       text -label "height:";
       floatField ; 

showWindow;

三、窗口菜单和主界面菜单

窗口菜单:menu

主界面菜单:$gMainWindow

这两种菜单都是可以人为添加的

1.窗口菜单

窗口菜单menu是在布局声明之前定义的,另外在后缀指令中必须有"-menuBar true"

menu -label "File" -tearOff true;
    menuItem -label "New";
    menuItem -label "Open";
    menuItem -label "Save";
    menuItem -divider true;
    menuItem -label "Quit";
menu -label "Help" -helpMenu true;
    menuItem -label "About Application...";

 

2.主界面菜单

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/karonneveralone/article/details/121611812

智能推荐

httpsqs 非常小的轻量级消息队列服务_任亚军的博客-程序员宅基地

优点:1、基于HTTP协议,非常简单 2、速度很快。 3、支持多种接口。   缺点:不支持阻塞式消息读取。

jenkins与gitlab持续集成配置webhook报500错误_ERD Online的博客-程序员宅基地

错误现象:控制台日志:URI::InvalidURIError (URI::InvalidURIError): lib/gitlab/proxy_http_connection_adapter.rb:14:in `connection' app/services/web_hook_service.rb:73:in `make_request' app/services/web_ho...

struts图片上传,字符串处理,流处理_0_o_c的博客-程序员宅基地

1、前端上传的主要代码: 2、后台处理主要代码: String root=ServletActionContext.getServletContext().getRealPath("/");

转起来:Jeff Molofee(NeHe) 的 OPENGL 教程-第四课_烟波三千里人鬼五百年的博客-程序员宅基地

<!--font { font-family: Arial; line-height: 180%; font-size: 12pt; margin-top: 2; margin-bottom: 2 }body { font-family: font }td { border-left-co

C++ Qt5 范例开发大全:_zhangxueyang1的博客-程序员宅基地

链接:http://download.csdn.net/detail/mycodream/7452387

随便推点

React Native Application和Activity源码分析_Jesse-csdn的博客-程序员宅基地

基于V0.43.3版本 React Native Android端的ReactApplication和ReactActivity的实现原理.

使用AWS SDK for Java创建并启动EC2实例_十豆彡v彡的博客-程序员宅基地_aws sdk 启动实例

本文主要记录如何使用AWS SDK for Java来创建并启动EC2实例

LimeSDR实验教程(10) DVB-S发射和接收_老邵的开源世界的博客-程序员宅基地

我在windows下实现了dvb-s的发射和接收。发射使用的是limesdr-mini,接收使用的是hackrf/limesdr-usb。这次和以前的dvb-t发射不同,这次的发射和接收都是用软件实现的,并且都是开源的,以前的dvb-t接收机虽然是rtlsdr,但是是用芯片解调的dvb-t。不过接收机是sdrangel,有点难编译,并且datv express编译好的版本好像也只有wi...

Effective C++ 2e Item31_lostmouse的博客-程序员宅基地

条款31: 千万不要返回局部对象的引用,也不要返回函数内部用new初始化的指针的引用本条款听起来很复杂,其实不然。它只是一个很简单的道理,真的,相信我。先看第一种情况:返回一个局部对象的引用。它的问题在于,局部对象 ----- 顾名思义 ---- 仅仅是局部的。也就是说,局部对象是在被定义时创建,在离开生命空间时被销毁的。所谓生命空间,是指它们所在的函数体。当函数返回时,程序的控制离开了这

什么是Ruby on Rails_cowboy_wz的博客-程序员宅基地

让我们先来看一张图片: 看完这张图片,我心里充满疑惑,难道Ruby + Rails真的能够有这么好吗? 心里有这么几个疑问:Ruby是谁开发的? Ruby是什么? Rails是什么? Ruby on Rails与目前已经有的开发语言相比有什么优点?为什么要使用它? Ruby on Rails稳定吗?效率高吗?能够承受大数据量的访问吗? Ruby on Ra

凸包GiftWrapping GrahamScan 算法实现_xcl522的博客-程序员宅基地

开始游戏内有需求做多边形碰撞功能,但是接入box2d相对游戏的需求来说太重度了。所以准备自己实现碰撞。确定多边形,必然要用到凸包的算法。在github上也找到了一些lua实现,但是这里的算法没有考虑多点共线的问题。所以准备自己实现准备这里提到的所有凸包,都指的平面上的。思路凸包的具体定义,这里不赘述。一种通俗的说法,在木板上钉钉子,我们用一根麻绳绑住

推荐文章

热门文章

相关标签