我这里有一个非常复杂的问题,非常感谢任何帮助。 首先,我使用本教程完成所有这些: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中实现这一点,这样我们就可以通过简单地使用阵列。
答案 0 :(得分:0)
在AS3中,你的for循环应该看起来像这样
for (var y:int = 0; y <= 10; y++) {
for (var x:int = 0; x <= 11; x++) {
此外,你不必在brickikx等之前提及'this'。
我不知道是否有帮助