至于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学习笔记的更多相关文章

  1. [转]LUA 学习笔记

    Lua 学习笔记 入门级 一.环境配置 方式一: 1.资源下载http://www.lua.org/download.html 2.用src中的源码创建了一个工程,注释调luac.c中main函数,生 ...

  2. Lua 学习笔记(一)

    Lua学习笔记 1.lua的优势 a.可扩张性     b.简单     c.高效率     d.和平台无关 2.注释 a.单行注释 --        b.多行注释 --[[  --]] 3.类型和 ...

  3. Lua学习笔记6:C++和Lua的相互调用

        曾经一直用C++写代码.话说近期刚换工作.项目组中的是cocos2dx-lua,各种被虐的非常慘啊有木有.     新建cocos2dx-lua项目.打开class能够发现,事实上就是C++项 ...

  4. Lua学习笔记4. coroutine协同程序和文件I/O、错误处理

    Lua学习笔记4. coroutine协同程序和文件I/O.错误处理 coroutine Lua 的协同程序coroutine和线程比较类似,有独立的堆栈.局部变量.独立的指针指令,同时又能共享全局变 ...

  5. (转)Lua学习笔记1:Windows7下使用VS2015搭建Lua开发环境

    Lua学习笔记1:Windows7下使用VS2015搭建Lua开发环境(一)注意:工程必须添加两个宏:“配置属性”/“C或C++”/“预处理器”/“预处理器定义”,添加两个宏:_CRT_SECURE_ ...

  6. Lua学习笔记:面向对象

    Lua学习笔记:面向对象 https://blog.csdn.net/liutianshx2012/article/details/41921077 Lua 中只存在表(Table)这么唯一一种数据结 ...

  7. Lua学习笔记(二):基本语法

    Lua学习指南:http://www.lua.org/manual/ 首先我们要明确的一点是:在Lua中,除了关键字外一切都是变量. Lua关键字 可以查看这个地址:http://www.lua.or ...

  8. Lua学习笔记一

    学习了有一周多了.之前一直不想献丑,但还是记录下这个过程. 第1章  开发软件搭建 1. ubuntu 下lua安装 sudo apt-get install lua5.1 2.win下的环境搭建. ...

  9. lua学习笔记

    工作需要,上周对lua赶进度似地学习了一遍,主要参考<lua中文教程>一书,中间参考一些<lua游戏开发实践>,首先说说这两本书,后者不适合初学,里面是对一个游戏脚本系统进行粗 ...

  10. 【Lua学习笔记之:Lua环境搭建 Windows 不用 visual studio】

    Lua 环境搭建 Windows 不用 visual studio 系统环境:Win7 64bit 联系方式:yexiaopeng1992@126.com 前言: 最近需要学习Unity3d游戏中的热 ...

随机推荐

  1. 第九周java学习总结

    20145306<java程序设计>第九周学习总结 教材学习内容总结 第十六章 一.JDBC入门 1.JDBC简介 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据 ...

  2. 【Qt 】QSettings写ini配置文件

    QSettings写ini配置文件(Qt版本5.2): #include "inidemo.h" #include <QSettings> #include <Q ...

  3. C语言文法 改

    <程序> ->  <外部声明> |  <程序>  <外部声明> <外部声明>  ->   <函数定义>  |  &l ...

  4. 浅谈C++虚函数

    很长时间都没写过博客了,主要是还没有养成思考总结的习惯,今天来一发. 我是重度拖延症患者,本来这篇总结应该是早就应该写下来的. 一.虚函数表 C++虚函数的机制想必大家都清楚了.不清楚的同学请参看各种 ...

  5. 学生信息管理系统应用ios源码iPad版

    学生信息管理系统应用iPad版,该应用源码比较完整的,而且也很详细,这也是一款学校用的学生和老师管理系统,里面涉及到了很多ipad常用的控件,操作和数据存储. <ignore_js_op> ...

  6. Run JavaScript on your PeopleSoft pages conditionally

    Here, PeopleCode sets the logic that determines when the JavaScript code will run. This is not as si ...

  7. Winform主窗体的设置

    软件必然涉及到一个主窗体MainForm,下面介绍一下几个简单的属性设置,可能比较有用 (1)icon,当然是咱们软件的图标了,设置上去即可 (2)isMdiContainer,这个比较重要了哦,必须 ...

  8. Sliverlight中PagedCollectionView的使用

    最近项目中一直在和PagedCollectionView这个类打交道.通过它,我们可以以分页的形式自动处理并显示集合中的片段,尤其是和Pager控件配合的时候更能彰显其威力. PagedColecti ...

  9. 在ubuntu上使用wxWidgets成功开发一个图形界面程序

    编译wxWidgets 下载最新版的源码,wxWidgets-3.0.2.wxWidgets在liunx是通过wxGTK实现的.wxGTK和wxWidgets的源码打包在一起.wxGTK依赖GTK+, ...

  10. [Linux] Ubuntu Server 12.04 LTS 平台上搭建WordPress(Nginx+MySQL+PHP) Part IV

    接下来我们去下载 WorePress 用最新的 3.7.1 下载地址是:http://cn.wordpress.org/wordpress-3.7.1-zh_CN.zip 我们先建立一个文件夹 /va ...