autojs基本功能

找图

在截图的大图中找小图


// 找图函数
function 点击图片(imagesname) {
    // 查找图片次数
    var retry = 1;
    //  最大查找次数
    var maxRetry = 4;

    while(retry < maxRetry){
        var 模板图片 = images.read("./" + imagesname +".png");
        
        // 如果找不到图片,则跳过循环
        if (!模板图片) {
            toastLog("没有找到图片: " + templateImagePath);
            sleep(1000);
            retry++;
            continue;
        }



        // 截图
        var 当前截图 = captureScreen();

        // 如果截图失败,则跳过循环
        if (!当前截图) {
            toastLog("截图失败");
            模板图片.recycle(); // 手动释放
            sleep(1000);
            retry++;
            continue;
        }

    
        // 查找图片
        var position = images.findImage(当前截图, 模板图片, {
            threshold: 0.8  // 设置相似度阈值,1为完全匹配,0为不匹配
        });
    
        // 释放模板图片
        // 模板图片.recycle();
        // 当前截图.recycle();


        // 如果找到了图片,则点击图片的中心
        if (position) {
            
                // 计算图片的中心点坐标
                var 模板图片宽度 = 模板图片.getWidth();
                var 模板图片高度 = 模板图片.getHeight();

                模板图片.recycle();
                当前截图.recycle();
                
                var 中心点x = position.x + 模板图片宽度 / 2;
                var 中心点y = position.y + 模板图片高度 / 2;
                click(中心点x, 中心点y);
                toastLog(imagesname +"找到" + imagesname +"图片,坐标为:(" + 中心点x + "," + 中心点y + ")");
                sleep(1000);
                break;
        } else {
            toastLog("第" + retry +"次查找未找到图片" + imagesname  );
            retry++;
            continue;
        }
    
    } 

    while(retry >=  maxRetry){
        toastLog("超过最大" + maxRetry +"次重试次数,放弃查找:" + imagesname);
        模板图片.recycle();
        当前截图.recycle();
        break;
    }

         
        
}

强制停止app

/**
 * 强制停止app
 * @param {应用名称} appName 
 */
function stopApp(appName) {
    try {
        openAppSetting(getPackageName(appName));
        sleep(3000);
        if (className("android.widget.Button").text("强行停止").exists()) {
            className("android.widget.Button").text("强行停止").findOnce().click();
        }
        sleep(3000);
        if (className("android.widget.Button").text("确定").exists()) {
            className("android.widget.Button").text("确定").findOnce().click();
            toastLog(appName + "已经停止!");
        }
        else {
            let closeButton = className("android.widget.Button").text("强行停止").find();
            closeButton[0].click();
            toastLog(appName + "已经停止!");
        }
    } catch (e) {
        toastLog(e);
    }
}

posted @ 2025-05-22 11:02  六月OvO  阅读(134)  评论(0)    收藏  举报