获取点击屏幕坐标

 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

  

创建了一个事件监听器,并将其注册到事件分发器中。
在监听器的 EVENT_TOUCH_BEGAN 事件中,我们仍然通过调用 touch:getLocation() 方法获取点击位置的x和y坐标,并将它们存储在locationX和locationY变量中。
最后,我们仍然添加了一些代码来确保监听器被及时地从事件分发器中删除,以避免内存泄漏。
orc文字识别并进行匹配获取文字坐标
需要先安装 tesseract 
 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")
通过监听键盘点击ctrl+1、ctrl+2、ctrl+3、ctrl+4、ctrl+5事件,可以随时开始、停止、继续和重新开始的循环任务
 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
 
读取和写入本地csv文件
 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的一些封装方法的更多相关文章

  1. Lua常用封装方法

    Lua 获取随机值 --获取随机值,指定上限和下限 function getRandom(min,max) -- 接收一个整数n作为随即序列的种子 math.randomseed(os.time()) ...

  2. C++实现对lua访问的封装

    这是一个几年前写的对lua的访问封装,当时的项目仅提供了最基本的lua访问接口:调用lua函数,向lua注册标准格式的C++函数. 本来我想引进luabind,但luabind相对又过于复杂,并不是所 ...

  3. js面向对象的封装方法,【案例】

    封装方法: /** * @矩形canvas库 * @authors Shimily (275766400@qq.com) * @date 2016-12-28 10:30:51 * @version ...

  4. Lua 调用 Opencv 的方法

    Lua 调用 Opencv 的方法 最近想用 Lua 调用 Opencv 进行相关像素级操作,如:bitwise_and 或者 bitwise_or,从而完成图像 IoU 的计算. 那么,怎么用 Lu ...

  5. Javascript 封装方法

    基本封装方法 请看下面的例子: var Person = function(name,age){ this.name = name; this.age = age || "未填写" ...

  6. [论文笔记] 一种Java遗留系统服务化切分和封装方法 (计算机学报, 2009)

    李翔,怀进鹏,曾晋,高鹏. 一种Java遗留系统服务化切分和封装方法. 计算机学报, 32(9), 2009, p1084-1815 (gs:5) 1. 本文研究从Java遗留系统中切分并封装出Web ...

  7. 分享几个Javascript 封装方法

    基本封装方法 请看下面的例子: var Person = function(name,age){ this.name = name; this.age = age || "未填写" ...

  8. lua package path 设置方法

    lua package path 设置方法: 添加环境变量LUA_PATH="/add_path/?.lua;;" 1.add_path为新添加的目录: 2.一定要添加双引号: 3 ...

  9. iOS常用的封装方法

    做开发也有一段时间了,看了好多大神的代码,总体感觉他们写的代码简洁,好看,然而在对比下我写的代码,混乱,无序,简直不堪入目啊! 总体来说大神们的代码封装的都比较好,对一个项目要重复用到的代码他们都会封 ...

  10. JavaScrpt常用的封装方法

    1.闭包封装.在这个封装方法中,所有的实例成员都共享属性和方法, 使得所有得方法和属性都私有且对象间共享 (function ($) { var Person = function(name) { r ...

随机推荐

  1. Pytest全局用例共用之conftest.py详解

    本文转自:https://blog.csdn.net/qq_36502272/article/details/102975467 一.'conftest特点: 1.可以跨.py文件调用,有多个.py文 ...

  2. CString常用方法简介

    CString常用方法简介 CString::Compare int Compare( LPCTSTR lpsz ) const; 返回值   字符串一样 返回0 小于lpsz  返回-1 大于lps ...

  3. Python 的入门学习之 Day1~3 ——from”夜曲编程“

    Day 1(原点) time: 2021.7.29. 以下为补录内容: 今天是编程学习的第一天,很开心.Here is the place where I start, which belongs t ...

  4. IDEA配置新学

    文件太大导致IDEA不把该文件当成Java类看待 解决方式: 打开本地IDEA的bin目录,找到idea.properties文件,进入进行设置: idea.max.intellisense.file ...

  5. 半成品 java 身份证校验

    public static Boolean is18Card(String idCard18) { //证件省份 HashMap<String, String> aCity = new H ...

  6. Typora激活时,提示【连接激活服务器失败】

    购买了 Typora ,激活时提示[连接激活服务器失败] 按照步骤设置下,重新激活即可.(windows系统示例,mac 类似)

  7. vue后台管理系统——订单管理模块

    电商后台管理系统的功能--订单管理模块 1. 订单管理概述 订单管理模块用于维护商品的订单信息, 可以查看订单的商品信息.物流信息,并且可以根据实际的运营情况对订单做适当的调整. 2. 订单列表 在c ...

  8. Python中RSA的PKCS#1、PKCS#8,MD5加密

    一.Python-RSA RSA库只支持PKCS#1的密钥格式 需要安装第三方库rsa pip install rsa python-rsa官方地址:https://stuvel.eu/python- ...

  9. nginx启动命令

    启动加载配置文件 [root@172 sbin]#/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 检查配置信息是否正确 ...

  10. window 版本下面建立linux命令行终端的方法

    这个主要是解决dos系统命令行与linux命令行不匹配的问题. 因此microsoft shop 中开发了很多免费的app可供傻瓜式的安装使用.但是出现了不能下载的问题. 链接如下:https://w ...