gpt4 book ai didi

html - 绘制 HTML5 Canvas 时显示加载微调器。事件?

转载 作者:行者123 更新时间:2023-11-28 01:23:05 25 4
gpt4 key购买 nike

我花了很多时间搜索这个,但要么这不是一个很常见的问题,要么我的谷歌功能不足。

简短的版本是我有一个带有 HTML5 canvas 元素的网站,该元素正在显示大型复杂绘图,这意味着它通常最多需要 10 秒才能完成。

如何挂接到绘图事件?我找不到任何此类内容,但如果在绘制 Canvas 时显示加载微调器,那将真正有助于用户体验。我以前看过它,但没有看到“怎么做”。

有经验者的详细信息:我正在显示带有 PDFJS 的 PDF,并且有我自己的查看器而不是提供的查看器。它可以工作,但有时它绘制 PDF 的速度非常慢,因此需要一个微调器。

最佳答案

这是一个非常简单但令人讨厌的示例,它现在使用一个您可以触发的事件:)。

jsFiddle:https://jsfiddle.net/CanvasCode/jwzLr4wh/1/

JavaScript

    image = new Image();
image.src = "https://upload.wikimedia.org/wikipedia/commons/1/1e/Large_Siamese_cat_tosses_a_mouse.jpg";

var canvas = document.getElementById('myCanvas-1');
var ctx = document.getElementById('myCanvas-1').getContext('2d');
var loading = true;
var loadingText = "Loading";

var event = new Event('loading');

// Listen for the event.
canvas.addEventListener('loading', function (e) {
// Quick and nasty
setInterval(function () {
if (loading) {
console.log("update");
ctx.fillStyle = "#FFF";
ctx.fillRect(0, 0, 400, 400);
ctx.font = '15pt Arial ';
ctx.fillStyle = "#000";
ctx.fillText(loadingText, 200, 200);
if (loadingText == "Loading...") {
loadingText = "Loading";
}
loadingText = loadingText + "."
}
}, 1);
}, false);

canvas.dispatchEvent(event);
setTimeout(function () {
ctx.drawImage(image, 0, 0);
ctx.font = '15pt Arial ';
ctx.fillStyle = "#000";
loading = false;
}, 5000);

这现在使用一个您可以手动触发的事件,它将设置 Canvas 以加载。

关于html - 绘制 HTML5 Canvas 时显示加载微调器。事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33214288/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com