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

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

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

Регистрация: Nov 2010
Сообщений: 6
Cool "Умное" перемещение объектов в 3D

Добрый вечер, уважаемые коллеги.
С AS работаю не так давно, и имею не так много опыта как хотелось бы. Но все же и не совсем новичок. Прошу помочь советом с решением одной задачи, связанной с передвижением объектов в 3D.

На счене находятся объект mc_cont. В нем, в свою очередь, находятся 10 других объектов. Пусть они имеют имена mc1, mc2...mc10 и имеют произвольно расположение как по осям x,y так и по оси z.

Алгоритм действий следующий.
1) При нажатие на кнопку объект mc1 подъезжает и оказывается по центру экрана, а его положение по оси z становится равным 0.
2) При повторном нажатие на кнопку объект mc2 подъезжает и оказывается по центру экрана, а его положение по оси z становится равным 0, и так далее.

Я понимаю как сделать обработку кнопки, понимаю что для перемещения следует использовать Tween, понимаю что на самом деле следует перемещать mc_cont а не mc# и использовать GlobalToLocal (LocalToGlobal?). Но как организовать все в целом мне не ясно.

Буду благодарен за любую помощь.

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
GlobalToLocal или LocalToGlobal - думаю не нужны. Попробуйте сделать что ни будь, и если будут проблемы, то вместе с кодом сюда, а то ведь трудно посоветовать. Вот например код, это документКласс:
Код AS3:
package 
{
	import fl.transitions.easing.Strong;
	import fl.transitions.Tween;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.events.KeyboardEvent;
 
	/**
	 * ...
	 * @author Samana
	 */
	public class Main extends Sprite 
	{
		//этот класс рисует простой круг
		private var c:NewClass;
 
 
		public function Main() 
		{
			//создаем круг и распологаем его с лучайных координатах
			//по всем трём осям
			c = new NewClass()
			c.y = Math.random() * 300;
			c.x = Math.random() * 600;
			c.z = Math.random() * 3000;
			addChild(c)
 
			//при нажатии любой клавиши....
			stage.addEventListener(KeyboardEvent.KEY_DOWN, key_down);
		}
 
		private function key_down(e:KeyboardEvent):void 
		{
			//круг перемещается из текущего своего положения в центр экрана
			new Tween(c, "x", Strong.easeOut, c.x, stage.stageWidth/2, 2, true);
			new Tween(c, "y", Strong.easeOut, c.y, stage.stageHeight/2, 2, true);
			new Tween(c, "z", Strong.easeOut, c.z, 0, 2, true);
		}
 
	}
 
}

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

Регистрация: Nov 2010
Сообщений: 6
Цитата:
На сколько я понял топикстартеру нужно что бы прокручивались все объекты.
Да. В том то и дело что необходимо двигать все объекты, но опираясь на то, что они последовательно должны оказываться по центру экрана с z=0.

Samana большое спасибо за подсказку. В целом думал что следует двигаться в этом направление, но не ясно как организовать перемещение всей группы (то-есть mc_cont) что бы mc# оказывался в центре экрана, а остальные объекты так же смещались.

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

блогер
Регистрация: Sep 2008
Адрес: Менск
Сообщений: 586
Записей в блоге: 1
Отправить сообщение для incvizitor с помощью Skype™
у Вашего контейнера есть свойство z в переменную "startZ". Это свойство мы сохраняем вначале (от него мы и будем отталкиваться.

Создаём также локальную переменную "i", которую будем инкриментировать при каждой прокрутке.

На каждый клик мыши изменяете значение i, после чего твиним z контейнера в в кординату полученную таким образом:

Код AS3:
startZ + cont.getChildAt(i).z;
i = (i + 1) % cont.numChildren;
Всё, счастье.

Добавлено через 2 минуты
2 samana,
Цитата:
понимаю что на самом деле следует перемещать mc_cont а не mc#
На сколько я понял топикстартеру нужно что бы прокручивались все объекты.
__________________
ranga

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

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

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

Регистрация: Nov 2008
Сообщений: 109
Вам что, нужна реализация обычной карусели?

UPD:Понял, не карусель, так как рандомное расположение.


Последний раз редактировалось yorlin; 11.11.2010 в 19:52.
Старый 11.11.2010, 20:00
kambey80 вне форума Посмотреть профиль Отправить личное сообщение для kambey80 Найти все сообщения от kambey80
  № 7  
Ответить с цитированием
kambey80

Регистрация: Nov 2010
Сообщений: 6
Нет, это не карусель.
И я описал расположение объектов как рандомное для упрощения. На самом деле объекты будут расположены четко, но на первый взгляд в довольно хаотичном порядке.

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Посмотрите исходник, если ещё не сделали, может поможет.... Для перемещения по кнопкам, кликайте по сцене.
Вложения
Тип файла: rar Menu.rar (31.2 Кб, 103 просмотров)
Тип файла: swf Menu.swf (5.0 Кб, 390 просмотров)

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

Регистрация: Nov 2010
Сообщений: 6
Цитата:
Сообщение от samana Посмотреть сообщение
Посмотрите исходник, если ещё не сделали, может поможет.... Для перемещения по кнопкам, кликайте по сцене.
Огромное вам спасибо за помощь, это именно то что мне нужно. =)

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

блогер
Регистрация: Mar 2008
Адрес: Днепропетровск
Сообщений: 1,783
Записей в блоге: 3
Цитата:
Сообщение от kambey80 Посмотреть сообщение
Огромное вам спасибо за помощь, это именно то что мне нужно. =)
Пожалуйста!

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

Теги
3d , AS 3 , tween

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

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


 


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


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