【发布时间】:2014-02-09 10:09:33
【问题描述】:
我想我遇到了与this question 类似的问题,但我希望在了解如何使用回调函数以及如何针对我的特定情况下实现它的一些帮助。我正在尝试将图像“按需”绘制到画布上,即任何时候调用某个函数。该图像与我称为块的对象相关联。块具有尺寸、坐标和 url。
var canvas = document.getElementById("myCanvas");
var context = canvas.getContext("2d");
function Block(x, y, width, height, url) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
this.url = url;
this.drawBlock = drawBlock;
function drawBlock() {
var blockSprite = new Image();
blockSprite.src = url;
blockSprite.onload = context.drawImage(blockSprite,x,y,width,height);
}
}
你可以看到一个演示here。奇怪的是,如果我链接到网络上的图像,它可以工作,但如果我链接到磁盘上的图像,它就会失败。我相信这是因为 onload 事件发生在 drawBlock 被调用之前,我需要使用回调或承诺来解决这个问题,但我对 Javascript 很陌生,所以我想在这里得到一些指导。任何帮助或建议将不胜感激。
【问题讨论】:
-
尝试用
window.onload=function(){};包围你的代码 -
@JamesBrown 实际上,我的所有代码都已经有了。我在画布上画了几件东西,一旦它们准备好了,那部分就可以正常工作了。
标签: javascript canvas callback