CloseMaxScript6 模块
概述
命令和附属文件是主脚本周边相关的脚本内容
现已将这2个概念整合为模块
添加模块
--是否全局启用模块授权
config.UseModuleAuth = true
--模块授权源代码
config.ModuleAuthSource = "(false)"
--是否压缩模块授权代码
config.CompressModuleAuthCode = false
--添加嵌入模块源代码
--arg1 模块唯一key
--arg2 源代码
--useAuth 该模块是否使用授权
--compress 是否压缩
config.AddEmbeddedModuleSource "sayHello1" "print 111" useAuth:true compress:false
config.AddEmbeddedModuleSource "sayHello2" "print 222" useAuth:false compress:false
--config.AddEmbeddedModuleSource "testModlue" (Cmxs6Publisher.readFile @"C:\temp\test.ms") useAuth:false compress:false
--添加模块文件
config.FileModuleExtension = ".dat"
config.AddFileModule (@"C:\temp\test2.ms") useAuth:false
使用模块
在大型项目中可以对其进行封装,按需加载,以便提高项目初次加载速度
示例
try(destroyDialog r_name)catch()
rollout r_name "测试工具"
(
button btnCall1 "调用工具1" width:100 offset:[0,5]
button btnCall2 "调用工具2" width:100 offset:[0,5]
fn usingModule moduleName =
(
--编译后的环境
if '@cmxs_env' == true then
(
--local product = Cmxs6Container.MxsRuntime.Get "LastTool" --测试时可用这个,编译时推荐下面的
local product = Cmxs6Container.MxsRuntime.Call "GetProduct" "'@cmxs_guid'"
local res = product.Call "ImportModule" moduleName
print ("ImportModule 执行结果:" + res as string)
)
--测试开发环境,载入源代码
else
(
--filein (@"c:\MyProject\" + moduleName + ".ms")
)
)
on btnCall1 pressed do
(
global gVar1
usingModule "功能1"
gVar1()
)
on btnCall2 pressed do
(
global gVar2
usingModule (@"C:\Users\pc\AppData\Local\Temp\_cmxs_temp\tool2.dat")
gVar2()
)
)
createDialog r_name 200 180
所有模块使用方式解释
global gVar1
--执行模块,每调用一次从新执行
product.Call "ExecuteModule" "sayHello1"
product.Call "ExecuteModule" @"c:\temp.dat"
--在非ui线程执行模块,禁止操作max对象,否则会导致max崩溃
product.Call "ExecuteModuleAsync" "sayHello1" 1000
--导入模块(如果已经执行,则不会再次执行)
product.Call "ImportModule" "sayHello1"
product.Call "ImportModule" @"c:\temp.dat"
--从资源中执行模块(把模块文件当做资源嵌入的情况,听起来有点脱裤子放屁,但这是有实际的应用场景)
product.Call "ExecuteFileMoudleFromResources" "resName"
浙公网安备 33010602011771号