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

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

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

Регистрация: Jun 2014
Сообщений: 558
По умолчанию Периодическая ошибка из за нулевой ссылки на объект

Доброго времени суток
Периодически вываливается ошибка
TypeError: Error #1009: Cannot access a property or method of a null object reference.
О причине я догадываюсь, нов голову не приходит решение.
Думаю проблема в том, что я запуская два цикла while, и когда хиттест вызывает функция "fn_enemy_1_damage" и там выполняется условие, необходимые для удаления объекта, то в цикле происходит сбой, т.к. он вызывает удалённый объект. В голову так и не приходит, как исправить ошибку
Код AS3:
function fn_hittest(): void {
	var i: Number = enemy_1_Array.length;
	while (i--) {
		var j: Number = FireArray.length;
		while (j--) {
			var enemy_1: enemy_1_mc = enemy_1_Array[i];
			var boll_st: boll_mc = FireArray[j];
			if (enemy_1.hitTestObject(boll_st)) {
				fn_expl(boll_st.x, boll_st.y);
				if (boll_st.tip == 1) {
					fn_point(500);
					fn_enemy_1_damage(i, 15);
				}
				if (boll_st.tip == 2) {
					fn_point(100);
					fn_enemy_1_damage(i, 10);
				}
				removeChild(boll_st);
				FireArray.splice(j, 1);
			}
		}
	}
}
 
//жизни врагов enemy_1_Array: Array = new Array();
function fn_enemy_1_damage(i: Number, damage: Number): void {
	var enemy_1: enemy_1_mc = enemy_1_Array[i];
	enemy_1.life = enemy_1.life - damage;
	if (enemy_1.life <= 0) {
		removeChild(enemy_1_Array[i]);
		removeChild(vihlop_l_enemy_1_Array[i]);
		removeChild(vihlop_r_enemy_1_Array[i]);
		enemy_1_Array.splice(i, 1);
		vih_l_enemy_1_Array.splice(i, 1);
		vih_r_enemy_1_Array.splice(i, 1);
	}
}


Последний раз редактировалось neonoviiwolf; 02.11.2014 в 05:46.
Создать новую тему   Часовой пояс GMT +4, время: 07:04.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

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


 


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


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