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