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

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

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

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
По умолчанию Сортировка объектов по глубине

Привет!Есть вопрос - как отсортировать объекты, по глубине на основе их положения по вертикали? Т.е. создать некий эффект перспективы - чем выше объект - тем дальше он по глубине. Вся трудность состоит в том, что объекты генерируются случайным образом и координаты каждого нового объекта не известны!

Старый 14.03.2010, 01:19
AlexDesinger вне форума Посмотреть профиль Отправить личное сообщение для AlexDesinger Посетить домашнюю страницу AlexDesinger Найти все сообщения от AlexDesinger
  № 2  
Ответить с цитированием
AlexDesinger

Регистрация: Feb 2007
Сообщений: 563
Привет! Есть ответ - сначала узнать координаты нового объекта, затем расположить его по координате z на нужную глубину и применить z-sorting, в нете полно примеров халявных классов!

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

блогер
Регистрация: Jun 2005
Адрес: RU
Сообщений: 1,540
Записей в блоге: 12
Цитата:
Сообщение от Universe Посмотреть сообщение
координаты каждого нового объекта не известны!
Задачка достойная академиков... Сортировка по неизвестным параметрам - нелегкая задача

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

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

Старый 14.03.2010, 10:44
mikhailk вне форума Посмотреть профиль Отправить личное сообщение для mikhailk Найти все сообщения от mikhailk
  № 5  
Ответить с цитированием
mikhailk
 
Аватар для mikhailk

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
1. Все объекты при создании загоняются в массив
2. Создаем новый объект (но не выводим на сцену) и тоже кладем в массив
3. Сортируем массив (чтобы индексы соответствовали порядку показа по z)
4. Показываем созданный объект - он появится как надо

Старый 15.03.2010, 12:27
Universe вне форума Посмотреть профиль Отправить личное сообщение для Universe Найти все сообщения от Universe
  № 6  
Ответить с цитированием
Universe
 
Аватар для Universe

Регистрация: Feb 2010
Сообщений: 811
Отправить сообщение для Universe с помощью ICQ Отправить сообщение для Universe с помощью Skype™
To mikhailk:
Получается надо создать 2 массива?
А что если создать 1 массив с объектами, которые необходимо размещать, а второй - с координатами этих же объектов по оси Y? Получается тогда нужно сортировать уже второй массив при помощи sort(16)? А значения индексов присваивать элементам первого массива - arr1.setChildIndex(arr1[i], arrY[i])...как то так?

Старый 15.03.2010, 12:52
AlexDesinger вне форума Посмотреть профиль Отправить личное сообщение для AlexDesinger Посетить домашнюю страницу AlexDesinger Найти все сообщения от AlexDesinger
  № 7  
Ответить с цитированием
AlexDesinger

Регистрация: Feb 2007
Сообщений: 563
а можно вопрос? Вы какого именно эффекта хотите добиться? Вот такой подойдет -
http://kosulin.ru/newsite/newsite.html#/graphics ?

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

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
массив один

Код AS3:
public function zSort(e:Event):void {	
	personages.sortOn(['y','name'],[Array.NUMERIC,Array.DESCENDING]);
	var l:int = personages.length;
	while (l--) {
		var o:DisplayObject = personages[l] as DisplayObject;
		if (containerObjects.getChildAt(l) != o) containerObjects.setChildIndex(o, l);
	}
}
В примере personages - массив мувиков, болтающихся по сцене, containerObjects - контейнер, в котором они все находятся.

Старый 15.03.2010, 22:30
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 9  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от mikhailk Посмотреть сообщение
1. Все объекты при создании загоняются в массив
2. Создаем новый объект (но не выводим на сцену) и тоже кладем в массив
3. Сортируем массив (чтобы индексы соответствовали порядку показа по z)
4. Показываем созданный объект - он появится как надо
Все объекты у Вас имеют x = y = 0; (по умолчанию); Как Вы собираетесь их сортировать? Хотя, можно сортировать по размерам ). А может мы просто не знаем Ваших критериев сортировки. Объясните.
__________________
Воспитан в TimeZero. Работаю в Mail.ru.

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

Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
Если я правильно понял автора с его вопросом, то объекты генерятся и случайным образом помещаются на сцену. Т.е., координаты у них есть (а как иначе?), просто не известны заранее.

Функция zSort (принадлежит не мне, я лишь добавил сортировку по name, чтобы убрать мерцание двух объектов с одним y) запускается по событию enterFrame или по таймеру. Новый объект после генерации падает в массив и включается в сортировку. Вот дополнительно к коду функции zSort (чтобы было понятно, как заполняется массив для сортировки):

Код AS3:
  var personage = new Personage();
  personage.x = int(Math.random())*500;
  personage.y = int(Math.random())*400;
  containerObjects.addChild(personage);
  personages.push(personage);

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

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

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


 


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


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