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

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

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

Регистрация: Sep 2010
Сообщений: 7
По умолчанию Случайные координаты

Собственно, какой вопрос возник...
Как сделать от 5 до 10(рандомно) мувиков(одинаковых) со случаными координатами, но так что бы мувики не налазили друг на друга (между ними было бы хотя бы пикселов 30) и не приближались к границе окна ближе чем, допустим 20 пикселов?
Буду благодарен за любые советы и помощь

Старый 01.10.2010, 00:54
iillyyaa вне форума Посмотреть профиль Отправить личное сообщение для iillyyaa Найти все сообщения от iillyyaa
  № 2  
Ответить с цитированием
iillyyaa

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

Старый 01.10.2010, 01:06
AlesNormales вне форума Посмотреть профиль Отправить личное сообщение для AlesNormales Найти все сообщения от AlesNormales
  № 3  
Ответить с цитированием
AlesNormales

Регистрация: Aug 2010
Сообщений: 74
По-разному можно. В лоб цикл сделать, в нем генерить случайную координату. Дальше проверять, какое расстояние от этой координаты до тех что уже есть. Если достаточное, создать мувик и положить его на сцену. Увеличить счетчик мувиков на 1. Когда счетчик дойдет до нужного вам кол-ва мувиков-выйти из цикла. Для небольшого количества мувиков можно перебирать весь массив уже созданых с целью получения координат. Для большого можно наверное делить всю область на части и определять сначала принадлежность к части потом в части проверять координаты. Неэлегантное решение, но должно работать.

Старый 01.10.2010, 02:28
gloomyBrain вне форума Посмотреть профиль Отправить личное сообщение для gloomyBrain Найти все сообщения от gloomyBrain
  № 4  
Ответить с цитированием
gloomyBrain
 
Аватар для gloomyBrain

блогер
Регистрация: Mar 2008
Адрес: РФ, Санкт-Петербург
Сообщений: 2,272
Записей в блоге: 5
Отправить сообщение для gloomyBrain с помощью ICQ Отправить сообщение для gloomyBrain с помощью Skype™
Цитата:
Неэлегантное решение, но должно работать
Если слегка переиначить - будет неплохим решением.
Для этого:
- разбиваем все поле на квадратные части
- создаем мувик и смотрим, сколько таких квадратных частей он может занимать
- находим на поле несколько свободных частей, повторяющих по форме мувик
- ставим мувик на поле и помечаем занятые им части (или больше не учитываем их при расчетах)
- далее все тоже самое, только занятые части не участвуют в расчете.

Если нужно плотное заполнение, максимально приближенное к таблице, то нужно сравнивать совпадение (то есть чтобы ячейка была свободна и в форме мувика, и в форме поля) построчно, и если первая строка ячеек мувика помещается на поле, то проверяем вторую, и тд и тп
__________________
...вселенская грусть

Старый 01.10.2010, 02:51
t4arty вне форума Посмотреть профиль Отправить личное сообщение для t4arty Найти все сообщения от t4arty
  № 5  
Ответить с цитированием
t4arty

Регистрация: May 2010
Адрес: пространство в положении
Сообщений: 219
пользуйся...

естественно, нужно немного переработать под свои нужды а замысел какой ты и хотел.
Вложения
Тип файла: rar brick.rar (7.1 Кб, 53 просмотров)

Старый 01.10.2010, 03:44
Visio вне форума Посмотреть профиль Отправить личное сообщение для Visio Найти все сообщения от Visio
  № 6  
Ответить с цитированием
Visio

Регистрация: Sep 2010
Сообщений: 7
to t4arty
Спасибо, обязательно код расковыряю, только вот жаль без коментариев. А потому разбирать буду уже, когда приеду со свадьбы брата, т.е. не раньше как после выходных

to gloomyBrain
Вариант интересный. Приеду, попробую. Очень интересно разобраться как такое сделать. Спасибо.

Старый 08.10.2010, 05:49
Visio вне форума Посмотреть профиль Отправить личное сообщение для Visio Найти все сообщения от Visio
  № 7  
Ответить с цитированием
Visio

Регистрация: Sep 2010
Сообщений: 7
Вот... приехал =)
Вожусь со своими мувиками. Единственное, что никак не выходит, это сделать, что бы они не пересекались. Киньте, кто-нить, простинький пример, пожалуйста.
Ps: что то не сообразил как флешку при атачить, потому размещаю сырец(мож кто, что присоветует )
Вложения
Тип файла: rar src.rar (7.4 Кб, 37 просмотров)

Старый 08.10.2010, 07:03
Visio вне форума Посмотреть профиль Отправить личное сообщение для Visio Найти все сообщения от Visio
  № 8  
Ответить с цитированием
Visio

Регистрация: Sep 2010
Сообщений: 7
Вот еще вопросец нарисовался. Как програмно узнать размер сцены?

Старый 08.10.2010, 07:27
i.o. вне форума Посмотреть профиль Отправить личное сообщение для i.o. Найти все сообщения от i.o.
  № 9  
Ответить с цитированием
i.o.
 
Аватар для i.o.

Регистрация: Apr 2010
Адрес: Earth
Сообщений: 1,897
stage.stageWidth / stage.stageHeight

Старый 08.10.2010, 07:33
Visio вне форума Посмотреть профиль Отправить личное сообщение для Visio Найти все сообщения от Visio
  № 10  
Ответить с цитированием
Visio

Регистрация: Sep 2010
Сообщений: 7
Цитата:
Сообщение от i.o. Посмотреть сообщение
stage.stageWidth / stage.stageHeight
Подходит =) Спасибо.

Добавлено через 5 часов 35 минут
В итоге нарисовалось ЭТО. Только оно все равно коряво работает. Периодически мувики налаживаются, даже с мин. кол-вом элементов.

Код AS3:
var cikle:Number = 5;
var item:Array = new Array();
var modX:Number = 0;
var modY:Number = 0;
 
//Создаем нужное кол-во экземпляров мувика
for (var i:int = 0; i<cikle; i++)
{
	var temp:simCha = new simCha();	
	temp.x = Math.random()*500;
	temp.y = Math.random()*280;
	for (var ii:int = 0; ii<item.length;ii++)
	{
		modX = Math.abs(item[ii].x - temp.x);
		modY = Math.abs(item[ii].y - temp.y);
		while (modX<60)
		{
			modX = Math.abs(item[ii].x - temp.x);
			temp.x =  Math.random()*500;
 
		}
		while (modY<50)
		{
			modY = Math.abs(item[ii].y - temp.y);
			temp.y =  Math.random()*280;
			if (temp.y<30)
			{
				temp.y = temp.y +40;
			}
 
		}
		trace(modX);
		//trace(modY);
	}
	item.push(temp);
	addChild(temp);
}
У кого какие мысли

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

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

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


 


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


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