使用回调将图像绘制到画布的Javascript

时代

我想我有一个类似的问题到了这个问题,但我想一点点帮助了解如何使用一个回调函数,以及如何实现它为我的特殊情况。我正在尝试“按需”将图像绘制到画布上,即每次调用某个函数时。该图像与我称为“块”的对象相关联。块具有尺寸,坐标和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);
        }
  }

您可以在此处查看演示奇怪的是,如果我链接到网络上的图像,它就可以工作,但是如果我链接到磁盘上的图像,它就不能工作。我相信这是因为onload事件发生在调用drawBlock之前,并且我需要使用回调或Promise来解决此问题,但是我对Javascript还是很陌生,因此我想在此提供一些指导。任何帮助或建议,将不胜感激。

尝试这种方式:

function Block(x, y, width, height, url) {
        this.x = x;
        this.y = y;
        this.width = width;
        this.height = height;
        this.url = url;
        this.drawBlock=function drawBlock(){
              var blockSprite = new Image();
              blockSprite.src = url;
              blockSprite.onload = function(){
                  context.drawImage(blockSprite,x,y,width,height);
              }
        }
  }

var block=new Block(0,0,32,32,"house32x32.png");
block.drawBlock();

回调只是一个在以后的时间执行的函数-通常在长时间运行的任务最终完成之后。

加载图像是一个很好的例子。考虑以下代码:

function someCallbackFunction(){
    alert("The image has finally been fully loaded");
}

var image=new Image();

image.onload=someCallbackFunction;

image.src="yourImage.png";

alert("This code is last, but will execute before the onload function");

它实际上将按以下顺序执行:

  1. 图像对象已创建。

    var image = new Image();

  2. 告知图像对象,当完全加载图像后,它应执行称为someCallbackFunction的函数。

    image.onload = someCallbackFunction

  3. 为图像提供一个.src URL,并开始了漫长的下载图像过程

    image.src =“ yourImage.png”;

  4. image.src =“ yourImage.png”之后的任何代码都将执行。

  5. ...有时稍后...在完全加载图像之后,图像对象将执行someCallbackFunction()并发出警报。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Javascript - 使用回调将元素复制到对象的数组

来自分类Dev

使用img.crossOrigin =“ Anonymous”将图像绘制到画布上不起作用

来自分类Dev

为什么我必须使用 window.onload 将图像绘制到画布上

来自分类Dev

将两个图像的差异绘制到画布

来自分类Dev

用JavaScript加载并绘制平铺图像到画布

来自分类Dev

使用JCrop裁剪图像绘制到画布中

来自分类Dev

使用JCrop裁剪绘制到画布中的图像

来自分类Dev

在毕加索中使用回调获取图像?

来自分类Dev

将图像绘制到画布上会为每个绘制的新图像返回InvalidStateError,然后成功

来自分类Dev

在JavaScript类中使用回调

来自分类Dev

javascript-使用参数调用回调

来自分类Dev

在 JavaScript 中使用回调的困惑

来自分类Dev

如何使用回调方法将数据插入到聚合物特性中

来自分类Dev

如何使用回调将错误从网络类传递到 ViewController

来自分类Dev

用图像而非颜色填充对象(将图像绘制到画布上)

来自分类Dev

将Svg绘制到画布上,包括嵌入到svg中的图像

来自分类Dev

使用回调/小部件绘制正态分布以指定范围

来自分类Dev

尝试将base64图像绘制到画布时出现HTTP错误431

来自分类Dev

如何使用Javascript绘制画布

来自分类Dev

javascript在画布上绘制图像

来自分类Dev

javascript画布不会绘制图像

来自分类Dev

使用回调获取图像像素数据

来自分类Dev

如何使用回调

来自分类Dev

使用React.js在画布上绘制图像后无法将画布转换为图像

来自分类Dev

使用画布绘制真实尺寸的图像

来自分类Dev

使用JavaScript将画布图像附加到输入数组

来自分类Dev

如果图像来自其他站点,将图像绘制到画布上会被描述为热链接吗?

来自分类Dev

如何使用回调将数据发送回先前的ViewController

来自分类Dev

Kotlin,将值设置为 TextView 使用回调接口

Related 相关文章

  1. 1

    Javascript - 使用回调将元素复制到对象的数组

  2. 2

    使用img.crossOrigin =“ Anonymous”将图像绘制到画布上不起作用

  3. 3

    为什么我必须使用 window.onload 将图像绘制到画布上

  4. 4

    将两个图像的差异绘制到画布

  5. 5

    用JavaScript加载并绘制平铺图像到画布

  6. 6

    使用JCrop裁剪图像绘制到画布中

  7. 7

    使用JCrop裁剪绘制到画布中的图像

  8. 8

    在毕加索中使用回调获取图像?

  9. 9

    将图像绘制到画布上会为每个绘制的新图像返回InvalidStateError,然后成功

  10. 10

    在JavaScript类中使用回调

  11. 11

    javascript-使用参数调用回调

  12. 12

    在 JavaScript 中使用回调的困惑

  13. 13

    如何使用回调方法将数据插入到聚合物特性中

  14. 14

    如何使用回调将错误从网络类传递到 ViewController

  15. 15

    用图像而非颜色填充对象(将图像绘制到画布上)

  16. 16

    将Svg绘制到画布上,包括嵌入到svg中的图像

  17. 17

    使用回调/小部件绘制正态分布以指定范围

  18. 18

    尝试将base64图像绘制到画布时出现HTTP错误431

  19. 19

    如何使用Javascript绘制画布

  20. 20

    javascript在画布上绘制图像

  21. 21

    javascript画布不会绘制图像

  22. 22

    使用回调获取图像像素数据

  23. 23

    如何使用回调

  24. 24

    使用React.js在画布上绘制图像后无法将画布转换为图像

  25. 25

    使用画布绘制真实尺寸的图像

  26. 26

    使用JavaScript将画布图像附加到输入数组

  27. 27

    如果图像来自其他站点,将图像绘制到画布上会被描述为热链接吗?

  28. 28

    如何使用回调将数据发送回先前的ViewController

  29. 29

    Kotlin,将值设置为 TextView 使用回调接口

热门标签

归档