lua的一些封装方法
获取点击屏幕坐标
1 function getTouchPosition()
2 local locationX, locationY
3
4 local listener = cc.EventListenerTouchOneByOne:create()
5 listener:setSwallowTouches(true)
6 listener:registerScriptHandler(function(touch, event)
7 locationX, locationY = touch:getLocation().x, touch:getLocation().y
8 return true
9 end, cc.Handler.EVENT_TOUCH_BEGAN)
10
11 cc.Director:getInstance():getEventDispatcher():addEventListenerWithSceneGraphPriority(listener, cc.Director:getInstance():getRunningScene())
12
13 cc.Director:getInstance():getRunningScene():runAction(cc.Sequence:create(cc.DelayTime:create(0.1), cc.CallFunc:create(function() cc.Director:getInstance():getEventDispatcher():removeEventListener(listener) end)))
14
15 return locationX, locationY
16 end
1 local tess = require("tesseract")
2 tess.init("eng")
3
4 local function findText(imagePath, text)
5 local result = tess.recognize(imagePath)
6 for i, line in ipairs(result.lines) do
7 local startIndex, endIndex = string.find(line.text, text)
8 if startIndex ~= nil then
9 local charWidth = line.width / #line.text
10 local x = line.x + (startIndex - 1) * charWidth + charWidth / 2
11 local y = line.y + line.height / 2
12 return {x = x, y = y}
13 end
14 end
15 return nil
16 end
17
18 local function searchAndPrint(imagePath, text)
19 local result = findText(imagePath, text)
20 if result ~= nil then
21 print(string.format("Found text \"%s\" at position (%d, %d)", text, result.x, result.y))
22 return result
23 else
24 print(string.format("Text \"%s\" not found", text))
25 return nil
26 end
27 end
28
29 searchAndPrint("test.png", "Hello")
1 -- 定义任务函数
2 local function myTask()
3 print("这是一个任务")
4 end
5
6 -- 定义任务控制模块
7 local taskCtrl = {
8 interval = 1,
9 running = false,
10 thread = nil,
11 start = function(self)
12 self.running = true
13 self.thread = coroutine.create(function()
14 while self.running do
15 myTask()
16 os.sleep(self.interval)
17 end
18 end)
19 coroutine.resume(self.thread)
20 end,
21 stop = function(self)
22 self.running = false
23 if self.thread then coroutine.yield(self.thread) end
24 self.thread = nil
25 end,
26 resume = function(self)
27 if not self.running then self:start()
28 elseif self.thread then coroutine.resume(self.thread) end
29 end,
30 restart = function(self) self:stop() self:start() end
31 }
32
33 -- 监听键盘事件
34 local keys = {"1","2","3","4","5"}
35 for _, key in ipairs(keys) do
36 keyboard.addHotkey("ctrl+"..key, function()
37 print("按下了 Ctrl+"..key)
38 if taskCtrl[key] then taskCtrl[key](taskCtrl) else os.exit() end
39 end)
40 end
1 local csv = require("csv")
2
3 -- 从 CSV 文件中读取数据
4 local data = csv.open("data.csv"):read()
5
6 -- 输出读取到的数据
7 for i, record in ipairs(data) do
8 for j, field in ipairs(record) do
9 print(field)
10 end
11 end
12
13 -- 将数据写入到 CSV 文件中
14 csv.open("data.csv", "w"):write({
15 {"id", "name", "age"},
16 {1, "John", 30},
17 {2, "Jane", 25},
18 {3, "Bob", 45}
19 })
20
21
22
23
24 --------版本二
25 local csv = require("csv")
26
27 -- 读取 CSV 文件数据
28 local function read_csv(file)
29 local data = csv.open(file):read()
30 return data
31 end
32
33 -- 输出 CSV 文件数据
34 local function print_csv(data)
35 for i, record in ipairs(data) do
36 for j, field in ipairs(record) do
37 print(field)
38 end
39 end
40 end
41
42 -- 写入 CSV 文件数据
43 local function write_csv(file, data)
44 local writer = csv.open(file, {headers=false})
45 writer:write(data)
46 writer:close()
47 end
48
49 -- 读取 CSV 文件数据
50 local data = read_csv("data.csv")
51
52 -- 输出 CSV 文件数据
53 print_csv(data)
54
55 -- 写入 CSV 文件数据
56 write_csv("data.csv", {
57 {"id", "name", "age"},
58 {"1", "John", "30"},
59 {"2", "Jane", "25"},
60 {"3", "Bob", "45"},
61 })
1 local second_value = data[1][2]
2
3
4 for i, record in ipairs(data) do
5 local second_value = record[2]
6 -- do something with second_value
7 end
lua的一些封装方法的更多相关文章
- Lua常用封装方法
Lua 获取随机值 --获取随机值,指定上限和下限 function getRandom(min,max) -- 接收一个整数n作为随即序列的种子 math.randomseed(os.time()) ...
- C++实现对lua访问的封装
这是一个几年前写的对lua的访问封装,当时的项目仅提供了最基本的lua访问接口:调用lua函数,向lua注册标准格式的C++函数. 本来我想引进luabind,但luabind相对又过于复杂,并不是所 ...
- js面向对象的封装方法,【案例】
封装方法: /** * @矩形canvas库 * @authors Shimily (275766400@qq.com) * @date 2016-12-28 10:30:51 * @version ...
- Lua 调用 Opencv 的方法
Lua 调用 Opencv 的方法 最近想用 Lua 调用 Opencv 进行相关像素级操作,如:bitwise_and 或者 bitwise_or,从而完成图像 IoU 的计算. 那么,怎么用 Lu ...
- Javascript 封装方法
基本封装方法 请看下面的例子: var Person = function(name,age){ this.name = name; this.age = age || "未填写" ...
- [论文笔记] 一种Java遗留系统服务化切分和封装方法 (计算机学报, 2009)
李翔,怀进鹏,曾晋,高鹏. 一种Java遗留系统服务化切分和封装方法. 计算机学报, 32(9), 2009, p1084-1815 (gs:5) 1. 本文研究从Java遗留系统中切分并封装出Web ...
- 分享几个Javascript 封装方法
基本封装方法 请看下面的例子: var Person = function(name,age){ this.name = name; this.age = age || "未填写" ...
- lua package path 设置方法
lua package path 设置方法: 添加环境变量LUA_PATH="/add_path/?.lua;;" 1.add_path为新添加的目录: 2.一定要添加双引号: 3 ...
- iOS常用的封装方法
做开发也有一段时间了,看了好多大神的代码,总体感觉他们写的代码简洁,好看,然而在对比下我写的代码,混乱,无序,简直不堪入目啊! 总体来说大神们的代码封装的都比较好,对一个项目要重复用到的代码他们都会封 ...
- JavaScrpt常用的封装方法
1.闭包封装.在这个封装方法中,所有的实例成员都共享属性和方法, 使得所有得方法和属性都私有且对象间共享 (function ($) { var Person = function(name) { r ...
随机推荐
- NAT的转换
NAT的转换 拓扑图 Sever0的IP地址:192.168.0.1/24 网关:192.168.0.254 PC0的IP地址:192.168.0.100/24 PC1的IP地址:192.168.0. ...
- hive支持的压缩算法
压缩格式的设置 set mapred.output.compression= 压缩格式 工具 算法 扩展名 是否支持分割 Hadoop编码/解码器 default deflate .deflate N ...
- jmeter非GUI模式运行-单节点
jmeter有自己的GUI页面,但是当线程数很多或者现在有很多的测试场景都是基于linux下进行压测,这时我们可以使用jmeter的命令行方式来执行测试,该篇文章介绍jmeter单节点命令运行方式. ...
- mysql 1130报错只允许localhost登录解决方法
提示:这些方法会改变登录权限,如果是生产服务器端谨慎操作!!! mysql出现错误码1130的解决办法: 错误描述: 错误代码:1130Host ***.***.***.*** is not allo ...
- java发送短信验证码带倒计时
分享一个完整的java发送短信验证码的完整实例,这是一个官方的使用demo,带有60秒倒计时功能. 效果: 我使用的是榛子云短信平台, 官网地址:http://smsow.zhenzikj.com 我 ...
- c++ vtdcm对于压缩模式文档图片的读取
//获取dcm数据结构,一下图像数据仅针对单通道8字节数据 DcmFileFormat fileformat; OFCondition oc = fileformat.loadFile(dcmPath ...
- tensorflow2.0和之前版本读取模型的接口变化
tensorflow2.0 c++加载模型可以用接口LoadSavedModel: SessionOptions opts; tensorflow::RunOptions run_option ...
- js处理树形数组扁平化
// 树形数组扁平化 const extractTree = (data: TagsParams[]) => { if (!data.length) return []; const l ...
- HDFS、Ceph、GFS、GPFS、Swift、Lustre……容器云选择哪种分布式存储更好?
HDFS.Ceph.GFS.GPFS.Swift.Lustre--容器云选择哪种分布式存储更好?-51CTO.COM 容器云在使用分布式存储时,HDFS.CEPH.GFS.GPFS.Swift等分布式 ...
- 【NumPy】Python利用linspace进行数据采样
情景 假设有一堆长度为1000的数据,我现在只想要其中800个并且要求整体趋势一样,那就可以试试使用linspace进行等间距的采样. 简介 linspace(start, stop, num=50, ...