什么';在javascript中加载和稍后引用纹理块的最有效方法是什么?

什么';在javascript中加载和稍后引用纹理块的最有效方法是什么?,javascript,class,object,pixi.js,Javascript,Class,Object,Pixi.js,最近,我开始开发一个简单的platformer游戏,作为学习pixi.js和javascript中面向对象的一种方式。目前,我正在一个文本文件中保存级别,如下所示: 11111111111 10001200001 10601201001 10104001551 13331111111 其中每个数字对应不同的瓷砖,例如1=实心,3=尖峰,5=开关等 由于每个磁贴都有自己的、通常是唯一的属性,我如何构造代码,以便创建和引用磁贴尽可能简单和容易?每个磁贴都应该有自己的构造函数,还是我应该只创建一个包

最近,我开始开发一个简单的platformer游戏,作为学习pixi.js和javascript中面向对象的一种方式。目前,我正在一个文本文件中保存级别,如下所示:

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     %   %  #",
        "###############"

    ]

];