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

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

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 11.01.2009, 18:02
MafiaBoy вне форума Посмотреть профиль Отправить личное сообщение для MafiaBoy Найти все сообщения от MafiaBoy
  № 1  
Ответить с цитированием
MafiaBoy
[+6 04.02.09]

Регистрация: Jan 2009
Сообщений: 54
По умолчанию Papervision3d помогите не много переделать код...

http://pv3d.org/page/4/

На этой странице есть пример куба, на котором использован эффект shade. Так вот как переделать его, чтобы этот эффект не использовался,я уже измучился, удалил функцию, что-то подкорректировал но ничего не получается, только куча ошибок.
Нужен тот же самый куб, но без эффектов(сглаживания)

Добавлено через 1 минуту
вот его код, надо его упростить..
Код AS3:
package
{
	import flash.display.Bitmap;
	import flash.events.Event;
 
	import org.papervision3d.lights.PointLight3D;
	import org.papervision3d.materials.BitmapMaterial;
	import org.papervision3d.materials.shaders.PhongShader;
	import org.papervision3d.materials.shaders.ShadedMaterial;
	import org.papervision3d.materials.shaders.Shader;
	import org.papervision3d.materials.utils.MaterialsList;
	import org.papervision3d.objects.primitives.Cube;
	import org.papervision3d.view.BasicView;
 
	[SWF(width="640", height="480", backgroundColor="#000000", frameRate="60")]
	public class CubeWithDifferentSides extends BasicView
	{
		[Embed(source="assets/back.jpg")]
		private var backAsset:Class;
 
		[Embed(source="assets/bottom.jpg")]
		private var bottomAsset:Class;
 
		[Embed(source="assets/front.jpg")]
		private var frontAsset:Class;
 
		[Embed(source="assets/left.jpg")]
		private var leftAsset:Class;
 
		[Embed(source="assets/right.jpg")]
		private var rightAsset:Class;
 
		[Embed(source="assets/top.jpg")]
		private var topAsset:Class;
 
		private var light:PointLight3D;
		private var cube:Cube;
 
		public function CubeWithDifferentSides()
		{
			var materialsList:MaterialsList = new MaterialsList();
 
			light = new PointLight3D();
 
			materialsList.addMaterial(createShadedMaterial( new backAsset() ), "back");
			materialsList.addMaterial(createShadedMaterial( new bottomAsset() ), "bottom");
			materialsList.addMaterial(createShadedMaterial( new frontAsset() ), "front");
			materialsList.addMaterial(createShadedMaterial( new leftAsset() ), "left");
			materialsList.addMaterial(createShadedMaterial( new rightAsset() ), "right");
			materialsList.addMaterial(createShadedMaterial( new topAsset() ), "top");
 
			cube = new Cube(materialsList, 500, 500, 500, 5, 5, 5);
			scene.addChild(cube);
 
			startRendering();
		}
 
		private function createShadedMaterial(bitmap:Bitmap):ShadedMaterial
		{
			var bitmapMaterial:BitmapMaterial = new BitmapMaterial(bitmap.bitmapData, true);
			var shader:Shader = new PhongShader(light, 0xffffff, 0x333333, 10, bitmap.bitmapData, bitmap.bitmapData);
			var shadedMaterial:ShadedMaterial = new ShadedMaterial(bitmapMaterial, shader);
			return shadedMaterial;
		}
 
		override protected function onRenderTick(event:Event=null):void
		{
			cube.rotationY += (viewport.containerSprite.mouseX - cube.rotationY) * .1;
			cube.rotationX += (viewport.containerSprite.mouseY - cube.rotationX) * .1;
			renderer.renderScene(scene, camera, viewport);
		}
	}
}
Добавлено через 43 минуты
Код версии для ActionScript 3.0


Последний раз редактировалось MafiaBoy; 11.01.2009 в 18:05.
Старый 11.01.2009, 18:55
Obi вне форума Посмотреть профиль Отправить личное сообщение для Obi Найти все сообщения от Obi
  № 2  
Ответить с цитированием
Obi
 
Аватар для Obi

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
Код AS3:
private function createShadedMaterial(bitmap:Bitmap):BitmapMaterial
		{
			return new BitmapMaterial(bitmap.bitmapData, true);
		}

Старый 11.01.2009, 18:55
MafiaBoy вне форума Посмотреть профиль Отправить личное сообщение для MafiaBoy Найти все сообщения от MafiaBoy
  № 3  
Ответить с цитированием
MafiaBoy
[+6 04.02.09]

Регистрация: Jan 2009
Сообщений: 54
код для ActionScript 3.0

Добавлено через 54 секунды
Obi спасибо
но я чёто не понял

Добавлено через 7 минут
не стандартное решение, но всё же...
А возможно ли как то сделать стороны куба ссылками на страницы в интернете?
Чтоб они открывались при клике мышкой по гране куба....

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

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
Цитата:
А возможно ли как то сделать стороны куба ссылками на страницы в интернете?
Чтоб они открывали сь при клике мышкой по гране куба....
Как вариант, при тыке отправлять серверу адрес страницы, чтобы серверный скрипт сделал ее скриншот и вернул вам картинку. Конкретно у флеша нету встроенного браузера.

UPD: Мой предыдущий пост был намеком на то, что вместо шейдерного материала нужно подставлять обычный. Не нужно делать слово в слово как я на писал, быдлокод ибо.


Последний раз редактировалось Obi; 11.01.2009 в 19:26. Причина: upd
Старый 11.01.2009, 19:24
MafiaBoy вне форума Посмотреть профиль Отправить личное сообщение для MafiaBoy Найти все сообщения от MafiaBoy
  № 5  
Ответить с цитированием
MafiaBoy
[+6 04.02.09]

Регистрация: Jan 2009
Сообщений: 54
я же делаю кубик для браузера.
Я вот не знаю, как это реализовать, в сети не видел подобных примеров, чтобы кликнув по грани куба, открыть интернет-ресурс, причём каждая грань куба имеет свой ресурс

Добавлено через 8 минут
да, немножко по быдляцки получилось, но принцип я усвоил
а как сделать грани-ссылками на ресурсы в сети?

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

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
А, я думал отображать странички в кубе надо...
RTFM, собственно.
http://docs.pv3d.org/org/papervision...ne3DEvent.html
http://docs.pv3d.org/org/papervision...ml#interactive

Далее вешаете на модель евент, и проверяете материал отозвался, типа:

Код AS3:
private function evtHandler(e:InteractiveScene3DEvent):void {
   switch(e.face3d.material.name) {
      case 'front':
         trace('front');
      break;
      case 'back':
         trace('back');
      break;
      case 'left':
         trace('left');
      break;
      case 'right':
         trace('right');
      break;
   }
}

Старый 12.01.2009, 18:53
MafiaBoy вне форума Посмотреть профиль Отправить личное сообщение для MafiaBoy Найти все сообщения от MafiaBoy
  № 7  
Ответить с цитированием
MafiaBoy
[+6 04.02.09]

Регистрация: Jan 2009
Сообщений: 54
Obi
спасибо конечно.
Но я всё таки так не понял как добавить к коду ниже, к уже определённому
функции откытия ресурсов при клике по граням, у меня ведь не сколько граней, и по каждой из них должен открываться определённый в коде ресурс..

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

Регистрация: Nov 2007
Адрес: Moscow
Сообщений: 566
Включаем голову, выключаем лень и видим, что все очень просто:
Код AS3:
package
{
	import flash.display.Bitmap;
	import flash.events.Event;
 
	import org.papervision3d.lights.PointLight3D;
	import org.papervision3d.materials.BitmapMaterial;
	import org.papervision3d.materials.shaders.PhongShader;
	import org.papervision3d.materials.shaders.ShadedMaterial;
	import org.papervision3d.materials.shaders.Shader;
	import org.papervision3d.materials.utils.MaterialsList;
	import org.papervision3d.objects.primitives.Cube;
	import org.papervision3d.view.BasicView;
 
	[SWF(width="640", height="480", backgroundColor="#000000", frameRate="60")]
	public class CubeWithDifferentSides extends BasicView
	{
		[Embed(source="assets/back.jpg")]
		private var backAsset:Class;
 
		[Embed(source="assets/bottom.jpg")]
		private var bottomAsset:Class;
 
		[Embed(source="assets/front.jpg")]
		private var frontAsset:Class;
 
		[Embed(source="assets/left.jpg")]
		private var leftAsset:Class;
 
		[Embed(source="assets/right.jpg")]
		private var rightAsset:Class;
 
		[Embed(source="assets/top.jpg")]
		private var topAsset:Class;
 
		private var light:PointLight3D;
		private var cube:Cube;
 
		public function CubeWithDifferentSides()
		{
			var materialsList:MaterialsList = new MaterialsList();
 
			light = new PointLight3D();
 
			materialsList.addMaterial(new BitmapMaterial( new backAsset(), true ), "back");
			materialsList.addMaterial(new BitmapMaterial( new bottomAsset(), true ), "bottom");
			materialsList.addMaterial(new BitmapMaterial( new frontAsset(), true ), "front");
			materialsList.addMaterial(new BitmapMaterial( new leftAsset(), true ), "left");
			materialsList.addMaterial(new BitmapMaterial( new rightAsset(), true ), "right");
			materialsList.addMaterial(new BitmapMaterial( new topAsset(), true ), "top");
 
			cube = new Cube(materialsList, 500, 500, 500, 5, 5, 5);
			scene.addChild(cube);
                        cube.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, onCubeClick);
 
			startRendering();
		}
 
 
		override protected function onRenderTick(event:Event=null):void
		{
			cube.rotationY += (viewport.containerSprite.mouseX - cube.rotationY) * .1;
			cube.rotationX += (viewport.containerSprite.mouseY - cube.rotationX) * .1;
			renderer.renderScene(scene, camera, viewport);
		}
 
                private function onCubeClick(e:InteractiveScene3DEvent):void {
                         switch(e.face3d.material.name) {
      case 'front':
         navigateToURL(new URLRequest('http://mySite.com/1'));
      break;
      case 'back':
         navigateToURL(new URLRequest('http://mySite.com/2'));
      break;
      case 'left':
         navigateToURL(new URLRequest('http://mySite.com/3'));
      break;
      case 'right':
         navigateToURL(new URLRequest('http://mySite.com/4'));
      break;
   }
 
                }
	}
}

Старый 14.01.2009, 16:33
MafiaBoy вне форума Посмотреть профиль Отправить личное сообщение для MafiaBoy Найти все сообщения от MafiaBoy
  № 9  
Ответить с цитированием
MafiaBoy
[+6 04.02.09]

Регистрация: Jan 2009
Сообщений: 54
спасибо Obi
respect to you

Добавлено через 20 часов 12 минут
интересно почему у меня не работает код.
Следующая ошибка TypeError: Error #1034: Ошибка типа Coercion: невозможно преобразовать CubeWithDifferentSides_backAsset@42831f1 в flash.display.BitmapData.
at CubeWithDifferentSides()[C:\Documents and Settings\User\Рабочий стол\MagicCube\CubeWithDifferentSides.as:45]

Добавлено через 20 часов 20 минут
Код не работает,только чёрный экран на странице, при компиляции также ошибок не было!
Но вот только дебагер замечает что что-то не так..

Добавлено через 20 часов 42 минуты
Obi помоги please

Добавлено через 21 час 27 минут
Я уже измучился, что это за проблема?

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

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

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


 


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


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