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

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

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

Регистрация: Jun 2006
Сообщений: 60
Здравствуйте! Схожая, точнее идентичная проблема, но никак не получается сней разобраться.
Код AS3:
package {
	import flash.events.Event;
	import flash.events.MouseEvent;
	import flash.geom.Point;
	import flash.ui.Mouse;
	import flash.display.Sprite;
	import flash.display.MovieClip;
	import flash.display.Loader;
	import flash.net.URLRequest;
	import org.papervision3d.view.Viewport3D;
	import org.papervision3d.scenes.Scene3D;
	import org.papervision3d.cameras.Camera3D;
	import org.papervision3d.materials.MovieMaterial;
	import org.papervision3d.objects.primitives.*;
	import org.papervision3d.render.BasicRenderEngine;
 
	public class PV3DSphere extends Sprite {
		private var viewport:Viewport3D;
		private var scene:Scene3D;
		private var camera:Camera3D;
		private var Material:MovieMaterial;
		private var sphere:Sphere;
		private var render:BasicRenderEngine;
		private var l:Loader;
		private var czoom;
		private var rotationYStart;
		private var rotationXStart;
		private var startPoint:Point;
		private var sphere_radius;
		private var poke:Poke;
 
 
		public function PV3DSphere():void {
			l=new Loader();
			l.load(new URLRequest("pano.swf"));
			l.contentLoaderInfo.addEventListener(Event.COMPLETE,init)
		}
		private function init(e:Event):void {
			viewport=new Viewport3D(stage.stageWidth ,stage.stageHeight);
			addChild(viewport);
			scene = new Scene3D();
			camera = new Camera3D();
			render = new BasicRenderEngine();
			poke=new Poke()
			setdecor()
		}
		private function setdecor():void {
			Material=new MovieMaterial(l)
			Material.doubleSided=true
			sphere_radius=stage.width/2
			sphere=new Sphere(Material,sphere_radius,30,30);
			sphere.x=sphere.y=sphere.z=0
			scene.addChild(sphere);
			camera.x=camera.y=camera.z=0
			czoom=0;
			rotationYStart=0
			rotationXStart=0
			camera.rotationX=camera.rotationY=0
			renderer()
			this.addEventListener(MouseEvent.MOUSE_WHEEL, mzoom);
			this.addEventListener(MouseEvent.CLICK, clickHandler);
			this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
			this.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
			this.addEventListener(MouseEvent.MOUSE_OUT, mouseUpHandler);
			this.addEventListener(Event.MOUSE_LEAVE, mouseUpHandler);
 
 
		}
		private function clickHandler(event:MouseEvent):void {
			dispatchEvent(new Event("doSomething"));	
		}
		private function mouseDownHandler(event:MouseEvent):void {
			startPoint = new Point(stage.mouseX,stage.mouseY);
			rotationYStart = camera.rotationY;
			rotationXStart = camera.rotationX;
			this.addEventListener(MouseEvent.MOUSE_MOVE, mouseMovie);
			renderer()
 
		}
		private function mouseUpHandler(event:MouseEvent):void {
			this.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMovie);
		}
		private function mouseMovie(event:MouseEvent):void {
			camera.rotationY = rotationYStart +(180/Math.PI*Math.acos(1-startPoint.x/sphere_radius)-180/Math.PI*Math.acos(1-stage.mouseX/sphere_radius))/(camera.zoom/40)
			camera.rotationX = rotationXStart +(180/Math.PI*Math.acos(1-startPoint.y/sphere_radius)-180/Math.PI*Math.acos(1-stage.mouseY/sphere_radius))/(camera.zoom/40)
			if(camera.rotationX > 60){camera.rotationX= 60 }
			if(camera.rotationX <-60){camera.rotationX=-60 }
			renderer()
		}
 
		private function mzoom(event:MouseEvent):void {
 			camera.zoom+=event.delta*2
			if(camera.zoom>100){camera.zoom=100}
			if(camera.zoom<40){camera.zoom=40}
			renderer()
    	}
		private function renderer():void {
			render.renderScene(scene, camera, viewport);
		}
	}
}
Здесь я добавляю прослушку на клик -
Код AS3:
this.addEventListener(MouseEvent.CLICK, clickHandler);
А здесь создаю свой вещатель (если не ошибаюсь)
Код AS3:
private function clickHandler(event:MouseEvent):void {
	dispatchEvent(new Event("doSomething"));	
}
В качестве MovieMaterial использую SWF "pano.swf" с следующим кодом:
Код AS3:
package  
{
	import flash.display.MovieClip;
	import flash.ui.Mouse;	
	import flash.events.MouseEvent;
	import flash.events.Event;
	public class Pano extends MovieClip
	{
		var mouseptr:MovieClip = new door();
		public function Pano() {			
			addChild(mouseptr);
			mouseptr.x=200
			mouseptr.y=200
			mouseptr.addEventListener(MouseEvent.CLICK, clickHandler);
			mouseptr.addEventListener("doSomething", MouseClickBut);
		}
 
		public function clickHandler(e:MouseEvent) {
			mouseptr.visible=false;
		}
		private function MouseClickBut(event:Event):void{
			mouseptr.visible=false;
		}
	}
}
Клик не срабатывает, подскажите почему?
spher.rar
__________________
kto™

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

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

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


 


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


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