如何在Typescript Angular中的“鼠标移动”上获取x y坐标的小数值?

时间:2019-06-14 15:30:22

标签: javascript angular typescript mouseevent

我正在从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值的十进制精度,我该怎么做?

1 个答案:

答案 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来检测亚像素功能。