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

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

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

Регистрация: Jan 2009
Адрес: MO
Сообщений: 32
По умолчанию object_click и Collada (papervision)

Доброго времени суток,

продолжая изуть движок от papervision столкнулся со следующей проблемой... при добавлении интерактивности в сцену...
пример:

Код AS3:
cube.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onPress);
все рабоает, но вот вопрос, как сделать кликабельным collada объект,
тупо collada.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onPress); не выходит...

И еще вопрос, как можно поместить слой над объектом papervision...


Последний раз редактировалось iNils; 18.01.2009 в 21:42. Причина: дополнение
Старый 18.01.2009, 20:56
Obi вне форума Посмотреть профиль Отправить личное сообщение для Obi Найти все сообщения от Obi
  № 2  
Ответить с цитированием
Obi
 
Аватар для Obi

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
Читать документацию.


Последний раз редактировалось Obi; 18.01.2009 в 21:04.
Старый 18.01.2009, 21:02
myocean вне форума Посмотреть профиль Отправить личное сообщение для myocean Найти все сообщения от myocean
  № 3  
Ответить с цитированием
myocean

Регистрация: Jan 2009
Адрес: MO
Сообщений: 32
По документации разобраться не могу, а может не там читаю ... так как еще новичок в этом вопросе...
я так понимаю нужно вытащить так сказать кликабельный объект из коллады, но как это сделать не пойму...
есть примеры, для работы с подобъектами, скажем focus или little planet, но примеры уже устаревшие, сейчас есть изменение в движке... поменялся соответственно и код...

И что значит перерегистрироваться, и зачем?


Последний раз редактировалось myocean; 18.01.2009 в 21:11.
Старый 18.01.2009, 21:10
Obi вне форума Посмотреть профиль Отправить личное сообщение для Obi Найти все сообщения от Obi
  № 4  
Ответить с цитированием
Obi
 
Аватар для Obi

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
Код AS3:
object.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onObjectClick);
 
private function onObjectClick(event:InteractiveScene3DEvent):void {
   trace('click!');
}
Так не работает?
interactive = true материалам выставили?

Старый 18.01.2009, 21:13
myocean вне форума Посмотреть профиль Отправить личное сообщение для myocean Найти все сообщения от myocean
  № 5  
Ответить с цитированием
myocean

Регистрация: Jan 2009
Адрес: MO
Сообщений: 32
Спасибо Obi, но так не работает, проблема так понимаю в
object.addEventListener...

Как его определить,
как вытащить из colladы
(интерактив материалы выставил)

Добавлено через 7 минут
вот весть код

Код AS3:
package
{
	import flash.display.Sprite;
	import flash.events.Event;
 
	import org.papervision3d.view.Viewport3D;
	import org.papervision3d.scenes.Scene3D;
	import org.papervision3d.cameras.Camera3D;
	import org.papervision3d.materials.BitmapAssetMaterial;
	import org.papervision3d.materials.utils.MaterialsList;
	import org.papervision3d.objects.parsers.Collada;
	import org.papervision3d.render.BasicRenderEngine;
	import org.papervision3d.events.InteractiveScene3DEvent; 
	import org.papervision3d.objects.primitives.Plane;
	import org.papervision3d.objects.DisplayObject3D;
	import org.papervision3d.materials.ColorMaterial;
 
    import org.papervision3d.typography.Text3D;
	public class PV3D extends Sprite
	{
		private var viewport:			Viewport3D;
		private var scene:				Scene3D;
		private var camera:				Camera3D;
		private var collada:			Collada;
		private var plane:			    Plane;
		private var mesh:               DisplayObject3D;
		private var mesh2:              DisplayObject3D;
		private var materialSpace:      ColorMaterial;
		private var renderer:			BasicRenderEngine;
		private var mCube:			    BitmapAssetMaterial;
 
 
 
		public function PV3D():void
		{
			viewport = new Viewport3D(600, 600, false, true);
			addChild(viewport);
 
			scene = new Scene3D();
 
			camera = new Camera3D();
 
 
			materialSpace = new ColorMaterial( 0xFFFFFF, 1 );
			materialSpace.interactive = true;  
			plane = new Plane( materialSpace, 800, 800, 10, 10 );
			plane.rotationX = 90;
			plane.y =- 125;
			scene.addChild(plane);
 
 
 
			renderer = new BasicRenderEngine();
 
 
			mCube =new BitmapAssetMaterial( "cube.jpg", 0.1 );
			mCube.interactive = true;  
 
 
 
			var materialsList:MaterialsList = new MaterialsList(); 
			materialsList.addMaterial( mCube, "mCube" ); 
			collada = new Collada("modelcube.dae", materialsList, .2);
			scene.addChild(collada);
			camera.target = collada;
 
 
			addEventListener(Event.ENTER_FRAME, onEnterFrame);
			plane.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onPress);
			collada.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onObjectClick);
 
 
 
			function onEnterFrame(e:Event):void
			{
				var xDist:Number = mouseX - stage.stageWidth * 0.5;
				var yDist:Number = mouseY - stage.stageHeight * 0.5;
 
				camera.x -= (camera.x - Math.sin(mouseX*0.01)*1000) /8;
				camera.z -= 100+(camera.z - Math.cos(mouseX*0.01)*1000) /8;
				camera.y -= (camera.y - viewport.containerSprite.mouseY * 5) /8;
 
				renderer.renderScene(scene, camera, viewport);
			}
			function onObjectClick(event:InteractiveScene3DEvent):void {
 					trace('click2!');
			}
 
			function onPress(e:InteractiveScene3DEvent):void 
			{ 
			trace("click");
			txt.x = 100;
 
			}
 
		}
	}
}


Последний раз редактировалось iNils; 18.01.2009 в 21:42.
Старый 18.01.2009, 21:42
iNils вне форума Посмотреть профиль Отправить личное сообщение для iNils Посетить домашнюю страницу iNils Найти все сообщения от iNils
  № 6  
Ответить с цитированием
iNils
Негуру
 
Аватар для iNils

администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,884
Записей в блоге: 7
myocean, для оформления своего кода надо использовать теги [code][/code].
__________________
(и)Нильс.ru | Плагины для FlashDevelop

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

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

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


 


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


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