- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
在我的游戏中,您可以点击橙色框(它应该代表怪物)。单击后,一条绿线将附加到字符 div。例如为了更好的解释:
这是我用来生成该行的代码:
l = document.createElement('div');
l.innerHTML='<div id="oLineBar" style=" transform: rotate(' + RANDOM + 'deg);" class="fadeIn2"><div id="lineBar" class="lineBarCharacter"></div></div>';
character.appendChild(l);
它的 CSS 是:
.lineBarCharacter{
height: 321px;
width: 2px;
background: rgba(39, 182, 0, 0.46)
}
#oLineBar {
position: absolute;
top: 20px;
left: 37px;
opacity: 1;
transition: transform 1s linear;
transform-origin: top left;
transform-style: preserve-3D;
-webkit-transition: opacity 1s;
transition: opacity 1s;
-ms-transition-property: opacity, -ms-transform;
}
现在,我在此处获取橙色框 getboundingClientRect:
ClientRect {height: 95, width: 88, left: 1250.5, bottom: 471, right: 1338.5…}bottom: 471height: 95left: 1250.5right: 1338.5top: 376width: 88
如何根据橙色框所在的位置(来自 getboundingClientRect 数据)确定正确的旋转度数?
不仅是那个特定的橙色框,还有从 getBoundingClientRect 检索到的任何数据。如果这是有道理的..我有点迷路,如果这令人困惑,请提前道歉。我非常希望这条线与橙色框所在的方向相同。
最佳答案
这更像是一道数学题而不是编程题,但您基本上应该计算 Angular 色与其目标之间的 x 和 y 差值,然后计算 Angular 。
假设x1,y1
为字符坐标,x2,y2
为目标坐标:
(x2-x1)
将给出 x 差值,(y2-y1)
将给出 y 差值,ArcTangent ( (y2-y1)/(x2-x1))
将为您提供以弧度为单位的 Angular 。angleInRadians * (180/pi)
将为您提供以度为单位的 Angular 。4*ArcTangent(1)
将为您提供 pi
现在在 JavaScript 中:
var angle = Math.round(Math.atan((y2 - y1) / (x2 - x1)) * (180 / (4 * Math.atan(1))));
或者按照 Maurice 的建议,使用 Math.atan2
:
var angle = Math.round(Math.atan2(y2 - y1 , x2 - x1) * (180 / (4 * Math.atan(1))));
这是一个例子:
$(function () {
$(document).on("mousemove", function (ev) {
var x1 = 200,
y1 = 200;
var x2 = ev.clientX,
y2 = ev.clientY;
var d = Math.sqrt(Math.pow((y2 - y1),2)+Math.pow((x2 - x1),2));
var angle = Math.round(Math.atan2((y2 - y1) , (x2 - x1)) * (180 / (4 * Math.atan(1))));
console.log(angle);
$("#line").css({
"transform":"rotate("+angle+"deg)",
"width":d+"px"
});
});
});
#line {
position:absolute;
left:200px;
top:200px;
width:200px;
height:5px;
background:green;
transform-origin: 0% 0%;
transform:rotate(45deg);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="line"></div>
这是一个 Fiddle 如果您使用的是移动设备。
关于javascript - 如何使用 getBoundingClientRect 获得度数的旋转?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28365489/
我想知道当动画结束或被中断时如何在旋转动画中获取当前角度/度数? 我的想法是当点击某个按钮时动画被打断时,旋转将逆时针方向(当前流向是顺时针方向),从被打断时的最后一个角度/度开始。 我试过使用 ap
我正在尝试使用 TYPE_ACCELEROMETER 传感器获取手机角度。我的目标是仅在手机倾斜后获取角度值。它有效,但问题是当我 Handlebars 机正面朝上放在 table 上时,它仍然说 i
以下代码显示为问号而不是度数符号: var airF = Math.round(Number(MDTMOBILE.RWISWeather[i].AirTemp)) + "\u00B0" + "F";
我使用 css 3D-transform rotateY 翻转带有 css transition 的 div。我希望图像翻转一定次数:当转换结束时,我再次触发它直到达到某个计数器值。 我想做什么:当
我正在开发一个 map 应用程序的插件,它有很多类,有大量的单位选项。我觉得我在维护模型内的顺序方面有很好的处理能力。例如,Angle 类具有 Degrees 和 Radians 的属性并自动相互更新
我有一个栅格,是从 netcdf 中获得的(Lambert Conic Conformal projection): library(meteoForecast) wrf_tempor
我在 mapView 的叠加层上有一组项目。 我知道大多数对象的顶部/底部/左侧/右侧位置。 我想使用 zoomToSpan() 方法来放大该区域。 用这种方法计算纬度/经度的正确方法是什么? 最佳答
给你一个具有 100 万个顶点的最大度数为 4 的简单图。 我们想找到一个最大独立子集。 一般情况下是NP难的。 度数最大为 4 的事实是否提供了计算它的有效解决方案? 最佳答案 进一步阅读维基百科页
我是一名优秀的程序员,十分优秀!