Развитие игровой вспышки
Текущее время: Вс ноя 19, 2017 10:56 am

Часовой пояс: UTC + 3 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: Помогите с кодом
СообщениеДобавлено: Вс май 28, 2017 2:45 pm 
В сети

Зарегистрирован: Вт окт 12, 2010 1:24 am
Сообщений: 1164
Откуда: Saint-Petersburg
У меня создается сетка тайлов. 42 квадрата.
Код:
for (var i3 = 0; i3 < 7; i3++) {
   for (var t3 = 0; t3 < 6; t3++) {
      var tmp_tile2: tile = new tile;

Код:
tmp_tile2.position_n = allpositions
      tmp_tile2.tile_t = ct;
      tmp_tile2.x = def_tile2_x;
      tmp_tile2.y = def_tile2_y;
      var rand_10 = Math.floor(Math.random() * 3);

      tiles_group.addChild(tmp_tile2);
      world2.push(tmp_tile2);
      tmp_tile2.addEventListener(TouchEvent.TOUCH_BEGIN, tmp_tile2f);
      newlevelarr.push(ct);


Затем в одну из клеток я пихаю портал.
Код:
defineportal();
function defineportal() {
   var random_4 = Math.floor(Math.random() * 42);
   world2[random_4].tile_t = 2;
   world2[random_4].gotoAndStop(2);
   world2[random_4].hp = 4;
   world2[random_4].position_n = random_4;

}


Клик
Код:
function tmp_tile2f(event: Event): void {
   var target: tile = event.target as tile
   
   if (target == null) {
      trace("это вообще не дверь походу");
   } else {trace(target.tile_t);
      if (target.tile_t == 0) {

      } else if (target.tile_t == 1) {
         target.hp -= str;
         sound_respickup.play(0, 1)
         if (target.hp <= 0) {
            target.tile_t = 0;
            target.gotoAndStop(1);
         }
      } else if (target.tile_t == 2) {
         target.hp -= str;
         
         sound_respickup.play(0, 1)
         if (target.hp <= 0) {
            target.tile_t=3;
            trace(target.tile_t);
            target.gotoAndStop(4);

         }
      } else if (target.tile_t == 3) {
         trace(target.hp);
         sound_respickup.play(0, 1)
         podlevel += 1;
         gotoAndStop(11);
      }
      level_tiles[podlevel][target.position_n] = target.tile_t;
   }
}


Так вот при клике когда target.tile_t = 2 и target.hp <= 0 должно заменятся на target.tile_t=3 и оно меняется в трейсе но нажимаю еще раз и (должно gotoAndStop(11);) а выходит target = null
Все перепробовал - не понимаю почему так.
Причем когда target.tile_t = 1 переход на target.tile_t = 0 работает ок


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Помогите с кодом
СообщениеДобавлено: Вс май 28, 2017 3:16 pm 
Не в сети
Аватар пользователя

Зарегистрирован: Ср ноя 02, 2011 9:23 am
Сообщений: 383
На твоем месте я бы сначала отрефакторил код, потому что эту писанину трудно читать.

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

Когда tile_t == 3 ты увеличиваешь podlevel, а при tile_t == 1 этого не делаешь и когда обращаешься level_tiles[podlevel][target.position_n] = target.tile_t, то вываливаешься из массива.


Вернуться наверх
 Профиль Отправить e-mail  
 
 Заголовок сообщения: Re: Помогите с кодом
СообщениеДобавлено: Вс май 28, 2017 3:39 pm 
В сети

Зарегистрирован: Вт окт 12, 2010 1:24 am
Сообщений: 1164
Откуда: Saint-Petersburg
tmp_tile.mouseChildren = false;

Семен семеныч забыл, заработало.


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа [ Летнее время ]


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


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

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB