0
    dmap = new Tile[maxW][maxH];
    for (int y = 0; y < maxH; ++y)
        for (int x = 0; x < maxW; ++x)
            dmap[x][y] = new Tile();

尽管每个成员Tile只有一个int无论如何都设为 0,但速度很慢。我还没有为Tile(). 我可以改进还是应该回到 C++?

maxW而且maxH都是255,我的环境是安卓模拟器。

我不认为是这段代码再慢了。我的Log.i()语句从 LogCat 视图中消失了……我y在上面的初始化代码中为每个语句添加了一个。

4

2 回答 2

1

您不必使用对象初始化数组。默认情况下,它将包含空值,如果在您的情况下可以,您可以像这样保留它。

于 2012-07-02T09:50:16.373 回答
1

如果您希望每个数组元素都包含一个有效的对象,那么是的,您需要创建一个对象以进入每个数组元素。但是,根据您要实现的目标,可能会有所帮助的事情:

延迟初始化:您可以包装数组,并且仅在需要时创建 Tile,使数组大部分填充为空值。

移动你的抽象:可能有一个 TileMap 对象,而不是一个 Tile 对象数组,其中包含一个 2D 整数数组(不需要构造,默认为零),并让它返回给定 tile 的适当 Tile指数。

你说目前所有的 Tiles 都只包含一个 int。您是否希望具有相同 int 值的不同图块成为不同的对象?这里的大部分开销是创建新对象,而不是将其分配给数组索引。预先创建您的实例 - 或者可能使用 Tile 实例的枚举 - 将意味着不需要重复此开销。

于 2012-07-02T09:57:16.393 回答