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

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

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

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


Обновлено в 10:33
Код AS3:
package
{
	import flash.display.Bitmap;
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.net.navigateToURL;
    import flash.net.URLRequest;
 
	import org.papervision3d.events.InteractiveScene3DEvent;
	import org.papervision3d.materials.BitmapMaterial;
	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="30")]
	public class CubeWithDifferentSides extends BasicView
	{
		[Embed(source='2782350904_dd8b955fb1.jpg')]
		private var backAsset:Class;
 
		[Embed(source='2782350904_dd8b955fb1.jpg')]
		private var bottomAsset:Class;
 
		[Embed(source='2782350904_dd8b955fb1.jpg')]
		private var frontAsset:Class;
 
		[Embed(source='2782350904_dd8b955fb1.jpg')]
		private var leftAsset:Class;
 
		[Embed(source='2782350904_dd8b955fb1.jpg')]
		private var rightAsset:Class;
 
		[Embed(source='2782350904_dd8b955fb1.jpg')]
		private var topAsset:Class;
 
		private var cube:Cube;
 
		private var frontMaterial:BitmapMaterial = new BitmapMaterial(new frontAsset().bitmapData, true);
		private var backMaterial:BitmapMaterial = new BitmapMaterial(new backAsset().bitmapData, true);
		private var leftMaterial:BitmapMaterial = new BitmapMaterial(new leftAsset().bitmapData, true);
		private var rightMaterial:BitmapMaterial = new BitmapMaterial(new rightAsset().bitmapData, true);
		private var topMaterial:BitmapMaterial = new BitmapMaterial(new topAsset().bitmapData, true);
		private var bottomMaterial:BitmapMaterial = new BitmapMaterial(new bottomAsset().bitmapData, true);
 
		public function CubeWithDifferentSides()
		{
			var materialsList:MaterialsList = new MaterialsList();
 
			viewport.interactive = true;
 
			frontMaterial.interactive = true;
			frontMaterial.name = "front";
			backMaterial.interactive = true;
			backMaterial.name = "back";
			leftMaterial.interactive = true;
			leftMaterial.name = "left";
			rightMaterial.interactive = true;
			rightMaterial.name = "right";
			topMaterial.interactive = true;
			topMaterial.name = "top";
			bottomMaterial.interactive = true;
			bottomMaterial.name = "bottom";
 
			cube = new Cube(new MaterialsList( {front: frontMaterial,
												back: backMaterial,
												left: leftMaterial,
												right: rightMaterial,
												top:topMaterial,
												bottom: bottomMaterial} ),
												500, 500, 500, 3, 3, 3);
 
			/*
			// Альтернативный вариант инициализацмм куба
			materialsList.addMaterial(bottomMaterial, "bottom");
			materialsList.addMaterial(backMaterial, "back");
			materialsList.addMaterial(frontMaterial, "front");
			materialsList.addMaterial(leftMaterial, "left");
			materialsList.addMaterial(rightMaterial, "right");
			materialsList.addMaterial(topMaterial, "top");
 
			cube = new Cube(materialsList, 500, 500, 500, 3, 3, 3);
			*/
 
			cube.addEventListener(InteractiveScene3DEvent.OBJECT_OVER, onCubeOver);
			cube.addEventListener(InteractiveScene3DEvent.OBJECT_OUT, onCubeOut);
			cube.addEventListener(InteractiveScene3DEvent.OBJECT_PRESS, onCubeClick);
 
			scene.addChild(cube);
 
			startRendering();
		}
 
		private function onCubeOver(event:InteractiveScene3DEvent):void
		{
			viewport.buttonMode = true;
		}
 
		private function onCubeOut(event:InteractiveScene3DEvent):void
		{
			viewport.buttonMode = false;
		}
 
		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(event:InteractiveScene3DEvent):void
		{
			switch(event.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;
				case 'top':
					navigateToURL(new URLRequest('http://mySite.com/4'));
					break;
				case 'bottom':
					navigateToURL(new URLRequest('http://mySite.com/4'));
					break;
			}
		}
	}
}
__________________
trace("Остановите Землю, я сойду!!!");


Последний раз редактировалось Mur4ik; 21.01.2009 в 11:33.
Старый 21.01.2009, 11:35
MafiaBoy вне форума Посмотреть профиль Отправить личное сообщение для MafiaBoy Найти все сообщения от MafiaBoy
  № 42  
Ответить с цитированием
MafiaBoy
[+6 04.02.09]

Регистрация: Jan 2009
Сообщений: 54
Mur4ik
я твой код испытал
Результат: куб есть а клика а нет

А со вторым вариантом, который закомментирован фиолетовым цветом, даже куб не появляется....
В первом появляется куб, код отлично компилируется без ошибок, но кликнуть по нему нельзя!

Добавлено через 10 минут
Бестолку

Клика всё равно нет!!!

В чём же проблема?

Старый 21.01.2009, 11:53
Vasik1 вне форума Посмотреть профиль Отправить личное сообщение для Vasik1 Найти все сообщения от Vasik1
  № 43  
Ответить с цитированием
Vasik1

Регистрация: Mar 2006
Сообщений: 141
Код последний напиши полностью

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

Регистрация: Jan 2009
Сообщений: 54
написал
Бестолку

Клика всё равно нет!!!

В чём же проблема?

Старый 21.01.2009, 12:10
Mur4ik вне форума Посмотреть профиль Отправить личное сообщение для Mur4ik Найти все сообщения от Mur4ik
  № 45  
Ответить с цитированием
Mur4ik
ветеран форума

Регистрация: Sep 2008
Сообщений: 717
Записей в блоге: 4
Отправить сообщение для Mur4ik с помощью ICQ
и куб есть и клик есть (он не может не есть), возможно нужна последняя версия PV3D (тестировал на rev859)

проверил еще раз, работают оба варианта
__________________
trace("Остановите Землю, я сойду!!!");


Последний раз редактировалось Mur4ik; 21.01.2009 в 12:13.
Старый 21.01.2009, 12:20
MafiaBoy вне форума Посмотреть профиль Отправить личное сообщение для MafiaBoy Найти все сообщения от MafiaBoy
  № 46  
Ответить с цитированием
MafiaBoy
[+6 04.02.09]

Регистрация: Jan 2009
Сообщений: 54
А как проверить версию Папера?

Добавлено через 4 минуты
Да конечно у меня rev859
я скачал его в формате .zip

Старый 21.01.2009, 12:41
Vasik1 вне форума Посмотреть профиль Отправить личное сообщение для Vasik1 Найти все сообщения от Vasik1
  № 47  
Ответить с цитированием
Vasik1

Регистрация: Mar 2006
Сообщений: 141
Скажем так, а почему собственно он должен срабатывать???? По Вашему коду - не должен!
Я на вскидку про допущенные ошибки, попробуйте:
1. НЕ
cube.addEventListener(MouseEvent.CLICK, onCubeClick);
А
cube.addEventListener(InteractiveScene3DEvent.OBJECT_PRESS, onCubeClick);
и ещё заменить
private function onCubeClick(event:MouseEvent):void {
на
private function onCubeClick(event:InteractiveScene3DEvent):void {
Это сработает при клике на самом кубе, на какой грани - не важно.
Чтоб было на каждой отдельной грани, я бы сделал куб не с помощью Cube, а с помощью шести Plane и на каждый бы дал листнер с кликом. Если этот вариант не подходит, то надо как-то по граням разбить сам куб. Не пробовал, не могу сказать как именно.
2. Ещё надо на каждый материал Inteactive=true
=============
БРРРР Я же давал ссылку: http://www.gotoandlearn.com/play?id=68
Вот сам пример http://gotoandlearn.com/files/pvcube.zip


Последний раз редактировалось Vasik1; 21.01.2009 в 12:43.
Старый 21.01.2009, 13:11
MafiaBoy вне форума Посмотреть профиль Отправить личное сообщение для MafiaBoy Найти все сообщения от MafiaBoy
  № 48  
Ответить с цитированием
MafiaBoy
[+6 04.02.09]

Регистрация: Jan 2009
Сообщений: 54
Vasik1
Во-первых Я делал код в соответствии с кодом Mur4ikа! Результат известен -куб без возможности клика по граням.
Во-вторых: Я посмотрел видео куба по твоей ссылки, скачал проект, посмотрел-работает всё чики-пуки. НО!!! Проект сделан с использованием Флеш КС3 и я не могу понять достаточно что там к чему, так как до этого возился долгое время с ФлешДевелоп. Но чувствую надо начинать проект с нуля во Флеш КС3, раз ничего не выходит с этим. Так вот там куб сделан с использованием клипов на гранях!!!
Мне вообще не понятно как там автор начудил два слоя, как добавил код папера, как просмотреть структуру файла в удобном вид, как создать проект с нуля и т.д.

Старый 21.01.2009, 13:12
Mur4ik вне форума Посмотреть профиль Отправить личное сообщение для Mur4ik Найти все сообщения от Mur4ik
  № 49  
Ответить с цитированием
Mur4ik
ветеран форума

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

Это Вы сейчас о чем вообще, о каких ошибках и о каком коде, вы мой листинг хоть смотрели?

Шесть плейнов конечно хорошо, но для данного случая это гемор расставлять их в куб.

На всякий случай прикрепил проект для FD (FD последней сборки)
в папке bin есть откомпелированный файл, проверьте его если он работает, значит где то у вас ошибочка в другом, если и он не работает, может браузер блокирует клики...
Вложения
Тип файла: rar AS3_PV3D_Test.rar (200.0 Кб, 40 просмотров)
__________________
trace("Остановите Землю, я сойду!!!");


Последний раз редактировалось Mur4ik; 21.01.2009 в 13:21.
Старый 21.01.2009, 13:14
MafiaBoy вне форума Посмотреть профиль Отправить личное сообщение для MafiaBoy Найти все сообщения от MafiaBoy
  № 50  
Ответить с цитированием
MafiaBoy
[+6 04.02.09]

Регистрация: Jan 2009
Сообщений: 54
Mur4ik
А куда ты его прикрепил?
Можно его скачать чтобы проверить вс( последний раз?

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

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

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


 


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


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