Javascript 如何将图像分成几个部分?Tilemap

Javascript 如何将图像分成几个部分?Tilemap,javascript,Javascript,我正在制作一个游戏,在这个游戏中,世界地图将由称为瓷砖的块创建。所有平铺都保存在一个PNG文件中,类似于下面发布的文件: 我需要分割这个图像,并将所有这些块分别存储在内存中,这样我就可以按所需顺序在屏幕上绘制这些瓷砖 最好的方法是什么,这样它在每个web浏览器中都能正常工作?有一些有用的框架,如。但是,如果您希望避免使用画布或大型框架,也可以使用CSS .tile{ 宽度:64px; 高度:64px; 背景图片:url(http://i.stack.imgur.com/TO5jy.png);

我正在制作一个游戏,在这个游戏中,世界地图将由称为瓷砖的块创建。所有平铺都保存在一个PNG文件中,类似于下面发布的文件:

我需要分割这个图像,并将所有这些块分别存储在内存中,这样我就可以按所需顺序在屏幕上绘制这些瓷砖


最好的方法是什么,这样它在每个web浏览器中都能正常工作?

有一些有用的框架,如。但是,如果您希望避免使用画布或大型框架,也可以使用CSS

.tile{
宽度:64px;
高度:64px;
背景图片:url(http://i.stack.imgur.com/TO5jy.png);
浮动:左;
}
瓷砖地板{
背景位置:0px 0px;
}
.tile.tile-wall{
背景位置:-64px 0px;
}
.tile.tile-blue{
背景位置:-192px-192px;
}

有一些有用的框架,如。但是,如果您希望避免使用画布或大型框架,也可以使用CSS

.tile{
宽度:64px;
高度:64px;
背景图片:url(http://i.stack.imgur.com/TO5jy.png);
浮动:左;
}
瓷砖地板{
背景位置:0px 0px;
}
.tile.tile-wall{
背景位置:-64px 0px;
}
.tile.tile-blue{
背景位置:-192px-192px;
}

看看这个例子,也许这会对你有所帮助

(函数($,窗口){
变量_默认值={
x:3,//在x轴上平铺
y:3,//y轴上的平铺
差距:2
};
$.fn.splitInTiles=函数(选项){
var o=$.extend({},_默认值,选项);
返回此值。每个(函数(){
var$container=$(此),
宽度=$container.width(),
高度=$container.height(),
$img=$container.find('img'),
n_tiles=o.x*o.y,
包装=[],$wrapps;
对于(var i=0;i
看看这个例子,也许这会对你有所帮助

(函数($,窗口){
变量_默认值={
x:3,//在x轴上平铺
y:3,//y轴上的平铺
差距:2
};
$.fn.splitInTiles=函数(选项){
var o=$.extend({},_默认值,选项);
返回此值。每个(函数(){
var$container=$(此),
宽度=$container.width(),
高度=$container.height(),
$img=$container.find('img'),
n_tiles=o.x*o.y,
包装=[],$wrapps;
对于(var i=0;i
只需查看画布的drawImage函数:当使用其所有参数时,allready允许有选择地复制图像的一部分

var tileIndex   = 3; // index of the tile within the texture image 
var tileWidth=16, tileHeight = 16;
var tilePerLine = 6;
var offsetX     = (tileIndex % tilePerLine)*tileWidth;  
var offsetY     = Math.floor(tileIndex / tilePerLine) * tileHeight;

ctx.drawImage(thisImage, offsetX, offsetY, tileWidth, tileHeight, x, y);

只需看看canvas的drawImage函数:当使用其所有参数时,allready允许有选择地复制图像的一部分

var tileIndex   = 3; // index of the tile within the texture image 
var tileWidth=16, tileHeight = 16;
var tilePerLine = 6;
var offsetX     = (tileIndex % tilePerLine)*tileWidth;  
var offsetY     = Math.floor(tileIndex / tilePerLine) * tileHeight;

ctx.drawImage(thisImage, offsetX, offsetY, tileWidth, tileHeight, x, y);

您可以使其上的地图支持TMX地图格式,然后使用此处描述的一些HTML渲染在游戏中渲染。您必须稍微滚动一下才能找到HTML列表。

您可以使其上的地图支持TMX地图格式,然后使用此处描述的一些HTML渲染在游戏中渲染滚动一点以查找HTML列表。

您可以使用css的“图像精灵”概念来完成此操作

如果您的游戏有4 x 4网格,那么您必须创建16个
,每个div设置
背景图像:url(image.jpg)
背景位置:-左上

请阅读
背景位置
,以便更好地理解。()


然后,您所要做的就是在用户单击瓷砖时不断更改
位置。

您可以使用css的“图像精灵”概念来完成此操作

如果您的游戏有4 x 4网格,那么您必须创建16个
,每个div设置
背景图像:url(image.jpg)
背景位置:-左上

请阅读
背景位置
,以便更好地理解。()

然后,当用户单击互动程序时,您所要做的就是不断更改
位置