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

Вернуться   Форум Flasher.ru > Flash > API приложений и сред

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

Регистрация: Oct 2011
Сообщений: 21
По умолчанию Получение координат клика мышей.

Здравствуйте.
Появилось у меня задание сделать простенькую игру с использованием 3д движка на во флеше.
В качестве движка был выбран Away3D.
Игра это копия игры Osmos на мобильных платформах, то есть есть некие объекты которые свободно двигаются и большие объекты поглощают меньшие и вырастают в размерах. Еще есть собственно игрок который играет одним из таких вот объектов. Для передвижения игрока нужно в любом месте экрана кликнуть мышей и объект игрока должен переместиться на определенное расстояние по вектору проходящему от точки клика мышей до точки цента объекта.

Собственно проблема в том, что я никак не могу понять как же мне правильно взять точку клика мышей

Старый 25.03.2013, 16:14
vorodis2 вне форума Посмотреть профиль Отправить личное сообщение для vorodis2 Найти все сообщения от vorodis2
  № 2  
Ответить с цитированием
vorodis2

Регистрация: Feb 2011
Адрес: Украина Днепропетровск
Сообщений: 106
http://away3d.com/forum/viewthread/4079/
Получение точки в 2д координатах.

Получение точки на общей сцене, а точка находиться в контейнер/контейнер/ до 5 штук
Код AS3:
/**
		 * Приводит точку до низа
		 * @param	object3d контейнер в котором есть точка3д ObjectContainer3D //Mesh
		 * @param	veCmaxX сама точка
		 * @param	sah сколько контейнеров назад до 5 
		 */
		static public function poiskNewPoint3D(object3d:ObjectContainer3D, veCmaxX:Vector3D, sah:int=5):Vector3D {
			var vertor:Vector3D = new Vector3D(veCmaxX.x,veCmaxX.y,veCmaxX.z);			
			var sss:int = 0;			
			if(object3d.parent!=null){
				vertor = object3d.transform.deltaTransformVector(vertor);
				vertor.x += object3d.x;
				vertor.y += object3d.y;
				vertor.z += object3d.z;
				sss++;
				if (object3d.parent.parent != null&&sss<=sah) {
					vertor = object3d.parent.transform.deltaTransformVector(vertor);
					vertor.x += object3d.parent.x;
					vertor.y += object3d.parent.y;
					vertor.z += object3d.parent.z;	
					sss++;
					if (object3d.parent.parent.parent != null&&sss<=sah) {
						vertor = object3d.parent.parent.transform.deltaTransformVector(vertor);
						vertor.x += object3d.parent.parent.x;
						vertor.y += object3d.parent.parent.y;
						vertor.z += object3d.parent.parent.z;
						sss++;
						if (object3d.parent.parent.parent.parent != null&&sss<=sah) {
							vertor = object3d.parent.parent.parent.transform.deltaTransformVector(vertor);
							vertor.x += object3d.parent.parent.parent.x;
							vertor.y += object3d.parent.parent.parent.y;
							vertor.z += object3d.parent.parent.parent.z;
							sss++;
							if (object3d.parent.parent.parent.parent.parent != null&&sss<=sah) {
								vertor = object3d.parent.parent.parent.parent.transform.deltaTransformVector(vertor);
								vertor.x += object3d.parent.parent.parent.parent.x;
								vertor.y += object3d.parent.parent.parent.parent.y;
								vertor.z += object3d.parent.parent.parent.parent.z;
								sss++;
								if (object3d.parent.parent.parent.parent.parent.parent != null&&sss<=sah) {
									vertor = object3d.parent.parent.parent.parent.parent.transform.deltaTransformVector(vertor);
									vertor.x += object3d.parent.parent.parent.parent.parent.x;
									vertor.y += object3d.parent.parent.parent.parent.parent.y;
									vertor.z += object3d.parent.parent.parent.parent.parent.z;									
								}
							}
						}						
					}					
				}			
			}
 
 
 
 
 
 
			return vertor;
		}

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

Регистрация: Jul 2008
Сообщений: 912
Код AS3:
object3d.parent.parent.parent.parent.parent.parent
жееесть, никогда так не делайте.

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

Регистрация: Feb 2011
Адрес: Украина Днепропетровск
Сообщений: 106
Почему, код рабочий, выдают то что мне нужно, то что не красиво, ну я как ни бить переживу ))
А как бы Вы поступили в данном коде???????.

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

Регистрация: Jul 2008
Сообщений: 912
Цитата:
Сообщение от vorodis2 Посмотреть сообщение
то что не красиво, ну я как ни бить переживу ))
Ты переживёшь, а компьютеры укакиваться будут переваривать это за доли секунды. С таким подходом тормозов в программе не избежать.
Много вложенных if - плохо, обращение к методу или переменной класса глубже, чем на один этаж очень плохо - не правильная архитектура, то-есть myClass.myFunc.myFunc; уже считается плохо, а такой поезд .parent.parent.parent.parent.parent.parent это совсем не годится. Но ещё хуже, что обращения идут от ребёнка к родителю, это запрещено в ООП.

Старый 26.03.2013, 17:36
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 6  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
А если задача изменится, и контейнеров станет не 5 а 20 ?
Дело не в некрасивости и том что ООП что-то там запрещает, а в том что решение недостаточно гибкое.


Последний раз редактировалось AlexLucas; 26.03.2013 в 21:09.
Старый 26.03.2013, 17:42
GBee вне форума Посмотреть профиль Отправить личное сообщение для GBee Найти все сообщения от GBee
  № 7  
Ответить с цитированием
GBee
 
Аватар для GBee

Регистрация: Jan 2009
Сообщений: 3,067
Записей в блоге: 3
Отправить сообщение для GBee с помощью Skype™
Призываем рекурсию.
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку.

Старый 26.03.2013, 20:39
vorodis2 вне форума Посмотреть профиль Отправить личное сообщение для vorodis2 Найти все сообщения от vorodis2
  № 8  
Ответить с цитированием
vorodis2

Регистрация: Feb 2011
Адрес: Украина Днепропетровск
Сообщений: 106
//GBee Что такое рекурсия?
//AlexLucas в рамках моей задачи у меня не может быть больше пяти, по этому это не моя проблема))) можно конечно замкнуть функции на себе, типа
Код AS3:
static public function poiskNewPoint3D(object3d:ObjectContainer3D, veCmaxX:Vector3D, sah:int=5):Vector3D {
	var vertor:Vector3D = new Vector3D(veCmaxX.x,veCmaxX.y,veCmaxX.z);			
	var sss:int = 0;			
	if(object3d.parent!=null){
		vertor = object3d.transform.deltaTransformVector(vertor);
		vertor.x += object3d.x;
		vertor.y += object3d.y;
		vertor.z += object3d.z;
		sss++;
		if (object3d.parent.parent != null && sss <= sah) {
			poiskNewPoint3D(object3d.parent, vertor);
		}else {
			return vertor;
		}
	}
	return vertor;
}
}
ХЗ должно работать, но я не люблю такого, так как функция создают сама себя, а я не особо уверен что она после себя ничего не оставляет, в плане мусора, короче мне спокойней когда она одна)))))))))

//Sintesis Еще раз повторю свой вопрос, как бы Вы реализовали, задачу: Есть в 3д сена.обьект.обьект...точка3д ко всем объектам возможно применины трансформации, как получить сена.точка3д.
/////////////////////////////////
а такой поезд .parent.parent.parent.parent.parent.parent это совсем не годится. Но ещё хуже, что обращения идут от ребёнка к родителю,
//////////////////////////////////
Если вы сможете реализовать это
без parent
меньшим количеством if
С меня пиво, когда буду в Запорожье)))))

///это запрещено в ООП. ////Пофиг, оно работает))))

Старый 26.03.2013, 21:13
AlexLucas вне форума Посмотреть профиль Отправить личное сообщение для AlexLucas Найти все сообщения от AlexLucas
  № 9  
Ответить с цитированием
AlexLucas
[+1 05.11.12]
 
Аватар для AlexLucas

Регистрация: Feb 2011
Сообщений: 431
Где-то прочитал, что приложение cтоит разрабатывать учитывая то что те люди которые его будут после вас поддерживать, являются психами которые в приступе гнева способны убить, и которые знают где вы живёте.
В таком случае, я думаю у вас шанс выжыть был бы минимален

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

Регистрация: Feb 2011
Адрес: Украина Днепропетровск
Сообщений: 106
))))))))))))))))))))))))))))))))) Да я прекрасно понимаю чувства того, кто ни будет знать что их можно делать только меньше 5, я бы и сам захотел бы узнать свой адрес))))))))))))))))))))))

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

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

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


 


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


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