【问题标题】:How can I find the problem in the script I wrote in AHK如何在我用 AHK 编写的脚本中找到问题
【发布时间】:2020-04-21 04:22:38
【问题描述】:

我正在制作游戏的宏,我尝试了不同的方法,但现在它似乎不起作用。我添加了if Lf := 1if Rg := 1,它们是代表无线电指标的变量。代码如下:

F9::
toggle :=!Toggle
if (toggle)
{
    SetTimer, Repeat, 100
    Repeat()
}
else
    SetTimer, Repeat, Off
return

Repeat()
{
    Click, 920, 885
    Sleep, 200
    if (Lf := 1)
    {
        Click, 755, 530
        Sleep, 200
        Click, 550, 530
    }
    else if (Rg := 1)
    {
        Click, 1165, 530
        Sleep, 200
        Click, 1370, 530
    }
    Sleep, 200
    Send, {Space Down}
    Sleep, %MilSecOne%
    Sleep, %MilSecOne%
    Send, {Space Up}
    Sleep, 200
}

它没有像我预期的那样工作。

【问题讨论】:

标签: autohotkey


【解决方案1】:

:= 运算符用于将值(将是表达式的结果)分配给变量。
因此,现在您正在做的是将数字 1 分配给您的变量,然后使用 if 语句检查该变量的值是否为 true
(而且它总是会,非零数字评估为true

您正在寻找 = 运算符。
在表达式中(这就是您的 if ( ) 语句),它比较值,而不是像在旧语句中那样将文本分配给变量。

所以,改变
if (Lf := 1)
else if (Rg := 1)

if (Lf = 1)
else if (Rg = 1)


编辑:
我还注意到变量 LfRg 似乎不存在?
至少不在该函数的范围内。
我希望它们在其他地方被定义为super-global
否则,代码将无法正常工作。

【讨论】:

  • 嗯,它是 GUI 中的 radio,我了解到如果 Radio 被切换,它将变为 1。x==1, x = 1, x := 1 有什么区别?跨度>
  • 我的帖子和帖子中的文档链接解释了差异。 = 是不区分大小写的比较,== 是区分大小写的比较。是的,与单选按钮关联的变量将包含 0 或 1,但是您缺少例如 Gui, Submit 来更新变量的内容,并且由于您处于函数范围内,因此您必须指定您'是使用Global的函数范围之外的变量。
猜你喜欢
  • 1970-01-01
  • 2020-11-21
  • 1970-01-01
  • 2021-10-27
  • 2020-03-22
  • 1970-01-01
  • 1970-01-01
  • 2021-06-05
  • 2021-08-18
相关资源
最近更新 更多