【问题标题】:Issue returning proper mouse cords问题返回正确的鼠标线
【发布时间】:2019-07-19 09:09:55
【问题描述】:

在此问题中调用 setXTowerLocation(),退出消息框后会出现一个消息框,调用函数 getXCords() 在其中它不断扫描检查 Lbutton 的 keyState,一旦它检测到它被按下 getxCords()函数返回鼠标绳索的 x 值,该值又在 setXTowerLocation() 函数中设置为全局变量,然后返回并在消息框中显示 x 绳索。每次我运行它时,消息框都会出现空白,我已经测试了代码的各个方面,它们似乎都可以单独工作,所以我认为这一定是语法错误?

结束消息框仅用于测试目的。在此先感谢:)

SendMode Input

Global xTowerLocation =

setXTowerLocation()
MsgBox, 0, MessageBox, %xTowerLocation%

getxCords()
{
    xCord = 
    Loop,
    {
        GetKeyState, state, Lbutton
        if(state = "D")
        {
            MouseGetPos, xx, yy
            xCord := %xx%
            return
        }
    }
return xCord
}

setXTowerLocation() {
    MsgBox, 0, MessageBox, Begin?
    IfMsgBox OK
        xTowerLocation := getxCords()
return
}

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

    是的,xCord 引用了一个以内容命名的变量(鼠标坐标)的语法错误。修复getxCords() 中的这两行,使xCord 保存变量xx 的值,如下所示:

            xCord := xx
            return xCord
    

    然后没有xCord 之后的return(在函数结束时)。

    编辑:为了更有趣,将上面的xCord 行如下:

            xCord := "x= " . xx . " , y= " . yy
    

    【讨论】:

    • 像魅力一样工作 谢谢这是我第一次做 AHK 所以仍然掌握语法。如果您不介意,我很想知道 (xCord := "x= " . xx . " , y= " . yy) 中发生了什么看起来要简单得多,但我对它的工作原理有点迷茫。
    • xCord 是一个变量,它被设置为后面的表达式。由于我们正在做表达式,因此假定变量。因此,首先是文字文本元素(需要引用文本元素),“x= ”,然后是 xx 中保存的值,然后是另一个文本元素和 yy 的值。这给出了这样的结果:x= 651 , y= 453,它提供了两个鼠标坐标。 “.”(点)只是将这些元素连接在一起的 AHK 方式。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 2012-12-14
    • 1970-01-01
    相关资源
    最近更新 更多