javascript - 啊,啪!尝试使用 Fabric JS 在移动设备中加载大画布时的屏幕
问题描述
我正在尝试从带有背景图像的 JSON 数据加载大画布。在桌面上,它正在正确加载。但是在移动设备上,浏览器崩溃了。
HTML 代码:
<canvas id="myCanvas" width="600" height="600"></canvas>
我必须在画布窗口中加载并调整整个画布。
TS代码:
准备画布
// Calculate ratio of the canvas as per height and width
prepareCanvas(width, height) { // height = 3300, width = 2550
let ratioHeight: any = Math.ceil((height / width) * 600);
this.canvas = new fabric.Canvas("myCanvas", {
backgroundColor: "#ffffff",
selection: false,
width: width <= 600 ? width : 600,
height: width <= 600 ? height : ratioHeight
});
this.canvas.setDimensions(
{ width: width, height: height },
{ backstoreOnly: true }
);
}
从 JSON 加载 Canvas
loadTemplateFromData(canvasData: any) {
this.canvas.loadFromJSON(
canvasData,
this.canvas.renderAll.bind(this.canvas),
(o, object) => {
object.set("selectable", false);
}
);
}
使用上面的代码,画布在桌面浏览器中正确加载,但在移动浏览器上崩溃。我注意到的一件事是,如果画布宽度、高度像 300 x 300 一样小,那么它可以在移动浏览器中正确加载。如何在移动浏览器中加载大画布?
提前致谢。
解决方案
推荐阅读
- android - java.lang.RuntimeException:无法创建类 ViewModel [Kotlin] 的实例
- angular - 如何在 Angular 10 中使用 HTML 锚链接#id inside dialog (MatDialog)
- python - 生成器函数中返回的原因是什么?
- python - 如何停止一个类在python中将属性设置为其文字名称?
- oracle - 创建显式游标时未声明绑定变量 *
- c++ - 如何在 Visual Studio 上设置 .h 路径?
- python - 如何使用 Django 捕获选中复选框中的值
- android - 如何以编程方式获取应用程序的估计功耗?
- python - 如何根据熊猫中的排名分配最小值?
- javascript - 每五秒调用一次请求动画帧