VRP-Lua学习笔记
至于vrp是什么东西以及为什么要学习vrp,vrp的简单操作这些问题请自行右转抵拢倒拐找百度或者去中视典官网去找教程,我这里不会在赘述。
今天默认我们已经会使用VRP的脚本编辑器,用其他语言来为VRP编程实现交互。
VRP支持Lua脚本语言以及官方开放了支持高级语言的SDK(如果你的加密狗支持SDK)。这里我们先来讲讲使用Lua脚本。
关于Lua语法这里不做介绍,想了解的朋友请自行百度。我们主要是通过Lua调用VRP脚本,来简化控制流程让其更符合我们的编程逻辑。
加载lua
在Lua里,可以使用sys.DoScript(“VRP脚本”);函数来调用VRP脚本,下面来举个栗子:
第一步:新建一个后缀名lua文件,这里我叫他:Script.lua,并把他放在VRP文件名_textures这个文件夹下。这是vrp搜索文件时的默认文件夹,在此文件夹下我们可以在调用文件时不必指明路径。但是需要注意的是,对于此文件夹下的文件只能在VRP的脚本编辑器下引用,在Lua环境里使用时,在编辑测试的时候没问题,但是打包的时候资源不会打包进exe文件,这就导致在运行exe文件时出现文件丢失的情况。
第二步:在VRP的初始化函数中加载lua文件:
至于句柄随便写,只要在后面执行Lua函数时保持一致即可
第三步:在lua里添加脚本:
在函数以外的语句会在系统一开始的时候就运行,类似于这是初始化。但这是个不好的习惯。
下面是关于事件触发的,我们先在Lua文件里写好一个函数:
再在Control2按钮的点击事件了添加如下脚本:
以上的含义是:点击叫Control2的按钮,他就会执行调用Lua函数的VRP脚本,这个被调用的Lua函数是在Lua文件里定义好的。这里我们调用的是click函数,他的功能是将control2里显示“哈哈哈”字符。
这样当点击Control2按钮:
点击前:
点击后:
接下来是传递参数,可以将VRP里的变量作为参数传进Lua的 函数:
在Lua里定义一个带参的函数:
“..”符号在lua里是字符串连接符
在VRP的脚本里调用,参数1就是要传入的参数,支持传入两个参数:
效果如下:
点击前:
点击后:
一些主注意事项
1、 尽量使用lua的局部变量,全局变量太多容易引起全局变量污染导致系统崩溃
2、 你可以使用sys.GetValue("VRP变量名")来获取在VRP脚本里定义的变量的值
3、 在Lua环境里使用的媒体文件必须在vrp编辑器脚本加以引用,否则在编辑测试的时候没问题,但是打包的时候资源不会打包进exe文件,这就导致在运行exe文件时出现文件丢失的情况
4、 注意nil这个类型,Lua属于脚本语言,变量这样不必定义就直接使用,直接使用错误的变量在编译的时候不会报错而在运行的时候却出现许多莫名其妙的错误,当你发现某个代码段不执行的时候你可以看看是不是某个变量为空(nil类型),可以使用type(变量名)函数来看看变量的类型
5、 注意变量的类型,Lua可以根据变量的使用环境自动更改变量的类型,这让人相当头疼,比如你定义了变量i=1,当你使用的时候你不能确定i是string类型还是number类型,可能会出现i>0为假的情况,解决方法是先使用tonumber函数进行转化。
6、 对于数字类型,lua不区分是int、float、double。就是单纯的数字类型。但是由于精度问题会出现相应的问题,比如定义一个变量i=1.1;可能会出现i==1.1为假的情况。解决方法是在比较相等的时候尽量相减,即两个数的差的绝对值接近于0,math.abs((i-1.1))<0.0001,精度根据实际情况取值
7、 VRP与lua的通信做的并不好。由于VRP操作数据库不是很灵活,我想使用Lua来操作数据库。然而并没有效果。恐怕Lua的其他库VRP也没有支持,可怕。
8、 注意文件的编码。正常人应该不会用记事本编写Lua吧。我们通常会用到sublime text 这个文本编辑器来编写Lua脚本。问题来了,sublime保存文件的时候可能会改变文件的编码方式。而vrp的脚本是中文的。所以,当出现问题的时候你就只有哭了。文件的编码改变会导致两个结果,一是中文字符乱码,二是vrp不识别,vrp只识别gbk或gb2312的编码方式(目前我只发现这两个)。解决方法是1:使用sublime 2 而不是sublime 3。因为第三版不支持中文编码了。2:经常备份脚本。3:如果vrp不识别,我的作法是新建一个文本文件,在里面输入几个简体中文,记住是简体中文,不是繁体,不是拼音。点击保存,再用sublime 2 打开。这时他会自动更改为gbk编码。再关闭,用记事本打开,在记事本里把原来的lua脚本全部复制进来,保存,改成原来lua脚本的文件名,再把新脚本文件复制过去替换掉。
9、。。。想到再写
VRP-Lua学习笔记的更多相关文章
- [转]LUA 学习笔记
Lua 学习笔记 入门级 一.环境配置 方式一: 1.资源下载http://www.lua.org/download.html 2.用src中的源码创建了一个工程,注释调luac.c中main函数,生 ...
- Lua 学习笔记(一)
Lua学习笔记 1.lua的优势 a.可扩张性 b.简单 c.高效率 d.和平台无关 2.注释 a.单行注释 -- b.多行注释 --[[ --]] 3.类型和 ...
- Lua学习笔记6:C++和Lua的相互调用
曾经一直用C++写代码.话说近期刚换工作.项目组中的是cocos2dx-lua,各种被虐的非常慘啊有木有. 新建cocos2dx-lua项目.打开class能够发现,事实上就是C++项 ...
- Lua学习笔记4. coroutine协同程序和文件I/O、错误处理
Lua学习笔记4. coroutine协同程序和文件I/O.错误处理 coroutine Lua 的协同程序coroutine和线程比较类似,有独立的堆栈.局部变量.独立的指针指令,同时又能共享全局变 ...
- (转)Lua学习笔记1:Windows7下使用VS2015搭建Lua开发环境
Lua学习笔记1:Windows7下使用VS2015搭建Lua开发环境(一)注意:工程必须添加两个宏:“配置属性”/“C或C++”/“预处理器”/“预处理器定义”,添加两个宏:_CRT_SECURE_ ...
- Lua学习笔记:面向对象
Lua学习笔记:面向对象 https://blog.csdn.net/liutianshx2012/article/details/41921077 Lua 中只存在表(Table)这么唯一一种数据结 ...
- Lua学习笔记(二):基本语法
Lua学习指南:http://www.lua.org/manual/ 首先我们要明确的一点是:在Lua中,除了关键字外一切都是变量. Lua关键字 可以查看这个地址:http://www.lua.or ...
- Lua学习笔记一
学习了有一周多了.之前一直不想献丑,但还是记录下这个过程. 第1章 开发软件搭建 1. ubuntu 下lua安装 sudo apt-get install lua5.1 2.win下的环境搭建. ...
- lua学习笔记
工作需要,上周对lua赶进度似地学习了一遍,主要参考<lua中文教程>一书,中间参考一些<lua游戏开发实践>,首先说说这两本书,后者不适合初学,里面是对一个游戏脚本系统进行粗 ...
- 【Lua学习笔记之:Lua环境搭建 Windows 不用 visual studio】
Lua 环境搭建 Windows 不用 visual studio 系统环境:Win7 64bit 联系方式:yexiaopeng1992@126.com 前言: 最近需要学习Unity3d游戏中的热 ...
随机推荐
- IE 下的z-index BUG问题
今天做项目的时候在IE7 碰到了IE 的 z-index 问题: 然后问了几个朋友,总结了一下z-index问题的几个要点: 1.z-index 是要在position为relative或者absol ...
- git贡献代码流程
1.本地创建ssh key: $ ssh-keygen -t rsa -C "your_email@youremail.com" 2.回到github,进入Account Sett ...
- Windows Phone 开发起步之旅之一 平台环境的搭建
最近大家都在写博客园的技术文章,按耐不住了,也把自己平时学习中遇到和学习到的一些东西写出来,供大家分享也好,自己留个纪念也好,有个可以查看的东西. 言归正传,随着微软对Windows Phone的投入 ...
- 很不错的安卓FadingActionBar控件源码
这个我刚刚从一个github下载过来的,自己测试一下运行了,感觉还不错的,安卓FadingActionBar控件源码,现在就给大家分享一下,源码我已经上传到源码天堂那里了,想下载的朋友可以去那里下载吧 ...
- 基于Vivado HLS在zedboard中的Sobel滤波算法实现
基于Vivado HLS在zedboard中的Sobel滤波算法实现 平台:zedboard + Webcam 工具:g++4.6 + VIVADO HLS + XILINX EDK + ...
- CentOS学习笔记—软件管理程序RPM、YUM
软件管理程序 Linux的软件安装分为源代码编译安装和打包安装.RPM是一种打包安装方式,是由 Red Hat 这家公司开发出来的,后来实在很好用,因此很多 distributions 就使用这个机制 ...
- MySQL深入利用Ameoba实现读写分离
3 ameoba安装配置 3.1 安装配置JDK [root@stu15 ~]# rpm -ivh jdk-7u67-linux-x64.rpm [root@stu15 ~]# cd /usr/j ...
- PeopleSoft登录流程
1.初始化连接.App Server从配置文件中获得connect ID和user ID进行数据库初始化连接. 2.查询数据库中与安全相关的表信息connect ID被验证以后,AppServer查询 ...
- 微软必应·英雄会第三届在线编程大赛:几个bing?
发布公司:微软亚太研发集团 有 效 期:2013-12-31至2014-02-01 难 度 等 级: 答 题 时 长:120分钟 编程语言要求:C C++ Java C# 悬赏详情 一等奖 : 价值2 ...
- BufferedInputSream和BufferedOutputSream,,,
package cd.itcast.bufferinputstream; import java.io.BufferedInputStream; import java.io.File; import ...