часть вопросов здесь пропадет, если авторы изучат алгоритмы и отладку до того, как задавать вопросы.
м классе программирования
Мне нужно создать игру Tiles с AS3 (например, Zelda).
На карте тайлы инициализируются черным в массиве, и после этого они меняются случайным образом каждый раз, когда левый пик песни достигает определенного значения.
Когда плитки меняются, мне нужно обновить массив с новым значением. На самом деле, я всегда получаю сообщение об ошибке # 1010: термин не определен и не имеет свойств.Вот как инициализируются плитки:
переменная
private var grid: MovieClip;
private var nbRow: int = 6;
private var nbCol: int = 12;
private var oneTiles: Tiles;
private var t: Tiles;
public var tMap: Array = [
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
];
Создание карты
private function createGrid(): void {
grid = new MovieClip();
addChild(grid);
for (var r: int = 0; r < nbRow; r++) {
for (var c: int = 0; c < nbCol; c++) {
t = new Tiles();
t.x = t.width * c;
t.y = t.height * r;
grid.addChild(t);
}
}
}
Установить плитки
private function displayTiles(): void {
var i: int = 0;
for (var r: int = 0; r < nbRow; r++) {
for (var c: int = 0; c < nbCol; c++) {
var t: Tiles;
t = Tiles(grid.getChildAt(i));
t.gotoAndStop(tMap[r][c]);
i++;
}
}
}
Эта функция вызывается каждый раз, когда значение leftpeak достигает значения
private function resetTiles(): void {
for (var i: int = 0; i < grid.numChildren; i++) {
oneTiles = grid.getChildAt(i) as Tiles;
oneTiles.getTiles();
//30% chance gotoAndStop(1) black tiles
//70% chance gotoAndStop(2) white tiles
}
}
Это источник проблемы: чтобы обновить массив, я добавил это в цикл for resetTiles (). Я всегда получаюОшибка # 1010: термин не определен и не имеет свойств. :
private var posX: uint = 0; //global
private var posY: uint = 0; //global
tMap[posX][posY] = oneTiles.getFrame();
if(posX == 11 && posY != 5){
posX = 0;
posY++;
}else if(posX == 11 && posY == 5){
posX = 0;
posY = 0;
}else{
posX++;
}
trace(posX);
trace(posY);
}
Так в чем же проблема? Обычно, с этим кодом, каждый раз, когда плитка изменяется, хорошая плитка в tMap должна обновляться.Я провел некоторое тестирование, и источником проблемы является линияtMap [posX] [posY] = oneTiles.getFrame (); Тем не менее, я не могу понять, почемуpublic function getFrame():void{
this.currentFrame;
}