zoukankan      html  css  js  c++  java
  • flash 3d基础学习2

    随机创建多个对象

    上一篇做了一绕z轴坐标旋转的正方体,这一篇随机创建1000个点,并进行尝试排序以及向屏幕移动。当z坐标小于0时移除对象。

    package
    {
    	import flash.display.Sprite;
    	import flash.events.Event;
    	
    	/**
    	 *  @author:Gaara
    	 *  2012-3-5
    	 *
    	 **/
    	[SWF(width="800", height="600" ,frameRate="12", backgroundColor="#000000")]
    	public class TestCos extends Sprite
    	{
    		/** 绘制小球  **/
    		private var ballVec:Array = new Array;
    		
    		/**观察者与屏幕距离  **/
    		private var D:Number = 1000;
    		
    		/**旋转角度  **/
    		private var angelT:Number = 0.001;
    		
    		/** 弧度 **/
    		private var radian:Number = angelT * 180 /Math.PI;
    		
    		/** 消失点 **/
    		private var vpX:Number = 0;
    		private var vpY:Number = 0;
    		
    		
    		public function TestCos()
    		{
    			
    			/*			this.x = stage.stageWidth / 2;
    			this.y = stage.stageHeight / 2;*/
    			
    			for (var i:int = 0; i < 1000; i++) 
    			{
    				var ball:Ball = new Ball(Math.random()*100000% stage.stageWidth,Math.random()*100000% stage.stageHeight,Math.random()*1000);
    				addChild(ball);
    				ballVec.push(ball);
    			}
    			
    			ballVec.sortOn("_z",Array.DESCENDING | Array.NUMERIC);
    			
    			
    			for (var j:int = 0; j < ballVec.length; j++) 
    			{
    				var ball2:Ball = ballVec[j];
    				setChildIndex(ball2,j);
    			}
    			
    			this.addEventListener(Event.ENTER_FRAME,onAdd);
    		}
    		
    		protected function onAdd(event:Event):void
    		{
    			
    			
    			for (var i:int = 0; i < ballVec.length; i++) 
    			{
    				var ball:Ball = ballVec[i];
    				/*				var _x:Number = ball._x*Math.cos(radian) - ball._y*Math.sin(radian);
    				var _y:Number = ball._y*Math.cos(radian) + ball._x*Math.sin(radian);
    				
    				ball._x = _x ;
    				ball._y = _y ;*/
    				ball._z -= 5;
    				var myRadio:Number = D/(D + ball._z);
    				
    				if(ball._z <= 0){
    					ballVec.splice(i,1);
    					removeChild(ball);
    				}
    				else{
    					var pX:Number = (ball._x - vpX) * myRadio;
    					var pY:Number = (ball._y - vpY) * myRadio;
    					ball.x = vpX + pX;  
    					ball.y = vpY + pY;
    					
    					trace("myRadio:" + myRadio+" px:" + pX +" py:" + pY);
    					ball.scaleX = ball.scaleY =  myRadio;
    					
    					ball.alpha = 100 * myRadio;
    				}
    			}
    		}
    	}
    }
    

    下午把球换成树

    package
    {
    	import flash.display.Sprite;
    	
    	/**
    	 *  @author:Gaara
    	 *  2012-3-6
    	 *
    	 **/
    	public class Tree extends Sprite
    	{
    		public function Tree(x:Number,y:Number,z:Number)
    		{
    			this._x = x;
    			this._y = y;
    			this._z = z;
    			
    			graphics.lineStyle(0, 0xffffff);
    			graphics.lineTo(0, -140 - Math.random() * 20);
    		    graphics.moveTo(0, -30 - Math.random() * 30);
    			graphics.lineTo(Math.random() * 80 - 40,-100 - Math.random() * 40);
    			graphics.moveTo(0, -60 - Math.random() * 40);
    			graphics.lineTo(Math.random() * 60 - 30,-110 - Math.random() * 20);
    			
    		}
    		
    		
    		public var _x:Number;
    		public var _y:Number;
    		public var _z:Number;
    	}
    }
    
  • 相关阅读:
    hdu 3790 最短路径问题
    hdu 2112 HDU Today
    最短路问题 以hdu1874为例
    hdu 1690 Bus System Floyd
    hdu 2066 一个人的旅行
    hdu 2680 Choose the best route
    hdu 1596 find the safest road
    hdu 1869 六度分离
    hdu 3339 In Action
    序列化和反序列化
  • 原文地址:https://www.cnblogs.com/riaol/p/2382375.html
Copyright © 2011-2022 走看看