我正在从Flash / Flex转换UI,它在Flex UI中将值保存为十进制。我必须重用这些值。
我为此问题创建了一个example。摘录:
import { Component, Input } from '@angular/core';
@Component({
selector: 'hello',
template: `<div (mousemove)="showXY($event)"></div>`,
styles: [`div { border: 1px solid black; height: 500px; width: 500px }`]
})
export class HelloComponent {
@Input() name: string;
x: number;
y: number;
showXY(e: MouseEvent) {
this.x = e.offsetX;
this.y = e.offsetY;
console.log('x: ', this.x, 'y: ', this.y);
}
}
我想查看鼠标在div上移动时x和y值的十进制精度,我该怎么做?
答案 0 :(得分:0)
令我惊讶的是,MouseEvent.offset{X,Y}
是 supposed 用双精度浮点数表示,尽管我从未在野外见过或使用过它们:< / p>
返回值
双浮点值。规范的早期版本 这是整数。请参阅浏览器兼容性部分以了解 详细信息。
兼容性图表声称Chrome 56以后将其内部表示形式更改为两倍。
根据comments on this question,您也许可以获取亚像素分辨率,但这似乎取决于硬件。例如,我当前的设置(Windows 10上的简单1080p Benq LCD监视器)不提供亚像素分辨率,因此这些值将以整数形式返回。
因此,在移植应用程序时必须考虑到这一点,并假设亚像素分辨率是逐行增强功能所提供的功能-在这种情况下,在极少数情况下-和Math.floor()
/ {{ 1}}就是您的价值观。
我想您可以通过简单地在返回值(即.ceil()
)中使用looking for a decimal来检测亚像素功能。