You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AHK递归函数getRightXofGray无法正常返回结果求助

递归函数返回空白的问题分析与解决

你的核心问题出在递归函数getRightXofGray的调用逻辑上:当进入if (Color == NewColor)分支发起递归调用时,没有将递归的返回值传递回上层调用,导致最终整个函数的返回值丢失,grayXright自然拿到的是空白值。

修复后的递归函数代码

只需要在递归调用前加上return,把深层递归的结果传递出去:

getRightXofGray(grayXleft, grayY){
    PixelGetColor, Color, grayXleft, grayY
    grayXleft:=grayXleft+15
    PixelGetColor, NewColor, grayXleft, grayY
    Msgbox, Color is %Color% and NewColor is %NewColor%
    if (Color == NewColor) {
        Msgbox, newcolor is gray and grayXleft=%grayXleft% / grayY=%grayY% 
        return getRightXofGray(grayXleft, grayY) ; 新增return,传递递归结果
    } else {
        Msgbox, newcolor is NNNNNNNOOOOOOTTTTTTTTTTTTTTTTTTTTTTT gray
        return grayXleft-15
    }
}

额外优化建议

递归虽然能实现需求,但如果灰色区域过宽,可能触发AHK的递归深度限制,改用循环实现更稳妥:

getRightXofGray(grayXleft, grayY){
    Loop {
        PixelGetColor, Color, grayXleft, grayY
        grayXleft += 15
        PixelGetColor, NewColor, grayXleft, grayY
        ; 颜色不一致时跳出循环
        if (Color != NewColor) {
            break
        }
    }
    return grayXleft - 15
}

另外,findTarget函数里的Send {Space}可以加个判断,避免没找到目标时无效触发:

findTarget(xpos1, ypos1, xpos2, ypos2){
    PixelSearch, Px, Py, xpos1, ypos1, xpos2, ypos2, col_inner_circle, 5, Fast
    if (!ErrorLevel) { ; 只有找到像素时才按空格
        Send {Space}
    }
}

内容的提问来源于stack exchange,提问作者i.svirchev

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 10:53:15