Function 循环x次数,使用自动热键将x作为参数

Function 循环x次数,使用自动热键将x作为参数,function,loops,parameters,macros,autohotkey,Function,Loops,Parameters,Macros,Autohotkey,我创建了一个小功能,可以点击屏幕的某一部分。它将被使用,但在整个程序中单击的次数不同。我希望能够输入点击量作为一个参数,但是,当我尝试这样做,而不是硬编码循环的数量,这部分代码没有运行,屏幕没有得到点击 请注意对函数ClickMainBuilding的更改,定义如下 以下是有效的方法: ; ######## SETTINGS ######## #SingleInstance Force #NoEnv SetWorkingDir %A_ScriptDir% CoordMode, Mouse, Wi

我创建了一个小功能,可以点击屏幕的某一部分。它将被使用,但在整个程序中单击的次数不同。我希望能够输入点击量作为一个参数,但是,当我尝试这样做,而不是硬编码循环的数量,这部分代码没有运行,屏幕没有得到点击

请注意对函数ClickMainBuilding的更改,定义如下

以下是有效的方法:

; ######## SETTINGS ########
#SingleInstance Force
#NoEnv
SetWorkingDir %A_ScriptDir%
CoordMode, Mouse, Window
SendMode Input
SetTitleMatchMode 2
#WinActivateForce
SetControlDelay 1
SetWinDelay 0
SetKeyDelay -1
SetMouseDelay -1
SetBatchLines -1

; ######## FUNCTIONS ########

ClickMainBuilding(){
    Loop, 5 
    {
        Click, 927, 538 Left, , Down
        Sleep, 250
        Click, 927, 538 Left, , Up
        Sleep, 250
    }
}

ClickTradeDepot(){
    Click, 420, 705
    Sleep, 750
}

ExitTradeDepot(){
    Click, 1512, 129
    Sleep, 750
}

^!u:: ; ### MAIN ###

WinActivate,  ahk_class ThumbnailDeviceHelperWnd
Sleep, 333
WinActivate, BlueStacks ahk_class HwndWrapper[Bluestacks.exe;;5b32fde4-2355-48c5-be51-8927697e9914]
Sleep, 500
ClickMainBuilding()
Sleep, 1000
ClickTradeDepot()
Sleep, 1000
ExitTradeDepot()

Return

Esc::ExitApp  ; Exit script with Escape key
以下是不需要的:

; ######## SETTINGS ########
#SingleInstance Force
#NoEnv
SetWorkingDir %A_ScriptDir%
CoordMode, Mouse, Window
SendMode Input
SetTitleMatchMode 2
#WinActivateForce
SetControlDelay 1
SetWinDelay 0
SetKeyDelay -1
SetMouseDelay -1
SetBatchLines -1

; ######## FUNCTIONS ########

ClickMainBuilding(x){
    Loop, x
    {
        Click, 927, 538 Left, , Down
        Sleep, 250
        Click, 927, 538 Left, , Up
        Sleep, 250
    }
}

ClickTradeDepot(){
    Click, 420, 705
    Sleep, 750
}

ExitTradeDepot(){
    Click, 1512, 129
    Sleep, 750
}

^!u:: ; ### MAIN ###

WinActivate,  ahk_class ThumbnailDeviceHelperWnd
Sleep, 333
WinActivate, BlueStacks ahk_class HwndWrapper[Bluestacks.exe;;5b32fde4-2355-48c5-be51-8927697e9914]
Sleep, 500
ClickMainBuilding(5)
Sleep, 1000
ClickTradeDepot()
Sleep, 1000
ExitTradeDepot()

Return

Esc::ExitApp  ; Exit script with Escape key

循环
将需要迭代的次数作为第一个参数。如果您将
5
,则AHK将该
5
转换为整数,然后迭代5次

在代码中,您编写了
循环,x
,它告诉AHK循环总共
x
次。但是与
5
不同,
x
不能转换为整数,因此AHK可能会抛出错误。为了指定变量
x
,并将其值用作迭代量,您需要指定此特定
x
实际上是一个变量。您可以这样做:

; BOTH OF THESE EXAMPLES WORK

; Legacy
Loop, %x%

; Newest
Loop, % x

循环,x
更改为
循环,%x