Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 21.08.2010, 00:13
iillyyaa вне форума Посмотреть профиль Отправить личное сообщение для iillyyaa Найти все сообщения от iillyyaa
  № 1  
Ответить с цитированием
iillyyaa

Регистрация: Apr 2010
Сообщений: 147
По умолчанию Как правильно проверить наличие переменной ?

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

Код 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) {}
так работает всё, но мне кажется это не совсем верно..


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

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

Старый 21.08.2010, 02:53
-De- вне форума Посмотреть профиль Отправить личное сообщение для -De- Найти все сообщения от -De-
  № 2  
Ответить с цитированием
-De-
 
Аватар для -De-

блогер
Регистрация: Oct 2005
Адрес: Днепродзержинск - город Брежнева и других логопедов
Сообщений: 1,421
Записей в блоге: 4
Отправить сообщение для -De- с помощью ICQ Отправить сообщение для -De- с помощью Skype™
Дело в том, что элемента 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
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 3  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
Код AS3:
if (box_x_y[xx] && box_x_y[xx][yy])
UPD- не увидел выше..
а вообще срочно ищите в гугле as3 code convention
__________________
Отряд Котовскага


Последний раз редактировалось Котяра; 21.08.2010 в 02:59.
Старый 21.08.2010, 03:04
iillyyaa вне форума Посмотреть профиль Отправить личное сообщение для iillyyaa Найти все сообщения от iillyyaa
  № 4  
Ответить с цитированием
iillyyaa

Регистрация: Apr 2010
Сообщений: 147
спасибо, так работает..

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

Старый 21.08.2010, 05:19
MrPoma вне форума Посмотреть профиль Отправить личное сообщение для MrPoma Посетить домашнюю страницу MrPoma Найти все сообщения от MrPoma
  № 5  
Ответить с цитированием
MrPoma
 
Аватар для MrPoma

Регистрация: Jul 2006
Адрес: Питер
Сообщений: 2,083
Отправить сообщение для MrPoma с помощью Skype™
А вы попробуйте не использовать вложенные массивы :-)
__________________
жж | твттр | гглплс | фсбк | вкнткт | гтхб

Старый 21.08.2010, 05:54
Котяра вне форума Посмотреть профиль Отправить личное сообщение для Котяра Посетить домашнюю страницу Котяра Найти все сообщения от Котяра
  № 6  
Ответить с цитированием
Котяра
буду краток
 
Аватар для Котяра

модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
Отправить сообщение для Котяра с помощью ICQ Отправить сообщение для Котяра с помощью Skype™
2рома. матрица -
__________________
Отряд Котовскага

Старый 21.08.2010, 14:57
OwnerOfSuccuby вне форума Посмотреть профиль Отправить личное сообщение для OwnerOfSuccuby Найти все сообщения от OwnerOfSuccuby
  № 7  
Ответить с цитированием
OwnerOfSuccuby

Регистрация: Aug 2010
Сообщений: 44
Я слышал, что часто вроде масив когда создают - изначально забивают его какими то левыми значениями - чтобы потом было легче проверять - к примеру если в программе везде числа бльше 0 то ставят к примеру -1 , чтобы знать что ячейка пуста.

Старый 21.08.2010, 15:23
iillyyaa вне форума Посмотреть профиль Отправить личное сообщение для iillyyaa Найти все сообщения от iillyyaa
  № 8  
Ответить с цитированием
iillyyaa

Регистрация: Apr 2010
Сообщений: 147
OwnerOfSuccuby, массив может не содержать значений, а быть всего лишь именем квадрата или любого другого графического или ещё какого элемента..

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

Старый 21.08.2010, 15:23
Psycho Tiger вне форума Посмотреть профиль Отправить личное сообщение для Psycho Tiger Найти все сообщения от Psycho Tiger
  № 9  
Ответить с цитированием
Psycho Tiger
 
Аватар для Psycho Tiger

блогер
Регистрация: Jun 2005
Адрес: Toronto
Сообщений: 6,601
Записей в блоге: 17
undefined вполне справится с этой ситуацией, если массив ничем не забить =)

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

Старый 21.08.2010, 15:27
iillyyaa вне форума Посмотреть профиль Отправить личное сообщение для iillyyaa Найти все сообщения от iillyyaa
  № 10  
Ответить с цитированием
iillyyaa

Регистрация: Apr 2010
Сообщений: 147
Psycho Tiger, можно пример ? как разложить в одномерный ?

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

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

Создать новую тему Ответ Часовой пояс GMT +4, время: 11:13.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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