Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Как правильно проверить наличие переменной ? (http://www.flasher.ru/forum/showthread.php?t=143621)

iillyyaa 21.08.2010 00:13

Как правильно проверить наличие переменной ?
 
начинал делать через простую проверку

Код AS3:

if (что_то) { }

к примеру проверить есть ли спрайт, точнее элемент из массива..

Код AS3:

if (box_x_y[xx][yy]) {

но столкнулся с некой проблемой, если создаётся массив, но некоторые элементы не создаются вовсе, то проверка глючит и ничего не работает :)

сделал всё через

Код AS3:

try


вот что было, и что сделал..

Код AS3:

if (box_x_y[xx][yy]) {
removeChild(box_x_y[xx][yy]);
delete box_x_y[xx][yy];
}

Код AS3:

try {
//if (box_x_y[xx][yy]) {
removeChild(box_x_y[xx][yy]);
delete box_x_y[xx][yy];
}
catch (error:Error) {}

так работает всё, но мне кажется это не совсем верно..


а проверка делается, т.к. этот элемент мог быть или уже удалён или не создан вообще..

так вот как правильно проверить ? :umnik2:

-De- 21.08.2010 02:53

Дело в том, что элемента box_x_y[xx] может не быть. Тогда при попытке доступа к его любому элементу (т.е. (box_x_y[xx])[yy]) возникает ошибка доступа. Т.е. надо проверять проверять наличие не только box_x_y[xx][yy] но и перед этим наличие box_x_y[xx]. Если у вас гарантированно box_x_y[xx] либо нет, либо массив и box_x_y[xx][yy] либо нет либо то, для чего можно безбоязненно вызвать removeChild, то проверка вот например.
Код AS3:

if(box_x_y[xx] && box_x_y[xx][yy]) {


Котяра 21.08.2010 02:56

Код AS3:

if (box_x_y[xx] && box_x_y[xx][yy])

UPD- не увидел выше..
а вообще срочно ищите в гугле as3 code convention

iillyyaa 21.08.2010 03:04

спасибо, так работает.. :drinks:

не всё логично в языке.. (покрайней мере для меня :wacko:)

MrPoma 21.08.2010 05:19

А вы попробуйте не использовать вложенные массивы :-)

Котяра 21.08.2010 05:54

2рома. матрица -

OwnerOfSuccuby 21.08.2010 14:57

Я слышал, что часто вроде масив когда создают - изначально забивают его какими то левыми значениями - чтобы потом было легче проверять - к примеру если в программе везде числа бльше 0 то ставят к примеру -1 , чтобы знать что ячейка пуста.

iillyyaa 21.08.2010 15:23

OwnerOfSuccuby, массив может не содержать значений, а быть всего лишь именем квадрата или любого другого графического или ещё какого элемента..

MrPoma, забавно, а как нарисовать шахматную доску к примеру без вложенного массива ?

Psycho Tiger 21.08.2010 15:23

undefined вполне справится с этой ситуацией, если массив ничем не забить =)

Добавлено через 1 минуту
iillyyaa, двумерный массив можно разложить в одномерный. Но Mr Poma минус от меня, я не вижу ничего плохого даже во вложенных векторах.

iillyyaa 21.08.2010 15:27

Psycho Tiger, можно пример ? как разложить в одномерный ?

было поле 5х5, добавляем строку или столбец... как изменится массив ? или удаляем 3 столбец..

а массив то может быть не только двумерным, но и трёхмерным и т.д.


Часовой пояс GMT +4, время: 12:05.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.