通过鼠标点击在 AHK 中构建数组
Build an array in AHK from mouse clicks
我想构建一个鼠标点击坐标数组。我很难理解你是如何构建一个二维数组的。或者如果我做错了并且应该构建两个数组。一张是 X 坐标,一张是 Y 坐标。
我可以很容易地构建一个只有 X 坐标或 Y 坐标的数组。我能否以某种方式将 X 和 Y 构建到同一个二维数组中?
ArrayX := []
ArrayY := []
counter:=1
^Lbutton::
MouseGetPos CurX, CurY
ArrayX[counter] := CurX
ArrayY[counter] := CurY
counter++
return
^q::
loop % ArrayX.MaxIndex()
items.= ArrayX[A_Index] ","
StringLeft, items, items, Strlen(items)-1
Clipboard := items
msgbox % items
items:=""
loop % ArrayY.MaxIndex()
items.= ArrayY[A_Index] ","
StringLeft, items, items, Strlen(items)-1
Clipboard := items
msgbox % items
exitapp
您只需将所需索引处的元素指定为数组,即可在 AHK 中创建多维或锯齿状数组。
Array[3] := [481, 529]
您只需按顺序访问元素即可访问它,例如:
Array[3][2]
将得到 529。
其他需要改进脚本的地方:
- 您可能希望使用
.Push()
方法将值附加到数组。
- A for loop 可能是正常循环和担心索引的理想替代方法:
for each, element in Array
StringLeft
is a deprecated legacy command and shouldn't be used anyone. SubStr()
替换它。
但是,对于您使用它所做的事情,RTrim()
将是 better/easier:
RTrim(items, ",")
修改后的脚本:
Array := []
^LButton::
MouseGetPos, CurX, CurY
Array.Push([CurX, CurY])
return
^q::
For each, element in Array
items .= element[1] ", " element[2] "`n"
MsgBox, % RTrim(items, "`n")
ExitApp
return
我想构建一个鼠标点击坐标数组。我很难理解你是如何构建一个二维数组的。或者如果我做错了并且应该构建两个数组。一张是 X 坐标,一张是 Y 坐标。
我可以很容易地构建一个只有 X 坐标或 Y 坐标的数组。我能否以某种方式将 X 和 Y 构建到同一个二维数组中?
ArrayX := []
ArrayY := []
counter:=1
^Lbutton::
MouseGetPos CurX, CurY
ArrayX[counter] := CurX
ArrayY[counter] := CurY
counter++
return
^q::
loop % ArrayX.MaxIndex()
items.= ArrayX[A_Index] ","
StringLeft, items, items, Strlen(items)-1
Clipboard := items
msgbox % items
items:=""
loop % ArrayY.MaxIndex()
items.= ArrayY[A_Index] ","
StringLeft, items, items, Strlen(items)-1
Clipboard := items
msgbox % items
exitapp
您只需将所需索引处的元素指定为数组,即可在 AHK 中创建多维或锯齿状数组。
Array[3] := [481, 529]
您只需按顺序访问元素即可访问它,例如:
Array[3][2]
将得到 529。
其他需要改进脚本的地方:
- 您可能希望使用
.Push()
方法将值附加到数组。 - A for loop 可能是正常循环和担心索引的理想替代方法:
for each, element in Array
StringLeft
is a deprecated legacy command and shouldn't be used anyone.SubStr()
替换它。
但是,对于您使用它所做的事情,RTrim()
将是 better/easier:
RTrim(items, ",")
修改后的脚本:
Array := []
^LButton::
MouseGetPos, CurX, CurY
Array.Push([CurX, CurY])
return
^q::
For each, element in Array
items .= element[1] ", " element[2] "`n"
MsgBox, % RTrim(items, "`n")
ExitApp
return