如何使用数组在AS3中加载切片级别

时间:2013-08-11 15:06:43

标签: actionscript-3 flash air actionscript-2

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

1 个答案:

答案 0 :(得分:0)

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

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

此外,你不必在brickikx等之前提及'this'。

我不知道是否有帮助