這裏是一個非常簡單和令人討厭的例子,它現在使用一個事件,你可以觸發:)。
的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);
這現在使用可手動斷火,這將設置畫布裝貨的事件。
爲什麼不創建一個'onLoading'函數,當您的畫布繪製新的10秒圖像時會調用這個函數? – Canvas
我明白了你的觀點,這是發生在我身上的一件事,但在我將自己置入該解決方案之前,我會看看是否可以創建某種半通用事件偵聽器。 –
我已更新我的答案以使用活動 – Canvas