Javascript 如何将图像分成几个部分?Tilemap
我正在制作一个游戏,在这个游戏中,世界地图将由称为瓷砖的块创建。所有平铺都保存在一个PNG文件中,类似于下面发布的文件: 我需要分割这个图像,并将所有这些块分别存储在内存中,这样我就可以按所需顺序在屏幕上绘制这些瓷砖Javascript 如何将图像分成几个部分?Tilemap,javascript,Javascript,我正在制作一个游戏,在这个游戏中,世界地图将由称为瓷砖的块创建。所有平铺都保存在一个PNG文件中,类似于下面发布的文件: 我需要分割这个图像,并将所有这些块分别存储在内存中,这样我就可以按所需顺序在屏幕上绘制这些瓷砖 最好的方法是什么,这样它在每个web浏览器中都能正常工作?有一些有用的框架,如。但是,如果您希望避免使用画布或大型框架,也可以使用CSS .tile{ 宽度:64px; 高度:64px; 背景图片:url(http://i.stack.imgur.com/TO5jy.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)
和背景位置:-左上
请阅读背景位置
,以便更好地理解。()
然后,当用户单击互动程序时,您所要做的就是不断更改
位置