理解VSL
“Global”VSL 脚本与“Run” VSL 脚本VSL脚本可以是Global VSL 或 Run VSL两种类型之一。 Global VSL脚本定义可被所有其它VSL脚本调用的函数。Global VSL脚本不能被运行,仅供其它VSL脚本(包括Global VSL 与 Run VSL)调用。 Run VSL脚本依附于图形化脚本编辑器中的 Run VSL BB - 一个 Run VSL 脚本对应一个 Run VSL BB,该Run VSL BB的第一个pIn即包含着被该BB执行的VSL代码。Run VSL脚本可以在创作模式(以在VSL脚本管理器内部执行的方式)下运行,也可在当该BB在运行时被激活并像其它BB一样被处理。 全局变量 bc (行为环境,behavior context) 与 ac (动作环境,action context)bc 是一种仅能在Run VSL脚本中使用的全局变量。 两者都提供了一些非常有用的方法:
bc 则有一些特殊的运行时方法,如:
ac 主要关注选择(selection)与鼠标位置。 译注:关于行为(behavior)与行动(action,本文中一般译作动作),请参看:http://www.xschina.org/show.php?id=5987 脚本间的依赖关系请注意:任何调用了Global VSL脚本中的函数的脚本(Global VSL 或 Run VSL)都依赖于该Global VSL脚本。如果你修改了某个Global VSL脚本,在VSL能解析那些调用了该Global VSL脚本之前,不仅该脚本本身要重新编译,而且那个Global VSL脚本也需重新编译。当你对VSL脚本作出变更时,你会在VSL管理器的VSL脚本视图区“已编译”列看到该变更要求重新编译其它VSL脚本。 变量类型除了以下列出的基类型,你可以使用VSL <- SDK Binding Tables - Classes and Methods中列出的类。也可以使用VSL <- SDK Binding Tables - Enumerations中列出的枚举参数类型。 基类型bool: 布尔值。真 (TRUE) 或假 (FALSE)。 就像上面提到的,VSL <- SDK Binding Tables列出了所有其它可用变量类型。你在VSL <- SDK Binding Tables中未找到的类型就表示该类型的变量不被支持。 为了避免定义Null对象,强烈建议使用调试检测(Debug Check,可在变量管理器中激活或禁用)。运行使用了Null对象变量的脚本会导致VSL管理器失效,也可能导致Virtools崩溃。再就是在进行软件开发时,强烈建议时常保存项目各个阶段的版本。 编译所有的VSL脚本在运行前必须进行编译。在下列情形下,VSL管理器会自动尝试编译那些未编译的VSL脚本:
注意:VSL管理器在编译Run VSL脚本前会尝试编译所有需要的(链接的)Global VSL脚本。我们强烈建议在运行你的VSL脚本前对它们先进性编译,以检测错误并帮助你确保VSL脚本按你的意图执行。 你可以选择编译VSL脚本管理器中的所有脚本或仅仅某些特定的脚本。当你在编译VSL脚本时,你必需决定是将它编译为Debug(调试)版本还是Release(发行)版本。 Debug(调试)与Release(发行)以Debug方式编译的VSL脚本可以使用VSL脚本管理器中的调试工具进行调试。Learning VSL through Examples系列中给出了使用这些工具的实例。 以Release方式编译的VSL脚本则不能进行调试。在运行时,Release VSL脚本执行速度会比Debug VSL脚本快很多倍,尽管它们是由JIT编译器编译。这种JIT编译器能创建高度优化的类汇编程序代码。 注意: 运行VSL脚本在创作模式或播放器模式下都可运行VSL脚本。 创作模式 播放器模式(运行时) 保存/导入你可以通过VSL脚本管理器界面中的“保存”与“加载”按钮来保存和加载Global VSL 与 Run VSL 脚本。VSL脚本以“.VSC”扩展名存为文本文件。注意:只能将VSL脚本载入一个现有VSL脚本中。在加载前,要确保该脚本中是空的;否则,你导入的 脚本会替换掉原有内容。还要注意你在保持或导入的所有内容是来自代码视图中源代码-而与connectors(bIns, bOuts, pIns, pOuts)相关的信息是未被保存的。 当然,你可以保存含有VSL脚本的Virtools文件(CMO/VMO/NMO/NMS)。若是这样的话,要确保所有依赖的脚本在载入被保存的文件时可用。 调试VSL脚本管理器中有很多调试工具 来帮助你调试脚本。要使用调试工具,你必须在调式模式下。注意:你不能再VSL中调试SDK元素。 限制VSL可以作为SDK的辅助,而不是替代。在某些场合,SDK更合适,而且有些特定任务是VSL无法完成的: VSL <- SDK Binding Tables 页面列出了VSL中所有可用的功能,以及其对应的SDK元素。表中未列出的SDK元素,即表示该元素在VSL中无法使用。 注意: 一些如管理器的创建、文件导入器、新参数类型等功能,仅能在Virtools SDK中使用。查看Schematic v. VSL v. SDK - 使用哪一种? 在VSL介绍 页面浏览更多信息。 |