使用ScriptJob来添加回调函数

在Maya开发中,我们知道 MMessage 和它的派生类可用于对Maya的内部事件添加一些回调函数,用于在指定的时机处理一些自定义的任务。但除了用MMessage类,我们还有一些其他简单的 Mel 命令可处理类似情况,今天我们就来看一下ScriptJob 命令。

Mel 命令 scriptJob 可以用来为Maya内部的event,condition 或者attribute 添加回调函数,使用非常简单,我们可以看下如下命令 :

// 设置当选择集改变事件触发的时候,打印一段文字
scriptJob -event "SelectionChanged" "print "Annoying Message!\n"";

// 设置当playingBack condition 为true的时候,调用 playBackCallback 函数
scriptJob -conditionTrue "playingBack" playBackCallback;

从上面可以看到,用起来很简单,回调函数可以是一个Mel 命令或一段脚本,但我们要注意的是:


1, Script jobs 被用于交互式应用程序中,在空闲事件发生的时候被调用,这也就意味着script jobs 不能用于批处理应用 batch application. 在批处理模式下,scriptJob 命令不会生效。
2, 由于该回调会频繁被触发,为了性能考虑,在 playback 期间 ScriptJob 的事件将不会被触发。
3, 当设置的Jobs 为condition的时候,不能同时设置了 true/false 状态后,又设置状态改变的事件。两者只能设置一个,不然会导致无法预料的结果。

关于具体如何使用,并且查询具体有哪些 event 和 condition 提供给开发者用,大家可以查看sciptJob 命令。

原文地址:https://www.cnblogs.com/johnonsoftware/p/3585851.html