javascript - 计算 HTML5 视频的偏移量

标签 javascript html canvas

我正在使用 Canvas 叠加层追踪 HTML5 视频中的一个点。 Canvas 位于视频标签之上,样式如下:

#my-canvas { width: 100%; height: 100%; position:absolute !important; z-index:100000; margin: 0 auto; background-color:rgba(68, 170, 213, 0.0); }

这些点是通过单独的 (Android) 应用程序捕获的。以下是我如何在 Canvas 上绘制点:

MyClass.prototype.drawLine = function(_context, _ctr, _color) {
    _context.lineWidth      = 2;
    _context.lineJoin       = 'round';
    _context.strokeStyle    = _color;

    _context.moveTo(this.data["xs"][_ctr]*this.xOffset, this.data["ys"][_ctr]*this.yOffset);
    _context.lineTo(this.data["xs"][_ctr+1]*this.xOffset, this.data["ys"][_ctr+1]*this.yOffset);
    _context.stroke();
    _context.closePath();
}

我将数据点与偏移值相乘以补偿屏幕尺寸。这是我计算偏移量的方式:

MyClass.prototype.calculateOffsets = function() {
        this.yOffset        = this.video.offsetHeight/parseFloat(this.data["height"]);
        this.xOffset        = this.video.offsetWidth/parseFloat(this.data["width"]);
}

这段代码在横向视频中工作正常,但在纵向视频中却不行。我可能在偏移量计算中遗漏了一些东西。如果您能指出正确的方向,我将不胜感激。

提前致谢。

最佳答案

当您使用 CSS 设置 Canvas 大小时,您的 Canvas 实际上始终为 300x150 像素。您绘制的内容将与该大小相关。

尝试从 CSS 规则中移除 100% 宽度和高度,并在每次收到 onresize 事件时为其位图设置 Canvas 大小等。CSS 设置元素大小;这将设置位图大小(如果没有覆盖 CSS,元素将跟随):

_context.canvas.width = window.innerWidth;
_context.canvas.height = window.innerHeight;

#my-canvas {宽度:100%;高度:100%;position:absolute...

请注意,更改 Canvas 大小也会将其清除,因此如果需要,您必须重新绘制到该点的所有内容。

关于javascript - 计算 HTML5 视频的偏移量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22930991/

相关文章:

javascript - 当数字未知时,有没有办法遍历所有 jwplayer 实例?

javascript - 来自 php 文件的 xampp 脚本不会转移到 html 文件

javascript - Jquery - 从 url 加载图像并将其绘制在 Canvas 上

javascript - 如何从 Vue 中的子组件更改和呈现源数组

php - 如何统计下载的文件

javascript - 使用 Node.js 和 Socket.io 定位文件

javascript - 如何实现组合折叠/展开侧边栏?

javascript - 如何以两个不同的 Angular 在两个方向上旋转图像?

javascript - 使用键盘箭头使用 three.js 进行第一人称模拟

android - Android 上的动画无法在 Canvas 中启动