⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 body.as

📁 Flash 3D 人体模型,需要Sandy 3D API 3.0 以上版本支持
💻 AS
字号:
package
{
   import flash.net.LocalConnection;
   import flash.display.*; 
   import flash.events.*;
   import flash.ui.*;
   import flash.utils.Timer;
   import flash.events.TimerEvent;

   import sandy.core.Scene3D;
   import sandy.core.data.*;
   import sandy.core.scenegraph.*;
   import sandy.materials.*;
   import sandy.materials.attributes.*;
   import sandy.primitive.*;
   import sandy.util.*;
   import sandy.events.*;
   import caurina.transitions.*;


   public class Body extends Sprite 
   {
      private var scene:Scene3D;
	  private var camera:Camera3D;
	  private var tg:TransformGroup;
	  
	  private var shadingAt:PhongAttributes;
	 	  
	  //create the body 
	   private var body = new FemaleBody();	 
	   private var breast = new Breasts();
      
	   var rotationControl:Number;
       var init:Boolean = false;
	   //local conection
	   var incoming:LocalConnection = new LocalConnection();
	   var outgoing:LocalConnection = new LocalConnection();
	   
	   public function methodToControl(param:Number):void {
		   if(param ==0) repostion();
		   if(param >=10) controlLt(param);
		   if(param == 1) zoomIn();
		   if(param == 2) zoomOut();
		   if(param == 4) rotationControl = 4;
		   if(param == 5) rotationControl = 5;
		   if(param == 6) viewPoint(6);
		   if(param == 7) viewPoint(7);
		   if(param == 8) viewPoint(8);
		   if(param == 9) viewPoint(9);
       }

	   public function Body()
      { 
		 // We create the camera
		 incoming.connect("control");
		 incoming.client = this;
		 camera = new Camera3D( 1000, 1000,7);
		 camera.x = 0;
		 camera.y =0;
		 camera.z = -600;
		 camera.lookAt(0,0,0);
		
         var root:Group = createScene();
	     scene = new Scene3D( "scene", this, camera, root );
		 addEventListener( Event.ENTER_FRAME, enterFrameHandler );
      }

      // Create the scene graph based on the root Group of the scene
      private function createScene():Group
      {
         // Create the root Group
         var g:Group = new Group();		
		 tg = new TransformGroup('BodyGroup');
		 
		//material, texturing, skin ,color , appearance
	    //advanced light attributes
	    shadingAt = new PhongAttributes (true, 0.2, 15);
		shadingAt.ambient = 0.3;
        shadingAt.diffuse = 0.8;
        shadingAt.specular = 0.6;
        shadingAt.gloss = 10;

		 var materialAttr:MaterialAttributes = new MaterialAttributes(shadingAt);
         var material:Material = new ColorMaterial( 0x66FFFF, 0.3, materialAttr);
		  material.lightingEnable = true;
		 var app:Appearance = new Appearance( material);
		 
		  var material1:Material = new ColorMaterial( 0xFF0000, 1, materialAttr);
		  material1.lightingEnable = true;
		  var app1:Appearance = new Appearance( material1);
          
		 body.appearance  = app;
		 breast.appearance = app;

		 breast.container.buttonMode = true;
		 breast.container.addEventListener(MouseEvent.MOUSE_OVER,function(){
			        breast.appearance = app1;
	      });
		 breast.container.addEventListener(MouseEvent.MOUSE_OUT,function(){
			        breast.appearance = app;
	      });
		  breast.container.addEventListener(MouseEvent.CLICK,function(){
				   	outgoing.send("Hightlight", "React");
	      });
		 
        tg.addChild(body);
		tg.addChild(breast);
		tg.x = -8;
		tg.y=14;
		g.addChild(tg);
		return g;
      }

	//UI Event Handler
	   private function zoomIn():void {
		incoming.close();
		rotationControl = 5;
		repostion();
		Tweener.addTween(camera, {z:-58, time:2, transition:"linear"});
		Tweener.addTween(tg, {x:-0.5, time:2, transition:"linear"});
		Tweener.addTween(tg, {y:-9, time:2, transition:"linear"});
		
		var ticker:Timer = new Timer(1000,3);
        ticker.addEventListener(TimerEvent.TIMER_COMPLETE,timeSend);
        ticker.start();
        }
	  
	  private function zoomOut():void {
		Tweener.addTween(camera, {z:-600, time:2, transition:"linear"});
		Tweener.addTween(tg, {x:-8, time:2, transition:"linear"});
		Tweener.addTween(tg, {y:18, time:2, transition:"linear"});
        }
		
	  private function viewPoint(vp:Number):void{
		rotationControl = 5;
		repostion();
		switch(vp){
			case 6:
			tg.rotateY = -90;
			break;
			case 7:
			tg.rotateY = 90;
			break;
			case 8:
			tg.rotateX = -90;
			break;
			case 9:
			tg.rotateX = 90;
			break;
			}
	}
	
	private function repostion():void {
		Tweener.removeAllTweens();
		tg.rotateY = 0;
		tg.rotateX = 0;
        camera.z = -600;
		camera.fov = 7;
		tg.x = -8;
	    tg.y = 14;
		body.container.alpha = 1;
		shadingAt.ambient = 0.3;
        shadingAt.diffuse = 0.8;
        shadingAt.specular = 0.6;
        shadingAt.gloss = 10;
		}
		
	private function controlLt(pa:Number):void{
		if(pa>=10 && pa<=20) shadingAt.ambient = (pa-10)/10;
		if(pa>=21 && pa<=31) shadingAt.specular = (pa - 21)/10;
		if(pa>=32 && pa<=42) shadingAt.diffuse = (pa - 32)/10;
		if(pa>=43) shadingAt.gloss = pa-43;
	}
		
    private function timeSend(evt:TimerEvent):void{
		tg.destroy();
	   }
	   
   private function keyPressed(event:KeyboardEvent):void {
            switch(event.keyCode) {
				case Keyboard.UP:
					tg.rotateY +=10;
					break;
				case Keyboard.DOWN:
					tg.rotateY -=10;
					break;
				case Keyboard.RIGHT:
					tg.x +=1;
					break;
				case Keyboard.LEFT:
					tg.x -=1;
					break;
				case Keyboard.PAGE_DOWN:
					tg.z -=30;
					break;
				case Keyboard.PAGE_UP:
					tg.z +=30;
					break;	
			}
        }
		
  // The Event.ENTER_FRAME event handler tells the world to render
      private function enterFrameHandler( event : Event ) : void
      {
		 if(rotationControl == 5) tg.rotateY +=0;
		 else tg.rotateY -=5;
		 scene.render();
		 if(!init)  {
			stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPressed);
			init = true;
		}
      }
   }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -