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
相关产品推荐
相关产品推荐

