TC官方合作论坛

 找回密码
 立即注册
查看: 4131|回复: 9

[教程] 写给因TC安卓版坐标体系困扰的童鞋们

  [复制链接]
发表于 2015-11-12 16:17:08 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
本帖最后由 longyushen 于 2015-11-12 17:11 编辑

直入正题。
※注:以下,找图找色找字命令统称找色命令。

童鞋们有可能遇到的有关坐标体系的相关问题:
1. 刚截图后找色命令好使,重启模拟器后失灵(无关是当场重启还是隔天重启,脚本不会自己计时到点儿了再犯病);
2. 刚截图当场测试,找色命令罢工。要么找到坐标后不点击,要么干脆连坐标都找不到;
3. 做出来的脚本,在开发时所用的模拟器上能正常运行,一发到手机上就不能正常工作;
4. 脚本源代码在模拟器和手机上都能正常运行,一旦打包成APK之后无法安装到手机上。

下面分析解决以上问题:
A. 关于找色失灵问题统一分析解决:
    a. 首先,出现这个问题的根源是因为使用了模拟器。如果截图和使用都是在真机上时,不会存在上述前三个问题。
    b. 模拟器给我们的开发和测试带来了很大的方便,但随之也带来了需要我们不得不去考虑的一些问题(多一个成员多一个问题,这也符合情理)。
       也就是说,当我们借助了模拟器去截图也好测试也罢,我们要考虑的坐标体系就不再是【TC坐标体系 <-----> 手机安卓界面坐标体系】这两者间的关系了,
       而是【TC坐标体系 <-----> 模拟器坐标体系 <-----> 模拟器内的安卓界面坐标体系】这三者之间的关系。而在这三者中,让坐标体系产生混乱的正是模拟器的坐标体系。
    c. 我们都知道所谓安卓模拟器,仅仅是能够搭载安卓系统运行在WINDOWS操作系统上的框架而已。我们想让安卓系统在WINDOWS上跑起来,所以才有了模拟器这个框架。
    d. TC坐标体系和安卓界面坐标体系大家都知道,那什么是模拟器坐标体系?其实很简单,就是这个框架在内部搭载安卓系统时,是框架自己旋转还是自己不动仅让安卓界面旋转的问题。
    e. 也就是说,当我们在模拟器上设置某个分辨率后,是这个框架本身去适应内部安卓界面所需要的大小,还是框架本身大小不变仅让安卓界面来自适应框架,还是它俩根据分辨率动态去适应的问题。
    f. 模拟器的这种适应分辨率的方式,是由模拟器开发人员定的。所以,不是说只要是模拟器它的适应分辨率的原理都相同。
    g. 模拟器框架我们可以理解为是手机真机的物理框架。不同的是,手机框架大小不会自己变,但模拟器有会的也有不会的。
    h. 上述,只是让我们一起来了解了模拟器有自己去适应安卓界面的,也有让安卓界面来适应自己的。那么它俩有什么不同呢? 这才是重点,也是出现坐标体系混乱的源头。也就是谁旋转的问题。
    I. TC安卓版所识别的是安卓系统的坐标体系(也就是分辨率)。
    综上:
    a. 假设,当前模拟器在屏幕上显示的是横着的,并且分辨率是 1280 x 720 的横屏;
    b. 当我们在模拟器上把分辨率设置为 720 x 1280 时,模拟器肯定会立起来。问题是在竖屏的过程中,是谁的分辨率变了? 不同的模拟器会对它有不同的定义设计;
    c. 如果是改变了安卓分辨率,模拟器框架仅是去适应了这个分辨率,那么TC安卓版所获取到的当前安卓分辨率会是 720 x 1280 ,这也是我们想要的;
    d. 而要是模拟器自身改变了坐标体系,让内部的安卓界面通过屏幕旋转来适应自己了呢? 那么TC安卓版所获取到的当前安卓分辨率会是 1280 x 720 ,这不是安卓开发人员所想要的结果。
        (因为安卓系统不会因为屏幕旋转了一下分辨率就会变,正如我们的真机不会因为屏幕旋转一下手机分辨率就会变,一个道理)
       虽然这对一般用户,对用模拟器来打游戏的用户毫无影响,但对于开发脚本的人员来说带来了两方面的麻烦:
        其一,开发过程中要额外注意坐标体系问题;
        其二,想让自己的脚本即能适用于真机又能适用于所有模拟器的话,同种分辨率下至少要把截图横竖翻过来取两次坐标(或找图找色找字),再根据获取到的用户机分辨率进行分支。
    e. 遇到坐标体系问题的童鞋,换一个模拟器开发虽说也是种方法,至少你自己开发时是不会出现任何问题的。但这么做的结果是,你的脚本在其它类型的模拟器中不会正常工作。
        没遇到坐标体系问题的童鞋,其实也有必要了解一下。你只是恰好在使用着不会出现坐标体系问题的模拟器,那么使用其它类型模拟器的潜在用户呢?

B. 关于打包成APK之后,安装到手机不能用的问题:
    a. 99%的原因是,你的本地 JDK 版本过高。JDK是向上兼容,向下不兼容的。 在高版本JDK中打包的脚本,无法在低版本JDK环境中运行。
    b. 剩下1%就是你的RP问题了。


另,
从开发者的角度,目前市面上的模拟器可分为三种:
第一种,当我们设置分辨率时,它所调整的是安卓系统的分辨率(开发者希望所有模拟器都是这个样子的,但很遗憾,还有下面两种);
第二种,它所调整的是模拟器框架的显示方式是横显还是竖显,然后让内部的安卓界面根据框架的形状来旋转(此类模拟器一般都屏蔽了安卓设置中的屏幕自适应旋转选项,默认为旋转);
第三种,当安卓系统中的屏幕旋转选项为旋转时,它按照第二种模拟器的方式调整分辨率;当安卓系统中的屏幕旋转选项为不旋转时,它按照第一种模拟器的方式调整分辨率。

好了,就啰嗦这么多吧。希望对遇到此类问题的童鞋们有所帮助

回复

使用道具 举报

发表于 2015-11-13 20:20:22 来自手机 | 显示全部楼层
本帖最后由 谁人泪 于 2015-11-13 20:41 编辑

首先谢谢大神,我请教下,我是直接连接手机做的,为嘛我手机截图用图色助手0模式无法截图,明明获得的坐标体系是零,但是我的游戏是横屏了啊!另外为嘛截图是横屏,找图和找字等返回的坐标也是横屏的,为嘛点击的时候就按竖屏坐标处理了,设置坐标体系1吧,无论怎么设置范围根本都找不到!大大能帮忙说下吗,最重要的是如何解决这个点击坐标错误的问题,拜谢!
回复 支持 反对

使用道具 举报

发表于 2015-12-10 15:18:46 | 显示全部楼层
终于明白按键精灵为什么要锁定屏幕分辨率,不支持旋转了!
里面的水居然这么深,现在TC头痛了,而且2楼的问题看起来像是bug!
回复 支持 反对

使用道具 举报

发表于 2016-7-8 08:34:56 | 显示全部楼层
一样问题啊,蛋疼
回复 支持 反对

使用道具 举报

发表于 2016-7-25 17:05:41 | 显示全部楼层
    变量 ret = setrotatescreen(1)
    traceprint(ret)
    等待(5000)   
    traceprint(getrotatescreen())

设置成功,结果。。。,哎
回复 支持 反对

使用道具 举报

发表于 2016-8-9 11:53:02 | 显示全部楼层
坐标的确有问题,横屏坐标可以自己算出竖屏坐标,问题不算大吧
回复 支持 反对

使用道具 举报

发表于 2016-8-9 11:58:59 | 显示全部楼层
我遇到了个问题,可以在模拟器和手机上调试脚本,也可以安装到模拟器和手机上,也可以运行,但是在运行过程中一直出现提示“已授予超级用户权限”,脚本就会卡这里这个提示不停的重复提示
回复 支持 反对

使用道具 举报

发表于 2016-12-13 19:53:26 | 显示全部楼层
为什么 我的手机在调试后游戏会反复自动启动,就是关了他又启动
回复 支持 反对

使用道具 举报

发表于 2017-11-17 20:03:04 来自手机 | 显示全部楼层
wangsu321 发表于 2016-12-13 19:53
为什么 我的手机在调试后游戏会反复自动启动,就是关了他又启动

这个问题我知道,因为游戏的权限是关闭其他应用程序。
回复 支持 反对

使用道具 举报

发表于 2017-12-10 21:24:18 | 显示全部楼层
我在手机上测试,模拟操作点击一下,手指点击(x,y)  结果根本就不是轻点,操作网页的时候。。。模拟手指点击,出现下拉让我在新窗口打开,,,而不是直接点击连接进入。。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-4-29 18:52 , Processed in 0.039369 second(s), 22 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

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