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 ...
随机推荐
- 公共的common.scss (覆盖部分element组件主题色)
公共的 common.scss (包含主题色 覆盖部分element组件主题色) $theme: #D50000; $litterTheme: #ec6059; .text-theme { color ...
- 2022-04-20内部群每日三题-清辉PMP
1.一个项目已经支出350万美元,现在已经完成400万元美元的工作.该项目的计划价值(PV)为800万美元.主题专家(SME)估算还需要600万美元来完成该项目.完成该项目的技术方法不再有效.当前的完 ...
- 宽字符集(unicode)操作函数 (转)
字符分类: 宽字符函数 普通C函数 描述 iswalnum() isalnum() 测试字符是否为数字或字母 iswalpha() isalpha() 测试字符是否是字母 iswcntrl() isc ...
- Spring入门之IoC 的概念和作用(02)
2.1 程序的耦合和解耦 2.1.1 程序的耦合耦合性(Coupling),也叫耦合度,是对模块间关联程度的度量.耦合的强弱取决于模块间接口的复杂性.调用模块的方式以及通过界面传送数据的多少.模块间的 ...
- sublime Vue、ejs、less、scss高亮展示
sublime中默认不支持ejs.vue.less.scss等文件高亮展示.解决办法可以增加对应插件: 一.安装: 1.打开sublime 2.点击 preferences ->Browse ...
- Flutter基于Mac的环境配置
1.下载Flutter SDK git clone https://github.com/flutter/flutter.git 2.配置Flutter镜像+Flutter环境变量 ( 先创建.bas ...
- element NavMenu侧栏导航菜单(可折叠)
展示效果如图: 代码: <el-scrollbar class="scrollbar-wrapper"> <!-- el-scrollbar超长可滚动 --> ...
- 如何在微信小程序中使用ECharts图表
在微信小程序中使用ECharts 1. 下载插件 首先,下载 GitHub 上的 ecomfe/echarts-for-weixin 项目. 下载链接:ecomfe/echarts-for-weixi ...
- 2月26日Android学习
今天下载了AndroidStudio,但是不知道为什么java文件一直显示file outside of source root,可能是部分文件没有安装的原因,等文件全部下载完之后再看看.
- 在css 中使用calc并且含有变量
bottom:~"calc(.9rem + constant(safe-area-inset-bottom))"; bottom:~"calc(.9rem + env ...