VideoOS 是在LuaView开源项目基础上,开发的一套视频互动对接层,其初衷是为了提升移动端互动模块动态化能力,同时做到Android、iOS业务代码共用,减少同一业务的人员重复投入。
VideoOS采用Lua语音开发,开发VideoOS小程序需要熟悉Lua语言,Lua语言入门可以学习菜鸟教程。
VideoOS是在LuaView开源项目基础上做的二次开发,所以一些常用UI控件的熟悉可以参考LuaView Demo
VideoOS所有的lua文件运行时,都从show方法开始执行。
function show(args)
print("first load")
endVideoOS可以通过下面方法获取的调用本地Lua的路径:
NSString *filepath = [VPUPPathUtil luaOSPath];VenvyFileUtil.getCachePath(Context()) + "/lua/os/cache/demo");将开发的lua文件放在上面获取到的路径中,通过调用原生的接口调用lua文件
[interfaceController navigationWithURL:[NSURL URLWithString:@"LuaView://defaultLuaView?template=ifs_hotspot.lua&id=5aa5fa5133edbf375fe43fff4"] data:dict];Uri uri = Uri.parse("LuaView://defaultLuaView?template=ifs_hotspot.lua&id=ifs_hotspot");
HashMap<String, String> params = new HashMap<>();
params.put("data", dict);
mVideoPlusView.navigation(uri, params, new IRouterCallback() {
@Override
public void arrived() {
mVideoPlusView.start();
}
@Override
public void lost() {
}
});注:ifs_hotspot.lua是本地调用的lua文件,id(5aa5fa5133edbf375fe43fff4)是这个文件的一标识,dict是传给lua文件的数据
lua文件可以通过Native:sendAction方法打开其他lua文件
Native:sendAction(Native:base64Encode("LuaView://defaultLuaView?template=" .. "os_card_car_window.lua" .. "&id=" .. "os_card_car_window" .. tostring(card.id) .. tostring(card.hotspotOrder) .. "&priority=" .. tostring(osInfoViewPriority)), data)注:os_card_car_window.lua是打开的lua文件,"os_card_car_window" .. tostring(card.id)是这个文件的一标识,priority是lua加载的层级,priority值越大,新加载的View在父View的越上层, data是传给lua文件的数据
- 语言自带的方法用
.或:调用都可以,自定义的方法用:调用 - 创建的对象需要被其他对象持有,不然在内存紧张时,lua会调用
gc方法,释放未被持有的对象 - 可以用
.的方式,检查某个对象是否支持此方法
if (ruleView.movementMethod) then
ruleView:movementMethod()
end