画布高度由 EaselJS 更改。如何避免这种情况?

Posted

技术标签:

【中文标题】画布高度由 EaselJS 更改。如何避免这种情况?【英文标题】:Canvas height changed by EaselJS. How to avoid this? 【发布时间】:2016-05-14 01:44:02 【问题描述】:

我正在使用 Easel JS 开发基于 Canvas 的纸牌游戏。

TODO:为画布设置高度并在其中绘制所有元素。

问题: EaselJS 自动改变画布高度。

参考资料:

我如何设置高度:

      var gameBoard = document.getElementById("board");

  gameBoard.style.height = window.innerHeight+"px";
  gameBoard.height = gameBoard.offsetHeight;
  gameBoard.style.height = "auto";

【问题讨论】:

【参考方案1】:

在不知道您的目标是什么的情况下,很难说出问题到底出在哪里……但是将 CSS“canvas.style.height”属性设置为“auto”似乎是个问题。宽度和高度属性(不是 CSS)仍然是您最初设置的值(1300 x 501)。

删除此行,您将得到一个画布,该画布与加载页面时的窗口大小相同。

gameBoard.style.height = "auto";

如果您希望画布具有与窗口中一样多的像素,则需要侦听“resize”事件并将值应用回画布。

window.addEventListener("resize", function()
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;
);

【讨论】:

除此之外,请注意 EaselJS 从不设置画布的大小,一个例外是当您从 Flash/Animate CC 导出时——生成的 html 具有 FLA 舞台大小。如果您了解它会做什么,我只会建议使用 CSS 进行缩放,因为它会缩放像素,而不是更改尺寸。 @inverse' 建议直接在画布上设置宽度/高度更可取。

以上是关于画布高度由 EaselJS 更改。如何避免这种情况?的主要内容,如果未能解决你的问题,请参考以下文章

更改 EaselJS 画布宽度而不缩放内容

EaselJS:在属性更改时更新形状颜色

如何彻底处置 EaselJS 画布?

画布动画作为 div 背景 - EaselJS

使用 EaselJS 围绕画布构建坐标系

如何在角度 chart.js 中更改画布高度和宽度