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

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

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

Регистрация: Jul 2009
Сообщений: 6
По умолчанию Интерактивный глобус

Добрый день!

Намутил я значит вот такой глобус: http://jvoliz.info/iGem/test.swf

ВНИМАНИЕ: Весит много - 1 мегабайт и требует новую версию flash'a (мне для огненной лисы пришлось скачать свежий плагин).

Ничего такой глобус вроде : )

Вопрос: как сделать, каждую (ну не каждую, а хотя бы десяток) стран интерактивными. То есть я подвожу мышкой к стране, ее контуры подсвечиваются или просто, чтобы я мог кликнуть по стране на глобусе и получить какое-то действие.

Я много гуглил и ничего дельного не нашел.

Была идея, чтобы по координатам добавить на нужную мне страну какой-нибудь объект - например, полусферу, и использовать ее как триггер для совершения события, но почему-то если создавать DisplayObject3D, то к нему никак не привязать события, хоть ты тресни.

Собственно ряд вопросов:

* если взаимодействовать не напрямую с картой глобуса, а утыкать его какими-нибудь посторонними маркерами, то как привязать к DisplayObject3d событие. Чувствую, что никак, поэтому как сделать тоже самое, но без DisplayObject3D?

* Если все-таки хочется "порезать" карту на нужные мне участки и к каждому привязать ивент, как сделать?

* Вообще, как создать фигуру со сложным контуром и добавить ее в сцену?

Спасибо!

JD

Старый 03.07.2009, 05:15
Mur4ik вне форума Посмотреть профиль Отправить личное сообщение для Mur4ik Найти все сообщения от Mur4ik
  № 2  
Ответить с цитированием
Mur4ik
ветеран форума

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
События привязываются через InteractiveScene3DEvent

Вот еще некий пример почти по теме

А вообще, кажется, слишком сложную для себя Вы задачу выбрали для начала.
__________________
trace("Остановите Землю, я сойду!!!");

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

Регистрация: Aug 2007
Сообщений: 467
Что с управлением ? Оно для дистрофиков ?
__________________
Лучше быть умным и иногда делать глупости, чем глупым и постоянно умничать!

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

Регистрация: Jul 2009
Сообщений: 6
Нормальную задачу! Дайте направление куда копать и мы раскопаем!

А что с управлением?

JD

Старый 03.07.2009, 15:42
Mur4ik вне форума Посмотреть профиль Отправить личное сообщение для Mur4ik Найти все сообщения от Mur4ik
  № 5  
Ответить с цитированием
Mur4ik
ветеран форума

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
Я Вам уже дал направление куда копать.
Начните с документации, конкретнее обратите внимание на классы:
InteractiveScene3DEvent
InteractiveSceneManager
InteractiveUtils
Mouse3D

Вообщем то способов добиться того чего вы хотите есть несколько. Самый простой это MovieMaterial, т.е материал в виде мувиклипа интерактивного, но на производительности это сказывается не очень то положительно. Дальше уже варианты посложнее, ройте.

А на счет управления почитайте про Quaternion и что такое Gimble lock
__________________
trace("Остановите Землю, я сойду!!!");


Последний раз редактировалось Mur4ik; 03.07.2009 в 15:58.
Старый 03.07.2009, 16:06
yorlin вне форума Посмотреть профиль Отправить личное сообщение для yorlin Найти все сообщения от yorlin
  № 6  
Ответить с цитированием
yorlin
 
Аватар для yorlin

Регистрация: Nov 2008
Сообщений: 109
Да с управлением норм, только как то когда тянешь вниз глобус он вращается вверх, да и текстура, как всегда кольчужно на полюсах накладывается...(((
Smooth установил? а то какой то на краях ребристый...


Последний раз редактировалось yorlin; 03.07.2009 в 16:08.
Старый 07.09.2010, 23:18
ЛяЛя вне форума Посмотреть профиль Отправить личное сообщение для ЛяЛя Найти все сообщения от ЛяЛя
  № 7  
Ответить с цитированием
ЛяЛя

Регистрация: Sep 2004
Адрес: Екатеринбург
Сообщений: 60
Отправить сообщение для ЛяЛя с помощью ICQ
здравствуйте! вот возникла такая же задача. натянула на сферу интерактивный мувиклип, все отлично но почему то кнопки не срабатывают.
Код AS3:
Material=new MovieMaterial(l);
			Material.opposite=true;
			Material.animated=true;
			Material.smooth=true;
			Material.interactive = true ;
			Material.allowAutoResize =true;
в чем может быть причина. Материал, то есть swf с картой мира написан на actionscript2.

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

Регистрация: Mar 2007
Сообщений: 142
Отправить сообщение для 3Desian с помощью ICQ
Если на Вашем 3Д объекте натянут MovieMaterial и Вы хотите , что бы на нём работали кнопки, то нужно проделать следующее:
1. В самом мувике (movie) подписать кнопку (But_1) на события в кадре где она расположена .
2.Создать там же обработчик события в котором при помощи dispatchEvent выпустить событие "WasClick".
Код AS3:
But_1.addEventListener(MouseEvent.MOUSE_OVER, functionClick);
function functionClick(event:MouseEvent):void
{
  dispatchEvent(new MyEvent("WasClick"));
}
3. Подписать экземпляр объекта Этого мувика-текстуры на событие "WasClick".Это уже там , где создаёте материал MovieMaterial для объекта (для планеты).
Код AS3:
movie.addEventListener("WasClick", clickOnSomeBut);
private function clickOnSomeBut(e:MyEvent):void
{
trace("Дааа!!! ");
}
Ах да, ещё необходимо создать свой класс и назвать его MyEvent.as
Код AS3:
package
{
	import flash.events.Event;
 
	public class MyEvent extends Event
    {
		public var nameOfObject:String;
		public static var GO_TO_OBJECT:String="GO_TO_OBJECT";
 
		 public function MyEvent(type:String, NameOfObject:String="") 
		 {
                super(type);
 
                nameOfObject = NameOfObject;
        }
 
	}
}
// тут параметр NameOfObject можно использовать для опознавания конкретно нажатой кнопки.


Последний раз редактировалось 3Desian; 01.10.2010 в 11:26.
Создать новую тему Ответ Часовой пояс GMT +4, время: 23:01.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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