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

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

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

Регистрация: Aug 2010
Сообщений: 282
По умолчанию Столкновение мувиков

Всем привет,
Прошу помощи.

На сцене у меня несколько мувиков с классом "classA"
Загнал их в массив:
Код AS3:
var arrayA: Array = new Array();
for (var i = 0; i < numChildren; i++) {
	if (getChildAt(i) is classA) {
		arrayA.push(getChildAt(i));
	}
}
сделал им движение
хочу проверить каждый из мувиков на столкновение:
привесил на ENTER_FRAME это
Код AS3:
function EnterFr():void
{
  var i2:Number = arrayA.length;
  while (i2--) 
  {
	var curSumbolA:classA=arrayA[i2];
	proverka2(curSumbolA);
  }
}
Далее пытаюсь проверить на столкновение:
Код AS3:
function proverka2(curSumbolA): void
{
	for (var i:int=0;i<arrayA.length;i++)
	{
		if (curSumbolA.hitTestObject(arrayA[i]))
		{
			trace("пересечение");
		}
	}
}
но что-то не так, получается объекты изначально пересекаются.

Старый 26.09.2014, 19:24
samana вне форума Посмотреть профиль Отправить личное сообщение для samana Найти все сообщения от samana
  № 2  
Ответить с цитированием
samana
 
Аватар для samana

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Может они действительно изначально пересекаются?
И ещё конечно нужно добавить проверку, чтобы объект не просчитывал пересечение самим с собой.
Либо составить другой цикл, который просто не будет делать дублированных проверок. Я о том, что сейчас у вас например идёт проверка объектов 1 и 5, а потом проверка объектов 5 и 1 - что является одним и тем же.
Более подходящий вариант для данной задачи:
Код AS3:
for (var i:int = 0; i < arr.length; i++) 
{
	for (var j:int = i+1; j < arr.length; j++) 
	{
		if( arr[i].hitTestObject(arr[j])) trace ("пересечение объектов", i, "и", j)
	}
}


Последний раз редактировалось samana; 26.09.2014 в 20:50.
Создать новую тему Ответ Часовой пояс GMT +4, время: 12:59.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Теги
столкновение

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

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


 


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


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