0

我在这里有一个非常复杂的问题,非常感谢任何帮助。首先,我通过使用本教程来完成这一切:http ://www.emanueleferonato.com/2007/05/21/how-to-load-levels-in-a-flash-tile-based-game/ 问题是,教程中的代码在 AS2 中,而我们需要将其转换为 AS3 以便能够为 AIR 调试它。所以我们这里的主要问题是执行 AS2 中的方法,以相同的方式执行所有操作,但在 AS3 中. 我们基本上要做的是,我们正在尝试实现一个非常智能的系统,通过使用数组从代码中构建级别(在教程中查找)。根据每个数组中的整数值,您可以获得不同的类型块以及一个空的。这是AS2代码:

 level = new Array();
 level[0] = new Array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
 level[1] = new Array(2, 2, 2, 2, 2, 2, 2, 2, 2, 2);
 level[2] = new Array(3, 3, 3, 3, 3, 3, 3, 3, 3, 3);
 for (y = 0; y <= 2; y++) {
     for (x = 0; x <= 9; x++) {
         place_brick = attachMovie("brick", "brick_" + _root.getNextHighestDepth(),
         _root.getNextHighestDepth(), {
             _x: x * 50,
             _y: y * 15
         });
         place_brick.gotoAndStop(level[y][x]);
     }
 }

你看,我们有一个砖类,不同的瓷砖由不同的框架索引。根据 int 值,你有一个特定的结果。这在 AS3 中不起作用。这是 AS3 代码:

var level: Array = new Array();
var max: int = 0;
var min: int = 0;
level[0] = new Array(1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0);
level[1] = new Array(0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1);
level[2] = new Array(1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 1);
level[3] = new Array(1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1);
level[4] = new Array(1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
level[5] = new Array(1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1);
level[6] = new Array(1, 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 1);
level[7] = new Array(1, 0, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1);
level[8] = new Array(1, 0, 0, 1, 0, 1, 1, 1, 0, 1, 0, 1);
level[9] = new Array(1, 1, 0, 1, 0, 1, 0, 0, 0, 1, 0, 1);
level[10] = new Array(0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1);
for (y = 0; y <= 10; y++) {
    for (x = 0; x <= 11; x++) {
        if (level[y][x] == 1) {
            var brickik: brick = new brick();
            addChild(brickik);
            max += 80;
            this.brickik.x += max;
        }
        if (level[y][x] == 0) {
            max += 80;
        }
    }
}

我们遇到的问题是要找到一种聪明的方法来对整个事情进行编程,就像在 AS2 中完成的那样。我们如何在 AS3 中实现这一点,以便我们可以通过简单地使用数组将瓷砖放置在任何我们想要的任何地方。

4

1 回答 1

0

在 AS3 中,您的 for 循环应该看起来像这样

for (var y:int = 0; y <= 10; y++) {
for (var x:int = 0; x <= 11; x++) {

此外,您不必在brickikx 等之前提及“this”。

我不知道这是否有帮助

于 2013-08-11T20:15:30.177 回答