PDA

Просмотр полной версии : Термин не определен и не имеет свойств.


razerw
19.06.2012, 10:17
Всем привет ;)
Я начинающий программист и как всегда бывает в таких случаях столкнулся с такой проблемой.

текст ошибки такой:

TypeError: Error #1010: Термин не определен и не имеет свойств.
at com.towerdefence::Universe/clearMapMask()[C:\Documents and Settings\moiseev\Рабочий стол\33\com\towerdefence\Universe.as:226]

а вот кусочек кода.



private function clearMapMask():void
{
// Создаем новый массив
_mapMask = [];
_mapMask.length = MAP_HEIGHT_MAX;

/////////////////////////////////////////////
//////////////////////////////////////

_f = MAP_HALF;
i = 0;
// Двигаемся по высоте карты
for (var ay:int = 0; ay < MAP_HEIGHT_MAX; ay++)
{
_mapMask[_i] = [];
_mapMask[_i].length = MAP_HALF;
_f -= MCELL_HALF;
_i += MAP_CELL_HALF;
i++;

// Двигаемся по ширине карты
for (var ax:int = 0; ax < i; ax++)
{
//Цикл определяет в какой период выкладывать плитку на убывание
if (_f > 0)
{
_r = _f;
_r += MAP_CELL_SIZE;
_mapMask[_i][_r] = STATE_CELL_FREE;// Вот на эту строку ругается
}
else
{
//trace(i);
for (var af:int = 0; af < ay; af++)
{
i--;

for (var ac:int = 0; ac < i; ac++)
{
_f += MCELL_HALF;
_mapMask[i][_f] = STATE_CELL_FREE;

}
}
}
}
}
}

Добавлено через 40 минут
Конкретно ругается на эту строку кода


_mapMask[_i][_r] = STATE_CELL_FREE;

udaaff
19.06.2012, 11:05
Код по-человечески тяжело оформить?

razerw
19.06.2012, 11:10
ну немножко криво) а в целом что скажите?

КорДум
19.06.2012, 11:57
Вы то i, то _i используете.

razerw
19.06.2012, 12:02
да i это одна переменная а _i это другая
обе равны нулю

-De-
19.06.2012, 12:15
STATE_CELL_FREE не определён, похоже.

razerw
19.06.2012, 12:18
он равен двум и определён как константа

KBAC
19.06.2012, 12:24
Вероятно в массиве _mapMask[_i] нет элемента с индексом [_r]

razerw
19.06.2012, 12:39
Вероятно в массиве _mapMask[_i] нет элемента с индексом [_r]

Тоесть вы хотете сказать что _r непередает значение в массив?
хотя в коде я обьевил, что оно есть и даже указал длинну массива

-De-
19.06.2012, 13:08
А, если во время выполнения, то таки да, _mapMask[_i] не определён.
_mapMask[_i] = []; - тут определяете _i-й элемент.
И строкой ниже увеличивается _i и с новым _i он уже не определён. И вообще-то после
_mapMask[_i].length = MAP_HALF; _mapMask[MAP_HALF] - не определён, последний который запелио - _mapMask[MAP_HALF - 1].

KBAC
19.06.2012, 13:11
-De- нашёл)

razerw
19.06.2012, 13:34
А, если во время выполнения, то таки да, _mapMask[_i] не определён.
_mapMask[_i] = []; - тут определяете _i-й элемент.
И строкой ниже увеличивается _i и с новым _i он уже не определён. И вообще-то после
_mapMask[_i].length = MAP_HALF; _mapMask[MAP_HALF] - не определён, последний который запелио - _mapMask[MAP_HALF - 1].

Точно точно, а как этого можно избежать, что бы после следующего _i происходила запись

-De-
19.06.2012, 14:10
Я не оч. понял, что значит "что бы после следующего _i происходила запись", но наверное надо писать после следующего _i.

razerw
19.06.2012, 14:26
Я не оч. понял, что значит "что бы после следующего _i происходила запись", но наверное надо писать после следующего _i.
Да я догадался что после, но если после следующего _i мне не надо что бы оно папало в массив

Добавлено через 12 минут
наверное не совсем информативно развернул вопрос.
Суть такова, в массив записывается изометрическая карта. Тоесть первый элемент массива в квадратных скобках подразумивает под собой что туда передается колличество шагов внис, тобишь по вертикали, а вот во второй длинна строк.
И получается что есть после каждого _i будет осуществляться запись в массив, у меня получится каша.

Wolsh
19.06.2012, 14:41
Видимо, инкремент _i надо вынести в шапку цикла
for (var ay:int = 0; ay < MAP_HEIGHT_MAX; ay++, _i += MAP_CELL_HALF)

razerw
19.06.2012, 14:45
точно ;)

Добавлено через 32 секунды
спасибо)

strangedk
19.06.2012, 18:59
ну немножко криво) а в целом что скажите?

ужасно. очень. никто не будет в таком коде разбираться, смотрите code conventions (http://sourceforge.net/adobe/flexsdk/wiki/Coding%20Conventions/) у adobe

razerw
20.06.2012, 17:52
что конкретно не нравится в моем коде? что строчки не ровно выстроены или что или коментариев не хватает?

in4core
20.06.2012, 19:05
1. Строчки не ровно
2. Названия переменных
3. Нет типизации

А вообще over9000 защита от взломщика у вас получается)))