本文档旨在介绍和解释一系列 Lua 接口函数/方法的使用方法和功能。这些接口为 Lua 开发者提供了一组强大的工具,以便在 Lua 环境中进行各种操作和计算。
以下是本文档涵盖的主要 API 接口列表:
属性
ssr.set_property ssr.set_property_table ssr.get_property ssr.register_property_change ssr.getNode ssr.set_property_ex ssr.enable_binding_ex ssr.enable_binding ssr.getInnerKeyWord计时器
ssr.timer_create ssr.timer_start ssr.timer_stop ssr.timer_destory ssr.isTimerRuning动画
ssr.animation_create ssr.animation_add_step ssr.animation_destory ssr.animation_trigger多语言
ssr.language_set_type ssr.language_get_type加载多工程
ssr.container_set_file移动节点层级
ssr.move_page_child ssr.move_child ssr.add_child事件
ssr.event_binding ssr.event_regist ssr.event_relation_define ssr.event_trigger获取路径
ssr.get_root_path退出程序
ssr.exit状态机
ssr.goto_state其他
ssr.get_os_type ssr.sleep日志打印
ssr.print设置项
ssr.config_set_cache ssr.config_set_enablePrintFPS ssr.config_set_logLev ssr.config_set_fpsLimit ssr.config_set_interval ssr.config_get_cache资源管理
ssr.resource_releaseImage ssr.resource_preLoad ssr.resource_query
设置节点的属性值
key:字符串类型,要更改的属性变量名
value:字符串类型,要更改的属性变量设值
nameSpace:Lua内部变量,固定字符串LuaENV,Container/Template工程下使用,不加此参数默认为主工程
NONE
function lua_fun()
--主工程Item节点的X属性:"Layer/Item/X"
ssr.set_property("Layer/Item/X","10")
end
function Template_fun()
--Template工程下Item节点的X属性:"Template/BG/Item/X"
ssr.set_property("./Item/X", "10", LuaENV)
end
function Container0_fun()
--Container工程下Item节点的X属性:"Container0/Item/X"
ssr.set_property("Container0/Item/X", "10", LuaENV)
end
设置多个节点的属性值
table:table是一个表,其中包含要更改的属性变量名作为键,更改的属性变量值作为键值
nameSpace:Lua内部变量,固定字符串LuaENV,Container/Template工程下使用,不加此参数默认为主工程
NONE
function lua_fun()
local data_table = {}
data_table["Layer/Item/X"] = "10" --Item节点的X属性设置为10(必须为String类型)
data_table["Layer/Item/Y"] = "10" --Item节点的Y属性设置为10(必须为String类型)
ssr.set_property_table(data_table)
end
获取节点的属性值
key:字符串类型,要获取的属性变量名
nameSpace:Lua内部变量,固定字符串LuaENV,Container/Template工程下使用,不加此参数默认为主工程
string类型,返回一个要获取的属性变量值
function lua_fun()
--Item节点的X属性:"Layer/Item/X"
local strVal = ssr.get_property("Layer/Item/X")
end
获取注册的属性值变化
table:返回一个表,其中包含要获取的属性变量名
cb_function:注册一个回调函数,函数参数包含变化的属性值
nameSpace: Lua内部变量,固定字符串LuaENV,Container/Template工程下使用,不加此参数默认为主工程
table类型,返回一个表,包含变化的属性变量值
function onPropertyChange(table)
for k, v in pairs(table) do
ssr.print(k.." "..v)
-- [k] [v]
-- prop X|Y
-- value 0
-- copyPath Layer/Item
end
end
function lua_fun()
--Item节点的X属性:"Layer/Item/X"
--Item节点的Y属性:"Layer/Item/Y"
local table = {"Layer/Item/X", "Layer/Item/Y"}
ssr.register_property_change(table, "onPropertyChange", LuaENV)
end
获取节点的ssr对象
nodePath :string类型,节点的路径
nameSpace:Lua内部变量,固定字符串LuaENV,Container/Template工程下使用,不加此参数默认为主工程
ssrObject* 类型,作为之后调用_ex函数的参数
function lua_fun()
--获取ssr对象
local ssrObj = ssr.getNode("Layer0/Item0")
end
设置节点的属性值
ssrObj: ssrObject*类型,ssr对象,使用getNode的返回值
propName: string类型,ssr对象的属性名
propValue: string类型,要更改的属性变量设值
NONE
function lua_fun()
--获取ssr对象
local ssrObj = ssr.getNode("Layer0/Item0")
--设置节点的属性值
ssr.set_property_ex(ssrObj, "X", "50")
end
设置绑定的状态
ssrObj: ssrObject*类型,ssr对象,使用getNode的返回值
propName: string类型,要设置绑定的属性名
enable: bool类型,是否绑定
NONE
function lua_fun()
--获取ssr对象
local ssrObj = ssr.getNode("Layer0/Item0")
--取消"Layer0/Item0/X"的绑定
ssr.enable_binding_ex(ssrObj, "X", false)
end
设置绑定的状态
nodePath: string类型,节点的路径
propName: string类型,要设置绑定的属性名
enable: bool类型,是否绑定
nameSpace: Lua内部变量,固定字符串LuaENV,Container/Template工程下使用,不加此参数默认为主工程
NONE
function lua_fun()
--取消"Layer0/Item0/X"的绑定
ssr.enable_binding("Layer0/Item0", "X", false)
end
获取节点内部关键字属性
nodePath: string类型,节点的路径
innerKey: string类型,节点自带关键字mouseX/mouseY/mouseXDir...
NONE
function lua_fun()
--获取Touch0的mouseX属性值
mouseX = ssr.getInnerKeyWord("Layer0/Touch0", "mouseX")
end
创建一个计时器,每隔"interval"时间触发一次,执行function
interval: int类型,计时器触发的时间间隔
count: int类型,计时器执行的次数
function: string类型,计时器触发时调用的函数
nameSpace: Lua内部变量,固定字符串LuaENV,Container/Template工程下使用,不加此参数默认为主工程
int类型,返回一个计时器的标志位
function cb_function()
ssr.print("cb_function")
end
--创建一个计时器,1s执行1次一共执行3次
function lua_fun()
local timer_id = ssr.timer_create(1000, 3, "cb_function")
ssr.timer_start(timer_id)
end
开始一个计时器
timer_id:创建计时器时返回的标志位
NONE
function cb_function()
ssr.print("cb_function")
end
--创建一个计时器,1s执行1次一共执行5次
function lua_fun()
local timer_id = ssr.timer_create(1000, 5, "cb_function")
--用创建计时器时返回的timer_id作为参数开始计时器
ssr.timer_start(timer_id)
end
停止一个已经运行的计时器,暂停的计时器timer_id可以继续使用
timer_id:创建计时器时返回的标志位
NONE
local timer_id
function cb_function()
ssr.print("cb_function")
end
--创建一个计时器,1s执行1次一共执行5次
function lua_fun()
timer_id = ssr.timer_create(1000, 5, "cb_function")
--用创建计时器时返回的timer_id作为参数开始计时器
ssr.timer_start(timer_id)
end
--暂停一个计时器
function cb_stop_timer()
ssr.timer_stop(timer_id)
end
销毁一个已经存在的计时器,销毁的计时器timer_id不可继续使用
timer_id:创建计时器时返回的标志位
NONE
local timer_id
function cb_function()
ssr.print("cb_function")
end
--创建一个计时器,1s执行1次一共执行5次
function lua_fun()
timer_id = ssr.timer_create(1000, 5, cb_function)
--用创建计时器时返回的timer_id作为参数开始计时器
ssr.timer_start(timer_id)
end
--销毁一个计时器
function cb_destory_timer(timer_id)
ssr.timer_destory(timer_id)
end
查看Timer是否正在运行中
timer_id:创建计时器时返回的标志位
int类型,1 正在运行,0 未在运行,-1 无效的timer_id
local timer_id
function cb_function()
ssr.print("cb_function")
end
--创建一个计时器,1s执行1次一共执行5次
function lua_fun()
timer_id = ssr.timer_create(1000, 5, cb_function)
--用创建计时器时返回的timer_id作为参数开始计时器
ssr.timer_start(timer_id)
--输出1
ssr.print(ssr.isTimerRuning(timer_id))
end
创建一个动画,它将返回一个动画ID
NONE
int类型,在以后调用的动画中所使用的ID
function animation_create()
local animation_id = ssr.animation_create()
--定义动画所需的步骤
local animation_step_table = {}
animation_step_table["node"] = "Layer0/Item0"
animation_step_table["propertyType"] = "X"
animation_step_table["from"] = "0"
animation_step_table["to"] = "1000"
animation_step_table["duration"] = "1000"
animation_step_table["delay"] = "0"
animation_step_table["easingType"] = "None"
animation_step_table["cbkFunName"] = ""
--添加动画所需的步骤
ssr.animation_add_step(animation_id, animation_step_table)
--触发动画开始
ssr.animation_trigger(animation_id)
end
为已创建的动画添加步骤,animation_id是ssr.animation_create()返回的动画id,table定义动画的参数
animation_id:动画id
table:一个动画的参数,其中包括:
node:节点的路径
propertyType:节点的属性名
from:动画的起始值
to:动画的结束值
delay:延时开始动画的时间(msec)
duration:动画执行的时间(msec)
easingType:动画执行的缓动曲线
cbkFunName:动画结束后执行的函数
nameSpace:Lua内部变量,固定字符串LuaENV,Container/Template工程下使用,不加此参数默认为主工程
NONE
function animation_create()
local animation_id = ssr.animation_create()
--定义动画所需的步骤
local animation_step_table = {}
animation_step_table["node"] = "Layer0/Item0"
animation_step_table["propertyType"] = "X"
animation_step_table["from"] = "0"
animation_step_table["to"] = "1000"
animation_step_table["duration"] = "1000"
animation_step_table["delay"] = "0"
animation_step_table["easingType"] = "None"
animation_step_table["cbkFunName"] = ""
--添加动画所需的步骤
ssr.animation_add_step(animation_id, animation_step_table)
--触发动画开始
ssr.animation_trigger(animation_id)
end
销毁一个已经创建的动画
animation_id:销毁的动画id
NONE
function animation_create()
local animation_id = ssr.animation_create()
--定义动画所需的步骤
local animation_step_table = {}
local animation_step_table = {}
animation_step_table["node"] = "Layer0/Item0"
animation_step_table["propertyType"] = "X"
animation_step_table["from"] = "0"
animation_step_table["to"] = "1000"
animation_step_table["duration"] = "1000"
animation_step_table["delay"] = "0"
animation_step_table["easingType"] = "None"
animation_step_table["cbkFunName"] = ""
--添加动画所需的步骤
ssr.animation_add_step(animation_id, animation_step_table)
--销毁动画
ssr.animation_destory(animation_id)
end
触发一个已经创建的动画
animation_id:动画id
NONE
function animation_create()
local animation_id = ssr.animation_create()
--定义动画所需的步骤
local animation_step_table =
{
{node = "Layer0/Item0", propertyType = "X", from = 0, to = 1000, delay = 0, duration = 16, easingType = "NONE", cbkFunName = ""},
{node = "Layer0/Item0", propertyType = "X", from = 1000, to = 0, delay = 0, duration = 16, easingType = "NONE", cbkFunName = ""},
}
--添加动画所需的步骤
for k, v in pairs(animation_step_table) do
ssr.animation_add_step(animation_id, v)
end
--触发动画开始
ssr.animation_trigger(animation_id)
end
设置语言类型
type:int类型,设置当前的语言类型(类型通过多语言工具获取)
NONE
function set_language_fun()
--设置第一个语言类型
ssr.language_set_type(0)
end
设置语言类型
NONE
type:int类型,获取当前的语言类型(类型通过多语言工具获取)
function set_language_fun()
--获取当前的语言类型
local type = ssr.language_get_type()
end
给某个节点绑定一个ssr系统自带的事件,当触发该事件时会调用回调函数
path: 节点的路径
event: 节点要绑定的事件类型
cb_function: 事件触发时调用的函数
nameSpace:Lua内部变量,固定字符串LuaENV,Container/Template工程下使用,不加此参数默认为主工程
NONE
function onReleaseEvent()
ssr.print("onReleaseEvent")
end
function event_binding_fun()
--添加一个"Touch0"节点,绑定"Release"事件,注册一个回调函数"onReleaseEvent"
ssr.event_binding("Layer0/Item0/Touch0","Released","onReleaseEvent")
end
自定义一个事件,配合ssr使用
event_table: lua table类型,存储节点以及需要订阅的节点的事件类型
cb_function: 定义一个回调函数,当有event_table["event"]事件触发时会调用cb_function函数
nameSpace: Lua内部变量,固定字符串LuaENV,Container/Template工程下使用,不加此参数默认为主工程
NONE
function cb_function(table)
ssr.print(table["name"].." , "..table["event"])
--table["name"]: 事件响应关联的节点
--table["event"]:事件类型:"Pressed", "Moving", "Released", "Clicked"
end
function event_define_fun()
--table:存储节点和事件的数据
--cb_function:回调的函数
local table = {}
table["Layer0/Touch0"] = {"Pressed", "Released"}
table["Layer0/Touch1"] = {"Pressed", "Moving"}
table["Layer0/Touch2"] = {"Pressed", "Clicked"}
ssr.event_regist(table, "cb_function", LuaENV)
end
自定义一个事件,配合ssr.event_trigger()使用
eventName: string类型,自定义的事件名
cb_function: 定义一个回调函数,当有eventName消息发送时会调用cb_function函数
nameSpace: Lua内部变量,固定字符串LuaENV,Container/Template工程下使用,不加此参数默认为主工程
NONE
function event_relation_define_fun()
--triggering:自定义事件名triggering
--cb_function:回调的函数
ssr.relation_define("triggering", "cb_function", LuaENV)
end
function event_trigger_fun()
--triggering:自定义事件名triggering
ssr.event_trigger("triggering") --只触发不传参
end
function cb_function()
--不接收传参
ssr.print("triggering") --输出triggering
end
自定义一个事件,配合ssr.relation_define()使用
eventName: string类型,自定义的事件名
eventParam: string类型,给回调函数传的参数,可为空
NONE
function event_relation_define_fun()
--triggering:自定义事件名triggering
--cb_function:回调的函数
ssr.event_relation_define("triggering", "cb_function", LuaENV)
end
function event_trigger_fun()
--triggering:自定义事件名triggering
--hello:给回调函数传参
ssr.event_trigger("triggering", "hello")
end
function cb_function(table)
--table["eventParam"]:触发时传的参数,lua表类型
ssr.print(table["eventParam"]) --输出hello
end
设置一个container工程
path:container工程的路径
containerProjName:container的工程名字
int类型,返回0代表设置成功,返回-1代表设置失败
function lua_fun()
--Container0:表示container的路径
--ContainerProName:表示container的工程名字
ssr.container_set_file("Container0","ContainerProName")
end
移动Layer节点和Page节点的显示层级
nodePath:string类型,Layer节点或者Page节点的路径(用于多个container的显示层级处理)
index:int类型,节点的显示层级,0表示显示层级在最底层,-1表示显示层级在最顶层
int类型,返回0代表设置成功,返回-1代表设置失败
function lua_fun()
--Container0:表示container的路径
--index:表示container的工程名字
ssr.move_page_child("Container0",index)
end
移动Layer下的节点显示层级
nodePath:string类型,父节点的路径
nodeSubPath:string类型,子节点的路径
index:int类型,节点的显示层级,0表示显示层级在最底层,-1表示显示层级在最顶层
nameSpace:Lua内部变量,固定字符串LuaENV,Container/Template工程下使用,不加此参数默认为主工程
int类型,返回0代表设置成功,返回-1代表设置失败
function lua_fun()
--layer0:表示父节点的路径
--Item0:表示子节点的路径
ssr.move_child("layer0","layer0/Item0", 0)
end
将ssrObjSub移动到ssrObjParent节点下,需先执行三次getNode
ssrObjParent: SSRObject*类型,父节点路径 getNode的返回值
ssrObjSub: SSRObject*类型,被移动的节点路径 getNode的返回值
ssrTargetParent: SSRObject*类型,被移动的节点的原有父节点路径 getNode的返回值
int类型,返回0代表设置成功,返回-1代表设置失败
function lua_fun()
local ssrObjParent = ssr.getNode("Layer0/ItemAddChild/CItem1")
local ssrObjSub = ssr.getNode("Layer0/ItemAddChild/CItem2")
local ssrTargetParent = ssr.getNode("Layer0/ItemAddChild")
--将CItem2移动到CItem1下
ret = ssr.add_child(ssrObjParent, ssrObjSub, ssrObjparent)
ssr.print("Add Child is"..ret)
end
获取主工程的根目录路径
NONE
string类型,返回主工程所在的路径
function lua_fun()
--path表示返回的当前工程所在的路径
local path = ssr.get_root_path()
ssr.print(path)
end
强制关闭ssRender应用程序
NONE
NONE
function exit_fun()
--强制关闭当前的应用程序
ssr.exit()
end
获取操作系统类型
NONE
string类型,返回当前操作系统类型
function get_curr_os_type()
--获取操作系统类型 OS_Windows | ANDROID | __linux__ | __QNX__ | OS_Other
local os_type = ssr.get_os_type()
end
执行指定状态机的状态
stateMachineName: string类型,状态机的名字
stateName: string类型,状态的名字
nameSpace: Lua内部变量,固定字符串LuaENV,Container/Template工程下使用,不加此参数默认为主工程
NONE
function lua_fun()
--执行stateMachine1的state1状态
ssr.goto_state("stateMachine1", "state1")
end
设置延时一段时间
ms: int类型,延时一段时间再继续执行,单位毫秒
NONE
function lua_fun()
--延时3秒
ssr.print("Sleep Start")
ssr.sleep(3000)
ssr.print("Sleep End")
end
Lua日志打印接口,
str: string类型,打印的信息,支持UTF-8
NONE
function lua_fun()
--输出Hello World
ssr.print("Hello World")
end
设置cache的状态,cache:是否缓存资源,默认为true
enable: bool类型,是否缓存
NONE
function lua_fun()
--取消缓存资源
ssr.config_set_cache(false)
end
设置是否打印FPS+drawCall
enable: bool类型,是否打印
NONE
function lua_fun()
--打印FPS+drawCall
ssr.config_set_enablePrintFPS(true)
end
设置log等级
level: int类型,log等级 0:ERROR 1:INFOR 2:DEBUG 3:COREDUMP
NONE
function lua_fun()
--设置log等级为debug
ssr.config_set_logLev(2)
end
设置限制帧率
fps: int类型,帧率
NONE
function lua_fun()
--限制30帧
ssr.config_set_fpsLimit(30)
end
设置渲染间隔:每一帧画面被渲染出来所需的时间间隔
ms: int类型,单位毫秒
NONE
function lua_fun()
--设置渲染间隔为30ms
ssr.config_set_interval(30)
end
获取当前cache状态 cache:是否缓存资源,默认为true
NONE
bool类型,当前cache的状态,true缓存资源,false不缓存资源
function lua_fun()
--获取当前cache状态
local ret = ssr.config_get_cache()
ssr.print("ret:"..tostring(ret))
end
释放指定路径图片资源
imagePath:string类型,图片路径(相对或绝对都可以)
nameSpace:Lua内部变量,固定字符串LuaENV,Container/Template工程下使用,此参数传递空值默认为主工程
forceRelease:bool类型,是否强制释放true/false
NONE
function lua_fun()
--强制释放绝对路径图片资源
ssr.config_set_releaseImage("/usr/bin/ssr/resource/images/a.png", "", true)
--强制释放相对路径图片资源
ssr.resource_releaseImage("a.png", "", true)
end
预加载图片到内存中
tab:luatable类型,图片路径(相对或绝对都可以)
NONE
function lua_fun()
local tab = {"/usr/bin/ssr/resource/images/a.png", "/usr/bin/ssr/resource/images/b.png"}
--指定路径图片资源预加载在内存中
ssr.resource_preLoad(tab)
end
查看资源是否在缓存里
imagePath:string类型,图片路径(相对或绝对都可以)
resourceType:资源类型:0 image / 1 font / 2 plugin / 3 model
nameSpace:Lua内部变量,固定字符串LuaENV,Container/Template工程下使用,不加此参数默认为主工程
NONE
function lua_fun()
--指定路径图片资源是否在缓存中
ret = ssr.resource_query("/usr/bin/ssr/resource/images/a.png", 0)
--指定路径字体资源是否在缓存中
ret2 = ssr.resource_query("jianti.font", 1)
ssr.print("a.png "..tostring(ret)) --已经在缓存中输出true 反之false
ssr.print("jianti.font "..tostring(ret2)) --已经在缓存中输出true 反之false
end
版本1.0.0:[20240913] - 初始版本,包含Animation函数、Timer函数和get函数等。
版本1.0.1:[20250528] - 删除ssr.event_send接口,修改ssr.event_regist接口使用和定义。
版本1.0.2:[20250710] - 新增ssr.get_os_type()接口,用于用户判定操作系统类型。
版本1.0.3:[20250826]
- 修改 ssr.register_property_change(table, cb_function, LuaENV) 接口,新增 LuaENV 参数,为固定字符。
- 修改 ssr.event_regist(event_table, cb_function, LuaENV) 接口,新增 LuaENV 参数,为固定字符。
- 修改 ssr.register_property_change(table, cb_function, LuaENV) cb_function接口的回调参数。
版本1.0.4:[20251115]
- 新增 ssr.getNode(nodePath, nameSpace) 接口。
- 新增 ssr.set_property_ex(ssrObj, propName, propValue) 接口。
- 新增 ssr.enable_binding_ex(ssrObj, propName, enable) 接口。
- 新增 ssr.enable_binding(nodePath, propName, enable, nameSpace) 接口。
版本1.0.5:[20260321] - 新增设置项以及资源管理以及其余遗漏接口,完善了所有代码示例。