Javascript 是否仍然需要替换某些块数据以添加图像?

Javascript 是否仍然需要替换某些块数据以添加图像?,javascript,Javascript,我正在制作一个JS游戏,主要是让玩家抓住篮子里掉落的食物 目前,我将食物抽象为彩色的下落块,以便运行游戏的底层。但我很难用图像替换某些块属性,而不是显示彩色的方形块 部分代码来自教程以帮助我入门,源链接如下: - 同样,同样的食物块问题也可以修复替换主块的篮子图像 我还应该链接食物+篮子的图像 : : 我对堆栈溢出和编程也很陌生,所以我愿意接受您可能有的反馈和建议 下面是我为添加食物图像而编写的脚本,它将替换块。这可以在HTML文档中看到(我暂时放置)。 var canvas=docume

我正在制作一个JS游戏,主要是让玩家抓住篮子里掉落的食物

目前,我将食物抽象为彩色的下落块,以便运行游戏的底层。但我很难用图像替换某些块属性,而不是显示彩色的方形块

部分代码来自教程以帮助我入门,源链接如下: -

同样,同样的食物块问题也可以修复替换主块的篮子图像

我还应该链接食物+篮子的图像

  • :

  • :

我对堆栈溢出和编程也很陌生,所以我愿意接受您可能有的反馈和建议

下面是我为添加食物图像而编写的脚本,它将替换块。这可以在HTML文档中看到(我暂时放置)。

var canvas=document.getElementById(“js/FoodCatcher.js”);
//为对象绘制图像
函数init(){
var image=document.getElementById('SourceImage');
canvas=document.getElementById('canvas');
context=canvas.document.getContext('2d');
绘图图像(图像);
}
函数drawImage(图像){
canvas.width=image.width;
canvas.height=image.height;
drawImage(image,0,0);
}
addEventListener('load',init);
//为篮子对象绘制篮子
函数init(){
var image=document.getElementById('BasketImage');
canvas=document.getElementById('canvas');
context=canvas.document.getContext('2d');
绘图图像(图像);
}
函数drawImage(图像){
canvas.width=image.width;
canvas.height=image.height;
drawImage(image,0,0);
}

总而言之,我建议您使用Pixi.js这样的框架来创建游戏,但如果您是来学习基础知识的,我会帮助您

我猜你想画图像而不是简单的块。这包括3个步骤:

1.将数据添加到blockData 我们需要将图像的数据添加到块中。这可以是base64数据url(例如,您可以使用网站进行此:)或图像链接

var blockData = [
   ['width', 100],
   ['height', 100],
   ['imageUrl', 'dataUrlOrImageUrl']
]
2.加载图像 在初始化阶段,通过使用隐藏图像并设置src属性加载图像

Block.prototype.initImage = function () {
  this.image = new window.Image();
  // the onload callback will be run once the image is loaded
  // use the onload callback if you want to avoid flicker
  // this.onload = function(){alert('image loaded');}
  this.image.src = this.imageUrl;
}
当然,您必须以某种方式调用函数。我不想深入讨论回调的主题,所以我没有使用onload回调,这将导致在图像完全加载之前呈现空白图像

3.使用图像 然后,您可以像在html测试页面中那样绘制图像

Block.prototype.draw = function (context) {
   // I'm guessing the position and the context here,
   // but the first parameter should be the image, created in initImage
   context.drawImage(this.image, this.x, this.y);
}

总而言之,我建议您使用Pixi.js这样的框架来创建游戏,但如果您是来学习基础知识的,我会在这里帮助您

我猜你想画图像而不是简单的块。这包括3个步骤:

1.将数据添加到blockData 我们需要将图像的数据添加到块中。这可以是base64数据url(例如,您可以使用网站进行此:)或图像链接

var blockData = [
   ['width', 100],
   ['height', 100],
   ['imageUrl', 'dataUrlOrImageUrl']
]
2.加载图像 在初始化阶段,通过使用隐藏图像并设置src属性加载图像

Block.prototype.initImage = function () {
  this.image = new window.Image();
  // the onload callback will be run once the image is loaded
  // use the onload callback if you want to avoid flicker
  // this.onload = function(){alert('image loaded');}
  this.image.src = this.imageUrl;
}
当然,您必须以某种方式调用函数。我不想深入讨论回调的主题,所以我没有使用onload回调,这将导致在图像完全加载之前呈现空白图像

3.使用图像 然后,您可以像在html测试页面中那样绘制图像

Block.prototype.draw = function (context) {
   // I'm guessing the position and the context here,
   // but the first parameter should be the image, created in initImage
   context.drawImage(this.image, this.x, this.y);
}

请将其分解为一个较小的示例,只关注所讨论的问题。我怀疑您想要使用context.getImageData()和context.putImageData()。请将其分解为一个较小的示例,仅关注所讨论的问题。我怀疑您想要使用context.getImageData()和context.putImageData()。