2016-07-17 8 views
0

es einen Befehl call "tap (x, y)", und ich brauche einen Weg, um eine Zeilenvariable und eine Spaltenvariable zu kombinierenAutotouch iPhone lua Tap-Position mit 2 Variablen

der Code:

--[[ Row Pos ]]-- 
r1 = 587.95 
r2 = 383.05 
--[[ Barracks Column ]]-- 
cb1 = 476.53 
cb2 = 722.26 

--[[ Barracks Variable ]]-- 
wizard = "r2" .. "," .. "cb1" 
healer = "r2" .. "," .. "cb2" 

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

Fehler:

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

Was bedeutet, es will die Nummer, aber ich bin String Eingabe gibt es eine andere Art und Weise kann ich dies tun?

Antwort

1

Sie müssen die beiden Variablen nicht in einer Zeichenfolge kombinieren. Verwenden Sie einfach die Spalten- und Zeilenvariablen:

-- Row Pos 
r1 = 587.95 
r2 = 383.05 
-- Barracks Column 
cb1 = 476.53 
cb2 = 722.26 

-- wizard 
tap(cb1, r2) -- did you mean r1? I just used your example 
usleep(30000) 
-- healer 
tap(cb2, r2) 
usleep(30000) 

Beachten Sie, dass die Spalte (x) zuerst angegeben wird.

Einige Kommentare zu Ihrem Code: Es ist nicht notwendig, einzeilige Kommentare zu beenden, wie in meinem Beispiel zu sehen ist. Außerdem wird das Semikolon nicht benötigt, ich habe es weggelassen.

Wenn Sie eine Variable zu sammeln beide Argumente verwenden möchten, können Sie eine Tabelle verwenden, und entpacken Sie es:

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

Sie jetzt einen Wrapper für die Funktion tap, das Hinzufügen syntaktischer Zucker verwenden:

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

Um noch weiter, überprüfen Sie das Argument gehen und die Funktion den richtigen Weg rufen:

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 
-- now tap can be used both ways: 
tap(cb1, r2) -- wizard 
local healer = { cb2, r2 } 
tap(healer) 
+0

Gibt es eine Möglichkeit, eine Namensvariable wie Wizard mit der Spalte und der Zeile zu verwenden –

+0

Vielen Dank die Funktionen, die ich nicht sehr gut bin und ich kann diese Funktion wirklich leicht lesen, also danke –