不断为up的直播间点赞

想法

每点30个赞都有概率为up的直播增加曝光,支持某个up,就为这个up直播间不断点赞。

但动手一个一个点一定太累了,应该是有脚本能代替这个简单的工作。

实现

怎么执行脚本?

Auto.js

Auto.js是一款Android平台上的自动化工具,它可以帮助用户编写和运行脚本来自动执行手机上的各种操作。用户可以使用JavaScript语言编写脚本,实现自动点击、滑动、输入文字等操作,从而实现自动化执行一系列任务的目的。

Auto.js下载:首页 (autoxjs.com)

Auto.js帮助文档链接:Index | Auto.js 4.1.0 文档 (hexuesong.cn)

JavaScript代码执行流程

使用一门不熟悉的编程语言编写代码时,我个人认为需要先知道这门语言的执行流程,这样才能快速上手。

JavaScript代码执行流程与C语言一样,自顶向下,逐条执行。但因为有一些特性,又与C语言不同。

关键字

我们得先知道一点JavaScript的关键字。

  • 声明变量:var、let。

  • 声明常量:const。

  • 声明函数:function。

需要注意的是:

  • 变量拥有一个默认值,undefined。

  • JavaScript变量会根据值自动推断变量的类型,所以不需要显式指定变量的类型。

  • 使用 var 关键字重复声明一个已存在的变量,则后续的声明将会覆盖前面的声明。如果再次声明的变量没有提供一个值,则声明会被解析器忽略,不会产生影响。

    var x = 10;
    var x = 20; // x的值为20
    
    var y = 10;
    var y; // y的值为10
    
  • 在相同的作用域内使用 function 关键字重复声明一个已存在的函数,则后续的声明会覆盖前面的声明。

  • let、const相比于var更为严格,类似于C语言中变量的语法规则。不能重复声明。

作用域

JavaScript有两种常见的作用域,函数级作用域和块级作用域。

函数级作用域

在函数级作用域中,变量的可见性仅限于包含它们的函数内部(如exampleFunction函数的{}内)。

使用 var 关键字声明变量时,该变量的作用域是整个函数,无论该变量是在函数的哪个位置声明的,都可以在函数的任何地方访问。

function exampleFunction() {
    var x = 10;
    // 可以访问函数内部的变量
    console.log(y); 
    if (true) {
        var y = 20;
        // 可以访问函数内部的变量
        console.log(x); 
    }
}

需要注意的是:

  • 函数外部无法访问函数内部的变量。

  • 函数内部可以使用函数外部的变量。

  • 函数内部与函数外部都拥有相同的变量时,使用函数内部的变量。

    var a = 1;
    function func() {
        // 输出undefined
        console.log(a);
        var a = 2;
        // 输出2
        console.log(a);
    }
    
块级作用域

在块级作用域中,变量的可见性仅限于包含它们的代码块内部(通常是由花括号 {} 包裹的代码段)。

function exampleFunction() {
    let x = 10;
    if (true) {
        let y = 20;
        // 可以访问块级作用域内的变量
        console.log(x); 
    }
    // 无法访问块级作用域内的变量,会抛出ReferenceError错误
    console.log(y); 
}

变量提升

JavaScript在编译代码前会对其进行处理,会将使用var关键字声明的变量以及使用function关键字声明的函数的声明提升到当前作用域顶部。

可以这样理解:

// 处理前
var a = 1;
let b = 1;

function c() {
    let e = 1;
    var f = 1;
}

let d = 1;

// 处理后
var a;
let b;
function c() {
    var f;
    let e;
    e = 1;
    f = 1;
}
let d;

a = 1;
b = 1;
d = 1;

编写JavaScript

参考文档开始编辑JavaScript代码

// Auto.js的一个内置函数,用于初始化自动化环境。
auto();

//这个函数用于设置屏幕的分辨率,参数为设备的宽度和高度
setScreenMetrics(1080, 1920);

// 点击屏幕上坐标为(540, 540)的位置,第一次点击触发点赞操作
click(540, 540);

// 循环一百次点击操作,即点击100个赞
for (int i = 1; i <= 100; i++) {
    
    click(540, 540);
    
    // 加入500毫秒的延迟,降低脚本的执行速度
    sleep(500);
    
}

点击100次就停止了,让for循环换成while,参考Auto.js文档,调用函数检测设备是否在充电,如果返回true,循环执行;中途移除电源,循环结束。

// Auto.js的一个内置函数,用于初始化自动化环境。
auto();

// 弹出文本框,用户点击`确认`按钮时,程序继续执行。
alert("设备插入电源,脚本执行;移除设备电源,脚本结束。");

// 设置屏幕分辨率
setScreenMetrics(1080, 1920); 

// 调用device.isCharging()函数,判读设备是否在充电
let running = device.isCharging();

// 若设备有供电,程序执行
if (running) {
    // 模拟点击屏幕坐标为x,y(540, 540)位置
    click(540, 540); 

    // 以running作为循环执行的依据条件
    while (running) {
        // 在状态为 true 时不断点击屏幕
        click(540, 540); 
        // 添加延迟,避免占用过多系统资源
        sleep(100); 

        // 更新running状态
        if (!device.isCharging()) {
            // 判断设备电源是否存在
            running = false;
        }
    }
}

据网友说,每天只能给同一个up点1000个赞,且点赞不能长时间频繁,会被封禁ip。那就加上条件,点击1000个赞后脚本结束,其中每隔3分钟点100个赞,1000个赞30分钟完成。

// Auto.js的一个内置函数,用于初始化自动化环境。
auto();

// 弹出文本框,用户点击`确认`按钮时,程序继续执行。
alert("设备插入电源,脚本执行;移除设备电源,脚本结束。");

// 设置屏幕分辨率
setScreenMetrics(1080, 1920);

// 调用device.isCharging()函数,判读设备是否在充电
let running = device.isCharging();
// 定义变量count,记录点赞次数
let count = 0;

// 若设备有供电,程序执行
if (running) {

    // 以running作为循环执行的依据条件
    while (running) {

        // 模拟点击屏幕坐标为x,y(540, 540)位置
        click(540, 540);

        // 记录点赞次数
        count++;

        for (let i = 1; i <= 100; i++) {

            // 电源不存在或点赞次数为10时,退出脚本
            if (!device.isCharging() || count == 10) {

                // 更新running状态
                running = false;

                // 结束点赞
                break;
            }

            // 在状态为 true 时不断点击屏幕
            click(540, 540);

            // 添加延迟,避免占用过多系统资源
            sleep(100);

        }

        // 检查running状态
        if (!running) {
            // 结束脚本
            break;
        }

        // 每点100个赞,间隔3分钟
        sleep(180000);
    }
}
  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
以下是Android直播间点赞飘心动画的实现方法: 1.在XML布局文件中添加一个ImageView,用于显示点赞的图片。 2.在Java代码中,使用ObjectAnimator和AnimatorSet来实现动画效果。具体实现步骤如下: (1)定义一个Path对象,用于存储贝塞尔曲线的路径。 (2)使用PathMeasure类获取路径的长度,并根据长度创建一个ValueAnimator对象。 (3)在ValueAnimator的监听器中,使用PathMeasure类获取路径上某一点的坐标,并将该坐标设置为ImageView的位置。 (4)使用ObjectAnimator和AnimatorSet将ImageView的透明度和缩放比例进行动画处理,使其在移动的同时逐渐消失。 下面是实现代码: ```java // 定义一个Path对象,用于存储贝塞尔曲线的路径 Path path = new Path(); path.moveTo(startX, startY); path.cubicTo(controlX1, controlY1, controlX2, controlY2, endX, endY); // 使用PathMeasure类获取路径的长度,并根据长度创建一个ValueAnimator对象 PathMeasure pathMeasure = new PathMeasure(path, false); ValueAnimator valueAnimator = ValueAnimator.ofFloat(0, pathMeasure.getLength()); // 在ValueAnimator的监听器中,使用PathMeasure类获取路径上某一点的坐标,并将该坐标设置为ImageView的位置 valueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator animation) { float value = (float) animation.getAnimatedValue(); float[] pos = new float[2]; pathMeasure.getPosTan(value, pos, null); imageView.setX(pos[0]); imageView.setY(pos[1]); } }); // 使用ObjectAnimator和AnimatorSet将ImageView的透明度和缩放比例进行动画处理 ObjectAnimator alphaAnimator = ObjectAnimator.ofFloat(imageView, "alpha", 1f, 0f); ObjectAnimator scaleXAnimator = ObjectAnimator.ofFloat(imageView, "scaleX", 1f, 0.5f); ObjectAnimator scaleYAnimator = ObjectAnimator.ofFloat(imageView, "scaleY", 1f, 0.5f); AnimatorSet animatorSet = new AnimatorSet(); animatorSet.playTogether(valueAnimator, alphaAnimator, scaleXAnimator, scaleYAnimator); animatorSet.setDuration(2000); animatorSet.start(); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_陈你好

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值