屏幕自动点击器,手机屏幕自动点击脚本,autojs连点器

4 阅读1分钟

下载地址:m.pan38.com/download.ph… 提取码:6666

基于AutoJS实现的屏幕自动点击器完整代码,包含UI界面和核心功能实现。您可以根据实际需求修改参数或扩展功能。使用时请确保已正确安装AutoJS应用并授予必要权限。

AutoJS屏幕自动点击器开发指南

一、实现原理
屏幕自动点击器通过模拟用户触摸事件实现自动化操作,主要功能包括:
单点连续点击
多点循环点击
坐标记录与回放
随机间隔防检测
二、完整实现代码

// AutoJS屏幕自动点击器 v2.0
// 功能:支持单点/多点循环点击,随机间隔,坐标记录

"ui";
ui.layout(
    <vertical padding="16">
        <text text="AutoJS点击器" textSize="20sp" gravity="center"/>
        <horizontal>
            <button id="single" text="单点模式" w="120"/>
            <button id="multi" text="多点模式" w="120"/>
        </horizontal>
        <horizontal>
            <text text="点击间隔(ms):" textSize="16sp"/>
            <input id="interval" inputType="number" text="500" w="100"/>
        </horizontal>
        <horizontal>
            <text text="随机范围(ms):" textSize="16sp"/>
            <input id="random" inputType="number" text="100" w="100"/>
        </horizontal>
        <horizontal>
            <button id="record" text="记录坐标" w="120"/>
            <button id="play" text="执行点击" w="120"/>
        </horizontal>
        <horizontal>
            <button id="stop" text="停止" w="120"/>
            <button id="clear" text="清空记录" w="120"/>
        </horizontal>
        <scroll>
            <text id="log" text="日志输出区域..." textSize="14sp"/>
        </scroll>
    </vertical>
);

// 全局变量
let clickPoints = [];
let isRunning = false;
let currentMode = "single"; // single/multi

// 单点模式按钮
ui.single.click(()=>{
    currentMode = "single";
    log("切换到单点模式");
});

// 多点模式按钮
ui.multi.click(()=>{
    currentMode = "multi";
    log("切换到多点模式");
});

// 记录坐标按钮
ui.record.click(()=>{
    threads.start(function(){
        log("请在3秒内点击屏幕记录坐标...");
        let point = capturePoint();
        if(point){
            clickPoints.push(point);
            log("记录坐标: (" + point.x + "," + point.y + ")");
        }
    });
});

// 执行点击按钮
ui.play.click(()=>{
    if(clickPoints.length == 0){
        log("请先记录点击坐标");
        return;
    }
    
    if(isRunning){
        log("已经在运行中");
        return;
    }
    
    isRunning = true;
    threads.start(function(){
        let baseInterval = parseInt(ui.interval.text());
        let randomRange = parseInt(ui.random.text());
        
        log("开始自动点击...");
        while(isRunning){
            if(currentMode == "single"){
                // 单点模式只使用第一个坐标
                let point = clickPoints[0];
                randomClick(point.x, point.y, baseInterval, randomRange);
            }else{
                // 多点模式循环所有坐标
                for(let i = 0; i < clickPoints.length && isRunning; i++){
                    let point = clickPoints[i];
                    randomClick(point.x, point.y, baseInterval, randomRange);
                }
            }
        }
        log("已停止");
    });
});

// 停止按钮
ui.stop.click(()=>{
    isRunning = false;
});

// 清空记录按钮
ui.clear.click(()=>{
    clickPoints = [];
    log("已清空所有记录坐标");
});

// 随机点击函数
function randomClick(x, y, baseInterval, randomRange){
    let actualInterval = baseInterval + random(0, randomRange);
    press(x, y, 50);
    log("点击: (" + x + "," + y + ") 间隔:" + actualInterval + "ms");
    sleep(actualInterval);
}

// 捕获点击坐标
function capturePoint(){
    let point = null;
    let timeout = 3000; // 3秒超时
    let start = Date.now();
    
    while(Date.now() - start < timeout){
        let e = events.peek();
        if(e && e.getAction() == MotionEvent.ACTION_DOWN){
            point = {x: e.getX(), y: e.getY()};
            break;
        }
        sleep(10);
    }
    return point;
}

// 日志输出
function log(msg){
    ui.run(()=>{
        ui.log.setText(ui.log.getText() + "\n" + msg);
    });
}

// 随机数生成
function random(min, max){
    return Math.floor(Math.random() * (max - min + 1)) + min;
}

三、功能扩展建议





添加手势滑动支持



实现OCR文字识别点击



增加定时任务功能



添加脚本导入导出功能



开发图像匹配点击功能

四、使用注意事项





需要开启AutoJS的无障碍服务



部分应用可能检测模拟点击



长时间运行可能导致手机发热



建议合理设置点击间隔

五、性能优化技巧





使用多线程处理复杂任务



减少不必要的界面更新



合理设置点击持续时间



避免在循环中创建大量对象