什么';在javascript中加载和稍后引用纹理块的最有效方法是什么?
最近,我开始开发一个简单的platformer游戏,作为学习pixi.js和javascript中面向对象的一种方式。目前,我正在一个文本文件中保存级别,如下所示:什么';在javascript中加载和稍后引用纹理块的最有效方法是什么?,javascript,class,object,pixi.js,Javascript,Class,Object,Pixi.js,最近,我开始开发一个简单的platformer游戏,作为学习pixi.js和javascript中面向对象的一种方式。目前,我正在一个文本文件中保存级别,如下所示: 11111111111 10001200001 10601201001 10104001551 13331111111 其中每个数字对应不同的瓷砖,例如1=实心,3=尖峰,5=开关等 由于每个磁贴都有自己的、通常是唯一的属性,我如何构造代码,以便创建和引用磁贴尽可能简单和容易?每个磁贴都应该有自己的构造函数,还是我应该只创建一个包
11111111111
10001200001
10601201001
10104001551
13331111111
其中每个数字对应不同的瓷砖,例如1=实心,3=尖峰,5=开关等
由于每个磁贴都有自己的、通常是唯一的属性,我如何构造代码,以便创建和引用磁贴尽可能简单和容易?每个磁贴都应该有自己的构造函数,还是我应该只创建一个包含大量参数的构造函数?每个渲染块应该是它自己的对象,还是有更简单的方法来引用每个分片
如果我需要提供更多信息,请务必告诉我。谢谢 顺便说一句,在你的级别使用ascii字符,这样更容易阅读 就我个人而言,我为每一个非常不同的tile使用一个类,但是如果您创建一个与另一个类似的tile,那么只需创建一个与这两个类似的类,这些类似的tile可以是类扩展。例如,我有一个
敌人类,它有许多子类:敌人类型。我有一个叫做Basic的敌人的子类,它是一个基本敌人,但我也有一个叫做机关枪的子类,它射速更快
要读取液位数据,只需使用开关盒:
for(var y = 0; y < levels[level_number]; y++) {
for(var x = 0; x < levels[level_number][y]; x++) {
switch(levels[level_number][y][x]) {
case "#": floor.push(new Floor(x * 20, y * 20)); break;
case "O": coins.push(new Coin(x * 20, y * 20)); break;
case "@": player.y = (x * 20) - 1; player.x = (y * 20) - 1; break;
case "&": monsters.push(new Basic(x * 20, y * 20)); break;
case "%": monsters.push(new Machine_Gun(x * 20, y * 20)); break;
default: break; // something else like air.
}
}
}
就像那样,您可以轻松创建级别
levels = [
[
"##########", // MUCH easier to understand (for me at least)
"#OO %#",
"### ##",
"# @ &#",
"##########"
], [
"###############",
"# & #",
"# ####",
"# #",
"# ### #",
"# O #",
"# @ ####",
"#### #",
"#O % % #",
"###############"
]
];