Autotouch iPhone lua Tap position with 2 variables

有一个命令叫做"tap(x,y)",我需要一种方法来结合行变量和列变量

代码:

--[[ 行位置 ]]--
r1 = 587.95
r2 = 383.05
--[[ 兵营列 ]]--
cb1 = 476.53
cb2 = 722.26

--[[ 兵营变量 ]]--
wizard = "r2" .. "," .. "cb1"
healer = "r2" .. "," .. "cb2"

tap(healer);
usleep(30000)
tap(wizard);
usleep(30000);

错误:

Bad Argument #2 to 'touchdown' (number expected, got string)

这意味着它想要数字,但我输入的是字符串,我可以用不同的方法吗?

点赞
用户3197530
用户3197530

你不需要将两个变量合并为一个字符串。只需使用列和行变量:

-- 行位置
r1 = 587.95
r2 = 383.05
-- 兵营列
cb1 = 476.53
cb2 = 722.26

-- 巫师
tap(cb1, r2) -- 你是不是指r1?我只是使用了你的例子
usleep(30000)
-- 治疗师
tap(cb2, r2)
usleep(30000)

请注意,列(x)先给出。

关于你的代码的一些注释:不必结束单行注释,可以看到我的例子。此外,分号是不必要的,我省略了它。

如果你想使用一个收集两个参数的变量,你可以使用一个表和解包它:

local wizard = { cb1, r2 } -- { x, y }
tap(table.unpack(wizard))

现在你可以为函数“tap”使用一个包装器,添加语法糖:

local old_tap = tap
function tap(location)
    old_tap(table.unpack(location))
end

为了更进一步,检查参数并以正确的方式调用函数:

local old_tap = tap
function tap(x, y)
    if type(x) == "table" then
        old_tap(table.unpack(x))
    else
        old_tap(x, y)
    end
end
-- 现在“tap”可以两种方式使用:
tap(cb1, r2) -- 巫师
local healer = { cb2, r2 }
tap(healer)
2016-07-17 08:08:39