2015-04-21 55 views
0

我太烦了,找到将各种设备尺寸的点击坐标转换为320 [iPhone 4]屏幕的解决方案。如何将不同尺寸的点击坐标转换为320尺寸的尺寸?

我已经像元件所需的所有数据的偏移,单击偏移,窗口宽度/高度等,但没有发现任何适当的溶液将其转换成320

对于例如我需要下面提及的转换X,Y这是我从480屏幕收集:

  1. 元素中的x偏移量,Y [30,1903]
  2. 单击在X,Y [225,38] //这里偏移我提到元素的点击偏移量不是文档/窗口。
  3. 元宽度/高度(单位:像素)[420,38]

AND

下面是我此数据相转换为320

[X,Y后期待的结果] = [161,38]

任何人都可以帮助我这么做吗?

回答

1

你可以使用一个小比例的数学......

var xratio=225/420; //420-mouse-x-coord divided by 420 
var yratio=38/38;  // mouse-y-coord/element height 

var x=320*xratio; 
var y=38*yratio; 

您可能必须把x和y的值Math.round()来得到一个完美的像素 而不是小数。

编辑

你拥有它基于什么你所有的偏移量(我用225来调整,但您可能需要增加或减少你30元偏移到225之前先用420分来获得这取决于你如何所有的偏移)

为了扭转你愿意,你可以使用交叉相乘或简单的代数什么工程师总结的传动比百分比:

161到320,什么x为420;

(三百二十〇分之一百六十一)=(X/420)

0.503125 =(X/420)

0.503125 * 420 = X

211.3125 = X;

您的x坐标必须是420宽度对象上的211.3125,与320宽度对象上的161相同;

ALSO:

对于任何人谁可能是想为Web应用程序做到这一点, getBoundingClientRect()是比较容易的方式,然后用所有的各种脏性能处理。

https://developer.mozilla.org/en-US/docs/Web/API/Element/getBoundingClientRect

+0

如果我申请这个公式我没有确切或接近得到预期的结果。 –

+0

哎呀忘了一些东西。现在就试试。 – user2782001

+0

似乎可以使用示例数据,但如果我在[103,38]上应用,那么结果是错误的,因此可能是我们需要计算的其他东西。还有一件事你使用屏幕大小来计算X,我猜他们可能是元素的宽度,而元素的宽度是320px在320维度,如果我错了,纠正我。 –