MaaFramework 支持完全通过 Json 低代码编程(Pipeline Json),同时也提供了 接口 以供开发者自行集成。
亦可将两者结合,将低代码作为一种 “封装” 进行调用。
下面介绍几种常用的集成方式:
简单快捷,但不够灵活,推荐 MaaFramework 初学者及编程小白使用。
我们为此方式提供了 🎞️视频教程 和 ⭐项目模板。以下是一个例子:
// Json 不支持注释,此处为伪代码,仅供参考思路,无法直接运行
{
"识别并点击开始按钮": {
"recognition": "OCR", // 文字识别
"expected": "开始", // 要识别的字
"action": "Click", // 动作:点击
"next": [
"识别并点击确定图标",
]
},
"识别并点击确认图标": {
"recognition": "TemplateMatch", // 图片模板匹配
"template": "确认.png", // 图片文件名
"action": "Click"
}
}
通过接口启动 CLI,同时注册部分自定义任务。该方法可从 1 中无缝切换。以下是一个例子:
{
"识别并点击确认图标": {
"next": [
"我的自定义任务"
]
},
"我的自定义任务": {
"recognition": "Custom",
"custom_recognition": "MyReco",
"action": "Custom",
"custom_action": "MyAct"
}
}
# 此处为伪代码,仅供参考思路,无法直接运行
def main():
# 注册自定义识别器
maafw.Toolkit.register_custom_recognition("MyReco", MyRecognition())
# 注册自定义动作
maafw.Toolkit.register_custom_action("MyAct", MyAction())
# 启动 MaaPiCli
maafw.Toolkit.run_pi_cli("C:/MaaXXX/resource", "C:/MaaXXX/cache")
class MyRecognition(CustomRecognition):
def analyze(context, ...):
# 获取图片,然后进行自己的图像操作
image = context.tasker.controller.cached_image
# 返回图像分析结果
return AnalyzeResult(box=(10, 10, 100, 100))
class MyAction(CustomAction):
def run(context, ...):
# 进行点击
context.controller.post_click(100, 10).wait()
# 重写接下来要执行的任务
context.override_next(task_name, ["TaskA", "TaskB"])
可以将低代码作为一种“封装”进行调用,亦可注册自定义回调使用
# 此处为伪代码,仅供参考思路,无法直接运行
# "识别并点击开始按钮", "识别并点击确认图标" 等均为 Json 中的逻辑
def main():
detail = tasker.post_pipeline("识别并点击开始按钮").wait().get()
if detail.completed:
tasker.controller.post_click(100, 100).wait()
else:
image = tasker.controller.cached_image
save_to_file(image)
my_act = MyAction()
tasker.resource.register_custom_action("MyAction", MyAction())
tasker.post_pipeline("识别并点击确认图标").wait()
image: np.ndarray = tasker.controller.post_screencap().wait().get()