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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 22.11.2013, 13:21
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 11  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Все верно.
Простой обход по массиву с помощью двух циклов отражает количество всех размещений с возвратом.
Где n равен длине массива, а k равен 2, тк размещение при проверка у нас -- из двух элементов.
Обсчет идет таким образом:
проверка столкновения A с B
проверка столкновения B с A

Нас же в этой задаче интересует количество всех сочетаний.
И, например, вот такой код:

Код AS3:
var array : Array = [1,2,3,4,5,6,7,8,9,10];
var numItems : int = array.length;
 
for(var i : int = 0; i < numItems; i++)
{
	var itemA : int = array[i];
	for(var j : int = i + 1; j < numItems; j++)
	{
		var itemB : int = array[j];
		trace("Столкновение " + itemA + " и " + itemB);
	}
}

Код:
Столкновение 1 и 2
Столкновение 1 и 3
Столкновение 1 и 4
Столкновение 1 и 5
Столкновение 1 и 6
Столкновение 1 и 7
Столкновение 1 и 8
Столкновение 1 и 9
Столкновение 1 и 10
Столкновение 2 и 3
Столкновение 2 и 4
Столкновение 2 и 5
Столкновение 2 и 6
Столкновение 2 и 7
Столкновение 2 и 8
Столкновение 2 и 9
Столкновение 2 и 10
Столкновение 3 и 4
Столкновение 3 и 5
Столкновение 3 и 6
Столкновение 3 и 7
Столкновение 3 и 8
Столкновение 3 и 9
Столкновение 3 и 10
Столкновение 4 и 5
Столкновение 4 и 6
Столкновение 4 и 7
Столкновение 4 и 8
Столкновение 4 и 9
Столкновение 4 и 10
Столкновение 5 и 6
Столкновение 5 и 7
Столкновение 5 и 8
Столкновение 5 и 9
Столкновение 5 и 10
Столкновение 6 и 7
Столкновение 6 и 8
Столкновение 6 и 9
Столкновение 6 и 10
Столкновение 7 и 8
Столкновение 7 и 9
Столкновение 7 и 10
Столкновение 8 и 9
Столкновение 8 и 10
Столкновение 9 и 10
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.


Последний раз редактировалось ChuwY; 22.11.2013 в 13:33.
Старый 23.11.2013, 02:58
shmaser вне форума Посмотреть профиль Отправить личное сообщение для shmaser Найти все сообщения от shmaser
  № 12  
Ответить с цитированием
shmaser
 
Аватар для shmaser

Регистрация: Aug 2010
Сообщений: 22
ChuwY, верно, если необходимо проверять столкновения каждого с каждым, вполне сгодится и один массив, но artem2033 спрашивал о двух массивах объектов, где столкновения проверяются только между объектами разных массивов. artem2033, код ALeXVoz и Hauts должен работать правильно, если массивы не попутали.

Старый 23.11.2013, 18:34
artem2033 вне форума Посмотреть профиль Отправить личное сообщение для artem2033 Найти все сообщения от artem2033
  № 13  
Ответить с цитированием
artem2033

Регистрация: Nov 2013
Сообщений: 75
Код AS3:
private function createJoint():void
{
	var joints:Array = new Array();
	var objForJoints:Array = new Array();
	//var obj:Array = new Array();
 
	for (var i:int = 0; i < lvl.numChildren; i++) 
	{
		switch(lvl.getChildAt(i).name)
		{
			case "Box_Dynamic":
				{
					objForJoints.push(lvl.getChildAt(i));
					break;
				}
			case "Box_Static":
				{
					objForJoints.push(lvl.getChildAt(i));
					break;
				}
			case "Joint":
			        {
					joints.push(lvl.getChildAt(i));
					break;
			        }
		         }
	          }
 
	for (var j:int = 0; j < joints.length; j++)
	{
		for (i = 0; i < objForJoints.length; i++) 
		{			
			if (objForJoints[i].hitTestPoint(joints[j].x, joints[j].y, false))
			{	
				trace("Столкновение " + i + " и " + j);
			}
		}
	}		
}
вот скрин:
http://keep4u.ru/full/2cdebe7f48345c...7d67bf620.html
А мне нужно чтобы вывел значения без повторений.


Последний раз редактировалось artem2033; 23.11.2013 в 19:13.
Старый 23.11.2013, 20:12
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 14  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
Вам уже ответили выше.
Код AS3:
for(var j : int = 0; j < joints.length; j++)
{
	for(var i : int = j + 1; i < objForJoints.length; i++)
	{
		if (objForJoints[i].hitTestPoint(joints[j].x, joints[j].y, false))
		{	
			trace("Столкновение " + i + " и " + j);
		}
	}
}


Последний раз редактировалось MikroAcse; 23.11.2013 в 20:28.
Старый 23.11.2013, 20:25
artem2033 вне форума Посмотреть профиль Отправить личное сообщение для artem2033 Найти все сообщения от artem2033
  № 15  
Ответить с цитированием
artem2033

Регистрация: Nov 2013
Сообщений: 75
Я скрин вам показал и там в выводе он 2 раза повторил одинаковые значения а мне нужно только 1 раз.

Старый 23.11.2013, 20:34
MikroAcse вне форума Посмотреть профиль Отправить личное сообщение для MikroAcse Найти все сообщения от MikroAcse
  № 16  
Ответить с цитированием
MikroAcse
 
Аватар для MikroAcse

Регистрация: Feb 2012
Сообщений: 1,540
Специально для Вас открываю FlashDevelop, копипащу туда код и, о чудо!, объекты не повторяются:
Код AS3:
var joints:Array = [0, 1, 2, 3];
var objForJoints:Array = [0, 1, 2, 3];
 
for(var j : int = 0; j < joints.length; j++)
{
	for(var i : int = j + 1; i < objForJoints.length; i++)
	{
		trace(i + " и " + j);
	}
}
Цитата:
1 и 0
2 и 0
3 и 0
2 и 1
3 и 1
3 и 2
Код AS3:
var joints:Array = [0, 1];
var objForJoints:Array = [0, 1];
 
for(var j : int = 0; j < joints.length; j++)
{
	for(var i : int = j + 1; i < objForJoints.length; i++)
	{
		trace(i + " и " + j);
	}
}
Цитата:
1 и 0

Старый 23.11.2013, 21:22
artem2033 вне форума Посмотреть профиль Отправить личное сообщение для artem2033 Найти все сообщения от artem2033
  № 17  
Ответить с цитированием
artem2033

Регистрация: Nov 2013
Сообщений: 75
ну да с trace работает нормально но если вот так(objForJoints[i].hitTestPoint(joints[j].x, joints[j].y, false)) то уже нет

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Я создал прототип вашего проекта (судя по скрину и коду). Но у меня работало всё корректно.
Сделайте упрощённый исходник и покажите лучше, а то вообще не понять, почему у вас не работает правильно.

Старый 23.11.2013, 22:36
artem2033 вне форума Посмотреть профиль Отправить личное сообщение для artem2033 Найти все сообщения от artem2033
  № 19  
Ответить с цитированием
artem2033

Регистрация: Nov 2013
Сообщений: 75
http://fi1les.m1ail.r1u/8C85570D3E9F...F0B306C4E51998 -ссылка в ней as3 файл, fla и nape. звёздочек. Единицы уберёте из ссылки, кроме последней.

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Просит пароль перед скачиванием...
Но если там fla выше Flash CS3, то лично я его не смогу посмотреть. Но возможно другие товарищи отсюда, смогут.

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

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

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


 


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


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