본문 바로가기
배워보자!!/papervision3D

[papervision3d] 플래시3D 마우스에 반응하는 큐브

by norinda 2015. 4. 23.
728x90

이번엔

마우스 위치에 따라 회전이 달라지는 큐브입니다.

exid 하니 사진입니다.ㅎ

temp.zip




package  
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import org.papervision3d.objects.primitives.Cube;
	import org.papervision3d.view.BasicView;
	import org.papervision3d.materials.utils.MaterialsList;
	import org.papervision3d.materials.ColorMaterial;
	import org.papervision3d.materials.BitmapMaterial;
	import flash.display.BitmapData;
	import flash.display.Bitmap;
	import org.papervision3d.view.Viewport3D;
	public class main extends BasicView
	{
		private var viewport_:Viewport3D;
		private var cube : Cube;
		public function main() 
		{
			init();
		}
		private function init()
		{
			viewport_                  = new Viewport3D();
			viewport_.autoScaleToStage = true;
			viewport_.interactive      = true;
			addChild(viewport_);
			var bitmap1:BitmapData = new img1() as BitmapData;
			var bitmap2:BitmapData = new img2() as BitmapData;
			var bitmap3:BitmapData = new img3() as BitmapData;
			var bitmap4:BitmapData = new img4() as BitmapData;
			var bitmap5:BitmapData = new img5() as BitmapData;
			var bitmap6:BitmapData = new img6() as BitmapData;
			//var bit:Bitmap = new img1() as Bitmap;

			var image1:BitmapMaterial = new BitmapMaterial(bitmap1);
			var image2:BitmapMaterial = new BitmapMaterial(bitmap2);
			var image3:BitmapMaterial = new BitmapMaterial(bitmap3);
			var image4:BitmapMaterial = new BitmapMaterial(bitmap4);
			var image5:BitmapMaterial = new BitmapMaterial(bitmap5);
			var image6:BitmapMaterial = new BitmapMaterial(bitmap6);
			var material:MaterialsList = new MaterialsList();
			image1.smooth = true;
			image2.smooth = true;
			image3.smooth = true;
			image4.smooth = true;
			image5.smooth = true;
			image6.smooth = true;
			
			image1.interactive = true;
			image2.interactive = true;
			image3.interactive = true;
			image4.interactive = true;
			image5.interactive = true;
			image6.interactive = true;
			
			image1.doubleSided = true;
			image2.doubleSided = true;
			image3.doubleSided = true;
			image4.doubleSided = true;
			image5.doubleSided = true;
			image6.doubleSided = true;
			
			material.addMaterial(image1 , "front");
			material.addMaterial(image2 , "back");
			material.addMaterial(image3 , "left");
			material.addMaterial(image4 , "right");
			material.addMaterial(image5 , "top");
			material.addMaterial(image6 , "bottom");
			cube = new Cube(material,300,300,300,10,10,10);
			scene.addChild(cube);
			addEventListener(Event.ENTER_FRAME, render);
		}
		public function render(e:Event) {
			var xDist:Number = mouseX - stage.stageWidth * 0.5;
			var yDist:Number = mouseY - stage.stageHeight * 0.5;

			cube.rotationY += xDist*0.02;
			cube.rotationX += yDist*0.02;

			renderer.renderScene(scene, camera, viewport);
		}
	}
}


반응형

댓글