信息发布软件,b2b软件,广告发布软件

 找回密码
 立即注册
搜索
查看: 1152|回复: 0
打印 上一主题 下一主题

[宣传软件网站动态] 手机改了分辨率后有误差用公式计算加减还原点击

[复制链接]

1868

主题

1878

帖子

1万

积分

积分
10928
跳转到指定楼层
宣传软件楼主
发表于 2025-2-20 08:12:40 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

资讯缩略图:

资讯发布日期:2025-02-20

资讯发布简介:手机改了分辨率后有误差用公式计算加减还原点击

资讯关键词:手机改了分辨率后有误差用公式计算加减还原点击

资讯所属分类:IT资讯 

联系:

① 本信息收集于网络,如有不对的地方欢迎联系我纠正!
② 本信息免费收录,不存在价格的问题!
③ 如果您的网站也想这样出现在这里,请您加好友情链接,我当天会审核通过!

④友情链接关键字:软件网站分类目录 网址:http://www.postbbs.com/

资讯详细描述

有的人用改分辩率软件,更改了手机的分辩率,为了让所有手机通用一种点击方法,计算偏差,可以用这段代码实现。

两种方法如下:
手机改了分辨率后有误差用公式计算加减还原点击 b2b软件


第一种方法:

function calculateFunction(inputValue) {
    function leastSquaresFit(x, y) {
        var n = x.length;
        var sumX = 0;
        var sumY = 0;
        var sumXY = 0;
        var sumX2 = 0;

        for (var i = 0; i < n; i++) {
            sumX += x;
            sumY += y;
            sumXY += x * y;
            sumX2 += x * x;
        }

        var denominator = (n * sumX2 - sumX * sumX);
        if (denominator === 0) {
            return [0, 0]; // 避免除以零
        }

        var a = (n * sumXY - sumX * sumY) / denominator;
        var b = (sumY - a * sumX) / n;

        return [a, b];
    }

    function linearFunction(x, a, b) {
        return a * x + b;
    }

    function clipValue(value, maxValue) {
        return Math.min(value, maxValue);
    }

    var x = [94, 155, 233, 405, 591, 766, 844, 930, 208];
    var y = [0, 65, 157, 380, 580, 810, 916, 1021, 140];
    var maxValue = 1080;

    // 进行线性拟合,得到线性函数的系数 a 和 b
    var coefficients = leastSquaresFit(x, y);
    var a = coefficients[0];
    var b = coefficients[1];

    if (typeof inputValue === 'number') {
        // 输入为 x 值,计算 y 值
        var predictedY = linearFunction(inputValue, a, b);
        // 对预测结果进行裁剪,确保不超过 1080
        predictedY = clipValue(predictedY, maxValue);
        return predictedY;
    } else if (typeof inputValue === 'number' && inputValue >= 0 && inputValue <= maxValue) {
        // 输入为 y 值,计算 x 值
        if (a === 0) {
            // 当 a 为 0 时,若 b 等于输入的 y 值,x 可以是任意值;否则,无解
            if (b === inputValue) {
                return null;
            } else {
                return NaN;
            }
        }
        var predictedX = (inputValue - b) / a;
        return predictedX;
    } else {
        throw new Error('输入不合法,请输入一个数字且范围在 0 到 ' + maxValue + ' 之间');
    }
}

// 调用函数进行正向计算(根据 x 计算 y)
var result1 = calculateFunction(100);
console.log("当 x = 550 时,计算得到的 y 值为: " + result1);

// 调用函数进行反向计算(根据 y 计算 x)
var result2 = calculateFunction(1);
console.log("当 y = 0 时,计算得到的 x 值为: " + result2);

手机改了分辨率后有误差用公式计算加减,### 函数 calculateFunction

这个函数的主要目的是根据输入的数值进行线性拟合计算,可以正向计算(根据 x 值计算 y 值)或反向计算(根据 y 值计算 x 值)。

内部函数

  1. leastSquaresFit(x, y)

    • 这个函数使用最小二乘法来拟合给定的数据点 x 和 y,并返回线性函数 y = ax + b 的系数 a 和 b
    • n 是数据点的数量。
    • sumXsumYsumXY 和 sumX2 分别是 x 的和、y 的和、x 和 y 的乘积之和、x 的平方和。
    • 通过这些和计算得到 a 和 b 的值。
    • 如果分母为零,为了避免除以零的错误,返回 [0, 0]
  2. linearFunction(x, a, b)

    • 这是一个简单的线性函数,根据给定的 x 值以及拟合得到的系数 a 和 b,计算 y 的值。
  3. clipValue(value, maxValue)

    • 这个函数用于确保返回的 y 值不超过预先设定的最大值 maxValue
    • 使用 Math.min 来比较输入的 value 和 maxValue,返回较小的那个值。

主要逻辑

  • 首先,定义了 x 和 y 的数据数组,以及 maxValue 为 1080。
  • 然后,使用 leastSquaresFit 函数计算出拟合直线的系数 a 和 b
  • 根据 inputValue 的类型和范围进行不同的计算:
    • 如果 inputValue 是一个数字,计算对应的 y 值。首先通过 linearFunction 计算,然后通过 clipValue 确保 y 值不超过 1080。
    • 如果 inputValue 是一个数字且在 0 到 maxValue 之间,尝试反向计算对应的 x 值。但如果 a 为 0,意味着直线平行于 x 轴,根据 b 是否等于 inputValue 判断是否有多解或无解。
    • 如果输入不符合要求,抛出一个错误信息。

示例调用

  • var result1 = calculateFunction(100);

    • 调用 calculateFunction 函数,传入 100 作为 x 值,计算得到对应的 y 值,并输出结果。
    • 注意:示例中的注释有误,应该是 “当 x = 100 时,计算得到的 y 值为: “。
  • var result2 = calculateFunction(1);

    • 调用 calculateFunction 函数,传入 1 作为 y 值,尝试计算对应的 x 值。
    • 同样,注释中的描述有误,应该是 “当 y = 1 时,计算得到的 x 值为: “。

注意事项

  • 代码中反向计算的部分有一个逻辑错误,else if (typeof inputValue === 'number' && inputValue >= 0 && inputValue <= maxValue) 这部分条件判断似乎与前面的条件重复,只要 typeof inputValue === 'number',就不需要再次判断 inputValue 是否在 0 到 maxValue 之间。因此这部分代码可以修改为:

    else if (inputValue >= 0 && inputValue <= maxValue) {
    
  • 反向计算时,如果 a 为 0,则 b 的值就是 y 在所有 x 值上的常数值。如果 b 等于 inputValue,那么理论上对于所有的 x 值都可以得到这个 y 值,因此返回 null 表示有多个解。如果 b 不等于 inputValue,则没有解,返回 NaN

当然看上去很复杂,其实有更简单的方法:

第二种方法:

function adjustPos(origPos, origRes, newRes) {
    // 计算比例因子
    var scaleFactor = newRes / origRes;


    // 调整点击位置
    var adjustedPos = origPos * scaleFactor;

    return adjustedPos;
}


function adjustPercent(origX, origY, origWidth, origHeight, newWidth, newHeight) {
    // 调整 x 和 y 坐标
    var adjX = adjustPos(origX * origWidth, origWidth, newWidth);
    var adjY = adjustPos(origY * origHeight, origHeight, newHeight);


    // 转换回百分比
    var adjXPercent = adjX / newWidth;
    var adjYPercent = adjY / newHeight;


    return [adjXPercent, adjYPercent];
}


function clickAdjusted(origX, origY, origWidth, origHeight, newWidth, newHeight) {
    // 计算调整后的百分比坐标
    var [adjX, adjY] = adjustPercent(origX, origY, origWidth, origHeight, newWidth, newHeight);
    console.log("调整后的点击位置为: (" + adjX + ", " + adjY + ")");


    // 使用 auto.clickPercent 方法进行点击
    auto.clickPercent(adjX, adjY);
}


// 示例使用
var origX = 0.6076; // 原始 x 百分比
var origY = 0.1885; // 原始 y 百分比
var origWidth = 1080; // 原始分辨率宽度
var origHeight = 1920; // 原始分辨率高度
var newWidth = 720; // 新分辨率宽度
var newHeight = 1280; // 新分辨率高度


// 直接调用封装的 clickAdjusted 函数
clickAdjusted(origX, origY, origWidth, origHeight, newWidth, newHeight);

这段代码的主要作用是根据手机屏幕的不同分辨率,调整点击的位置,以便在不同设备上实现相同的点击效果。以下是对代码的详细解释:

  1. 调整位置的函数 adjustPos:

    • 该函数接受原始位置(origPos)、原始分辨率(origRes)和新分辨率(newRes)作为参数。
    • 它通过计算比例因子(scaleFactor),然后将原始位置乘以这个因子来得到调整后的点击位置(adjustedPos)。

      function adjustPos(origPos, origRes, newRes) {

      var scaleFactor = newRes / origRes;
      var adjustedPos = origPos * scaleFactor;
      return adjustedPos;
      

      }

  1. 调整百分比坐标的函数 adjustPercent:

    • 该函数接受原始的百分比坐标(origX 和 origY)、原始分辨率宽度和高度、以及新分辨率的宽度和高度。
    • 它首先通过 adjustPos 函数计算调整后的 x 和 y 坐标。
    • 然后,它将计算出的坐标转换回绝对百分比,得到实际在新分辨率下的点击位置。

      function adjustPercent(origX, origY, origWidth, origHeight, newWidth, newHeight) {

      var adjX = adjustPos(origX * origWidth, origWidth, newWidth);
      var adjY = adjustPos(origY * origHeight, origHeight, newHeight);
      var adjXPercent = adjX / newWidth;
      var adjYPercent = adjY / newHeight;
      return [adjXPercent, adjYPercent];
      

      }

  1. 示例使用部分:

    • 定义原始的百分比坐标和分辨率。
    • 使用 adjustPercent 函数计算在新分辨率下的调整坐标,并打印出来。

      var origX = 0.6076;
      var origY = 0.1885;
      var origWidth = 1080;
      var origHeight = 1920;
      var newWidth = 720;
      var newHeight = 1280;

      var [adjX, adjY] = adjustPercent(origX, origY, origWidth, origHeight, newWidth, newHeight);
      console.log(“调整后的点击位置为: (“ + adjX + “, “ + adjY + “)”);

  1. 自动点击方法 autoClick:

    • 这个函数是一个占位符,用于执行实际的点击操作。
    • 当前的实现只是简单输出点击的位置。

      function autoClick(xPercent, yPercent) {

      console.log("在屏幕上点击: (" + xPercent + ", " + yPercent + ")");
      

      }

  1. 调用自动点击方法:

    • 用调整后的 x 和 y 百分比调用 autoClick 方法,替换为你原来的 auto.clickPercent

      autoClick(adjX, adjY);

这个代码的主要目的在于使得在不同的屏幕分辨率下,点击的行为能够保持一致,从而提高了在不同设备上的用户体验。你提到的 auto.clickPercent(0.401, 0.2012) 是你自己使用的点击方法,可以直接替换最后一行的 autoClick 调用


unto原生webview的h5如何跟aiwork交互nextAWIROK软件:如何实现OCR找字并点击功能?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

相关导读
信息发布软件AIWROK软件滑动方法集合示例
AIWROK软件滑动方法集合示例
信息发布软件AIWROK软件安卓AIWROK汇集软件点击
AIWROK软件安卓AIWROK汇集软件点击
信息发布软件苹果系统点击方法综合示例
苹果系统点击方法综合示例
信息发布软件AIWROK苹果系统找图方法完整示例集合
AIWROK苹果系统找图方法完整示例集合
信息发布软件苹果系统找图方法完整示例集合
苹果系统找图方法完整示例集合
信息发布软件苹果IOS系统找字OCR方法例子
苹果IOS系统找字OCR方法例子
信息发布软件AIWORK软件数组高级示例
AIWORK软件数组高级示例
信息发布软件AIWROK软件运算符封装库示例
AIWROK软件运算符封装库示例
信息发布软件AIWROK软件语法运行小示例
AIWROK软件语法运行小示例
信息发布软件AIWROK软件JS循环小示例
AIWROK软件JS循环小示例
信息发布软件AIWROK软件H5网页被主脚本获取值用法
AIWROK软件H5网页被主脚本获取值用法
信息发布软件AIWROK软件创建可暂停恢复的多线程任务
AIWROK软件创建可暂停恢复的多线程任务
信息发布软件AIWROK软件类型转换方法例子
AIWROK软件类型转换方法例子
信息发布软件AIWROK软件H5脚本执行与进度显示
AIWROK软件H5脚本执行与进度显示 .
信息发布软件AIWROK软件根据时间段执行异步任务支持多线程并行处理
AIWROK软件根据时间段执行异步任务支持多线程并行处理
信息发布软件H5自动开关执行脚本功能演示
H5自动开关执行脚本功能演示
信息发布软件AIWROK软件H5单选脚本运行示例
AIWROK软件H5单选脚本运行示例
信息发布软件H5任务脚本选择与执行中心
H5任务脚本选择与执行中心
信息发布软件H5里CheckBox控件演示
H5里CheckBox控件演示
信息发布软件AIWROK软件正则用法实际例子
AIWROK软件正则用法实际例子
信息发布软件AIWROK软件权限管理器实现
AIWROK软件权限管理器实现
信息发布软件AIWORK软件节点方法无碍示例子
AIWORK软件节点方法无碍示例子
信息发布软件JSON.stringify 和 JSON.parse 完整示例
JSON.stringify 和 JSON.parse 完整示例
信息发布软件AIWROK软件展示JavaScript各种语句标识符的用法
AIWROK软件展示JavaScript各种语句标识符的用法
信息发布软件JS巧妙地组合使用各种条件语句
JS巧妙地组合使用各种条件语句
信息发布软件AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
AIWROK手机数据库MySQL数据库截图片批量上传操作脚本
信息发布软件HID中文输入智能打字功能
HID中文输入智能打字功能
信息发布软件AIWROK软件对象工具函数库例子
AIWROK软件对象工具函数库例子
信息发布软件AIWROK软件H5交互演示黄色主题
AIWROK软件H5交互演示黄色主题
信息发布软件H5单按钮执行脚本示例
H5单按钮执行脚本示例
信息发布软件苹果H5界面完整调用脚本示例
苹果H5界面完整调用脚本示例
信息发布软件AIWROK软件平台设备信息全面检测工具例子
AIWROK软件平台设备信息全面检测工具例子
信息发布软件AIWROK创建和放大日志窗口并展示动态内容
AIWROK创建和放大日志窗口并展示动态内容
信息发布软件AIWROK软件device相关方法获取设备信息例子
AIWROK软件device相关方法获取设备信息例子[/backcolor]
信息发布软件数据库MySQL实时内容随机调用
数据库MySQL实时内容随机调用
信息发布软件AIWROK软件分享一个特效苹果H5页面
AIWROK软件分享一个特效苹果H5页面
信息发布软件数据库MYQ业务流程心跳程序启动
数据库MYQ业务流程心跳程序启动
信息发布软件数据库MySQL功能支持创建表插入中文数据查询删除功能例子
数据库MySQL功能支持创建表插入中文数据查询删除功能例子
信息发布软件AIWROK软件Zip 高级操作复杂示例
AIWROK软件Zip 高级操作复杂示例
信息发布软件AIWROK软件txt_文件读写方法小结
AIWROK软件txt_文件读写方法小结
信息发布软件AIWROK软件file文件操作方法小结
AIWROK软件file文件操作方法小结
信息发布软件AIWORK软件配置读写H5演示配套脚本
AIWORK软件配置读写H5演示配套脚本
信息发布软件AIWROK配置读写功能演示示例
AIWROK配置读写功能演示示例
信息发布软件AIWROK截图缓存工具
AIWROK截图缓存工具
信息发布软件AIWROK线程许可证工具
AIWROK线程许可证工具
信息发布软件整理了AIWROK环境下常用的Date对象和sleep对象方法
整理了AIWROK环境下常用的Date对象和sleep对象方法
信息发布软件FastUI界面普通用法
FastUI界面普通用法
信息发布软件FastUI界面类[window]方法小结
FastUI界面类[window]方法小结 方法 1:close(关闭指定窗口)方法 2:closeAll(关闭所有窗口)方法 3:loadUI(加载 UI 界面)方法 4:onClose(监听窗口关闭事件)方法 5:onLoad(监听窗口加载事件)方法 6:setFull(设置窗口全屏)方法 7:setHeight(设置窗口高度)方法 8:setHidden(隐藏窗口)方法 9:setLeft(设置窗口 X 轴坐标)方法 10:setTop(设置窗口 Y 轴坐标)方法 11:setVisable(显示隐藏的窗口)方
信息发布软件AIWROK软件按钮监听UI界面与事件监听功能演示
AIWROK软件按钮监听UI界面与事件监听功能演示.
信息发布软件AWIROK软件多选[uiCheckBox]方法小结
AWIROK软件多选方法小结 方法一:findByID 加载多选控件方法二:getAllChecked 获取所有选中项方法三:getAllSelect 获取所有选项方法四:getChecked 获取某个选项是否选中方法五:setChecked 设置某个选项是否选中方法六:setCheckeds 设置多个选项是否选中方法七:setHeight 设置高度
信息发布软件AIWROK日志演示开启日志显示 → 放大 → 关闭代码
AIWROK日志演示开启日志显示 → 放大 → 关闭代码
信息发布软件&#127983;AIWROK数组方法高级应用案例
🏯AIWROK数组方法高级应用案例
信息发布软件AIWROK软件日志悬浮窗简化版自动切换位置
AIWROK软件日志悬浮窗简化版自动切换位置
信息发布软件AIWROK软件String实例演示
AIWROK软件String实例演示
信息发布软件AIWROK软件S内置String类[String]方法小结
AIWROK软件S内置String类[String]方法小结 方法 1:charAt[/backcolor]方法 2:charCodeAt[/backcolor]方法 3:indexOf[/backcolor]方法 4:lastIndexOf[/backcolor]方法 5:length[/backcolor]方法 6:match[/backcolor]方法 7:replace[/backcolor]方法 8:replaceAll[/backcolor]方法 9:split[/backcolor]方法 10:startsWith[/backcolor]方法 11:substr[/backcolor]方法 12:substring[/backcolor]方法 13:trim[/backcol
信息发布软件AIWROK软件完整的WebSocket客户端示例
这段代码是一个完整的WebSocket客户端示例,用于连接到指定的WebSocket服务器并处理各种事件。具体来说,代码的作用如下: 定义服务器地址:首先定义了一个服务器的IP地址和端口号 var ip = "154.37.221.104:8886";。 创建WebSocket对象:尝试创建一个新的WebSocket对象 var ws = new WebSocket();。注意,这里的 new ws() 应该是 new WebSocket()。 添加事件监听器:代码中尝试为WebSocket对象添加事件监听器,但这里有一个错误。
信息发布软件AIWROK软件苹果系统中实现四种基本滑动操作
AIWROK软件苹果系统中实现四种基本滑动操作
信息发布软件hid的滑动没有百分比坐标滑动吗
hid的滑动没有百分比坐标滑动吗
信息发布软件单选控件[uiRadioButton]方法小结
单选控件方法小结 方法 1:加载单选控件[/backcolor]方法 2:获取选中项[/backcolor]方法 3:设置高度[/backcolor]方法 4:设置选中项[/backcolor]
信息发布软件AIWROK软件无障碍触摸操作示例:点击、左右滑动、上下滑动实例
AIWROK软件无障碍触摸操作示例:点击、左右滑动、上下滑动实例
信息发布软件AIWROK软件安卓随机工具应用函数生成
AIWROK软件安卓随机工具应用函数生成
信息发布软件用在AIWORK软件代码中的实用符号分类整理2
用在AIWORK软件代码中的实用符号分类整理2 软件IDE用Emoji符号分类整理(含用途说明)一、表情与情感1. 微笑 [*]😀 笑脸(基础开心反馈,用于操作成功后的友好提示) [*]😃 笑脸大眼睛(强化开心情绪,用于重要任务完成后的积极反馈) [*]😄 笑脸和微笑的眼睛(温和友好的状态,用于日常交互中的正向回应) [*]😁 带着微笑的眼睛(轻松愉悦的反馈,用于轻度成功或趣味操作) [*]
信息发布软件AIWROK软件图像二值化的各种方法和应用场景
AIWROK软件图像二值化的各种方法和应用场景
信息发布软件AIWROK软件找图区分页面变化和卡死状态
AIWROK软件找图区分页面变化和卡死状态
信息发布软件AIWROK苹果系统Map 数据管理[map]小结
AIWROK苹果系统Map 数据管理[map]小结 方法一:add(添加键值对)[/backcolor]方法二:delete(删除指定键值对)[/backcolor]方法三:clear(清空所有键值对)[/backcolor]方法四:get(根据键获取值)[/backcolor]方法五:getAllValue(获取所有值)[/backcolor]方法六:toString(转换为字符串)[/backcolor]完整示例:

QQ|( 京ICP备09078825号 )

本网站信息发布软件,是可以发布论坛,发送信息到各大博客,各大b2b软件自动发布,好不夸张的说:只要手工能发在电脑打开IE能发的网站,用这个宣传软件就可以仿制动作,进行推送发到您想发送的B2B网站或是信息发布平台上,不管是后台,还是前台,都可以进行最方便的广告发布,这个广告发布软件,可以按月购买,还可以试用软件,对网站的验证码也可以完全自动对信息发布,让客户自动找上门,使企业轻松实现b2b发布,这个信息发布软件,均是本站原创正版开发,拥有正版的血统,想要新功能,欢迎提意见给我,一好的分类信息群发软件在手,舍我其谁。QQ896757558

GMT+8, 2026-2-4 10:47 , Processed in 0.397542 second(s), 51 queries .

宣传软件--信息发布软件--b2b软件广告发布软件

快速回复 返回顶部 返回列表