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

📄 stars.as.svn-base

📁 Flex3实现的掼蛋游戏
💻 SVN-BASE
字号:
package org.papervision3d.objects
{
	// ______________________________________________________________________________

	// PAPER     ON    ERVIS   NPAPER  ISION   PE  IS  ON   PERVI  IO   APER   SI  PA
	// AP  VI   ONPA   RV  IO  PA      SI  PA  ER  SI  NP  PE      ON  AP  VI  ION AP
	// PERVI   ON  PE  VISIO   APER    IONPA   RV  IO  PA   RVIS   NP  PE  IS  ONPAPE
	// ER      NPAPER  IS      PE      ON  PE   ISIO   AP      IO  PA  ER  SI  NP PER
	// RV      PA  RV  SI      ERVISI  NP  ER    IO    PE  VISIO   AP   VISI   PA  RV

	// PAPERVISION 5 Alpha
	// Carlos Ulloa Matesanz

	// C4RL054321@gmail.com
	// www.noventaynueve.com
	// noventaynueve.com/blog

	import org.papervision3d.scenes.*;
	import org.papervision3d.core.proto.*;
	import org.papervision3d.materials.*;
	import org.papervision3d.core.geom.*;
	import org.papervision3d.Papervision3D;
	//import org.papervision3d.core.*;
	//import org.papervision3d.core.proto.*;

	import flash.display.*;
	import flash.geom.Point;
	import flash.utils.Dictionary;

	import com.blitzagency.xray.logger.XrayLog;


	/**
	* The Stars GeometryObject3D class lets you create and display 3D starfields.
	* <p/>
	*/
	import flash.display.MovieClip;

	public class Stars extends org.papervision3d.core.geom.Vertices3D
	{
		/**
		* A BitmapMaterial object that contains the material properties of the triangle.
		*/
		//public var material   :BitmapMaterial;

		/**
		* The number of stars.
		*/
		public var quantity :Number;

		/**
		* The width.
		*/
		public var width :Number;

		/**
		* Height
		*/
		public var height :Number;

		/**
		* Depth
		*/
		public var depth :Number;

		public var target:Sprite;


		/**
		* Default size of Plane if not texture is defined.
		*/
		static public var DEFAULT_SIZE :Number = 1000;

		/**
		* Default size of Plane if not texture is defined.
		*/
		static public var DEFAULT_STAGE_WIDTH :Number = 2048;
		static public var DEFAULT_STAGE_HEIGHT :Number = 2048;


		/**
		* Size of the stage.
		*/
		public var stageWidth  :Number;

		/**
		* Size of the stage.
		*/
		public var stageHeight :Number;

		private var log:XrayLog = new XrayLog();



		private var _bdCanvas :BitmapData;
		private var bm:Bitmap = new Bitmap();

		// ___________________________________________________________________________________________________
		//                                                                                               N E W
		// NN  NN EEEEEE WW    WW
		// NNN NN EE     WW WW WW
		// NNNNNN EEEE   WWWWWWWW
		// NN NNN EE     WWW  WWW
		// NN  NN EEEEEE WW    WW

		/**
		* Create new Stars object.
		* <p/>
		* @param	material	A BitmapMaterial object that contains the material properties of the object.
		* <p/>
		* @param	width		Width.
		* <p/>
		* @param	height		Height.
		* <p/>
		* @param	depth		Depth.
		* <p/>
		* @param	initObject	[optional] - An object that contains user defined properties with which to populate the newly created GeometryObject3D.
		* <p/>
		* It includes x, y, z, rotationX, rotationY, rotationZ, scaleX, scaleY scaleZ and a user defined data object.
		* <p/>
		* If data is not an object, it is ignored. All properties of the data field are copied into the new instance. The properties specified with data are publicly available.
		*/
		public function Stars( material:ColorMaterial, target:Sprite, quantity:Number=900, width:Number=1000, height:Number=1000, depth:Number=1000, initObject:Object=null )
		{
			if( target is Sprite )
			{
				super( new Array(), "Stars", initObject );

				this.material = material// || BitmapMaterial.DEFAULT;
				this.target = target;
				this.quantity = quantity || DEFAULT_SIZE;

				this.width  = width  || DEFAULT_SIZE;
				this.height = height || DEFAULT_SIZE;
				this.depth  = depth  || DEFAULT_SIZE;

				this.stageWidth  = target.width || DEFAULT_STAGE_WIDTH;
				this.stageHeight = target.height || DEFAULT_STAGE_HEIGHT;

				buildStars();

				_bdCanvas = new BitmapData( this.stageWidth, this.stageHeight, false, 0x00000000);
//				_bdCanvas.copyPixels( this.material.texture, this.material.texture.rect, new Point( 0, 0 ) );

				// Attach bitmap to canvas
				//var canvas :Sprite = target; //.createEmptyMovieClip( "iCentered", 10 );
				//canvas.addChildAt( _bdCanvas, canvas.getNextHighestDepth() );

				bm.bitmapData = _bdCanvas;
				target.addChild(bm);
				bm.x = -stageWidth/2; // - this.stageWidth /2;
				bm.y = -stageHeight/2;// - this.stageHeight /2;


				//target.graphics.beginBitmapFill( _bdCanvas );
				//target.graphics.endFill();

				//canvas.x = 0;//stage.stageWidth/2  - this.stageWidth /2;
				//canvas.y = 0; //stage.stageHeight/2 - this.stageHeight /2;
				//this.canvas = canvas;

//				this.screenZ = 66666666; // Backdrop
			}
			//else if( Papervision3D.VERBOSE )
				//log.debug( "Stars: Canvas not found" );
		}

		private function buildStars():void
		{
			var quantity:Number = this.quantity;
			var vertices:Array = this.geometry.vertices;

			var width  :Number = this.width;
			var height :Number = this.height;
			var depth  :Number = this.depth;

			var width2  :Number = width /2;
			var height2 :Number = height /2;
			var depth2  :Number = depth /2;

			// Vertices
			for( var i:Number = 0; i < quantity; i++ )
			{
				var x :Number = Math.random() * width  - width2;
				var y :Number = Math.random() * height - height2;
				var z :Number = Math.random() * depth  - depth2;

				var v :Vertex3D = new Vertex3D( x, y, z );
//v.data = new Object();
//v.data.color =(Math.floor( 0x60 + 0x80 * Math.random() ) << 24) + 0xFFFFFF;
				//var data:Object = new Object();
				//data.color =(Math.floor( 0x60 + 0x80 * Math.random() ) << 24) + 0xFFFFFF;
				//v.extra = data;
				vertices.push( v );
			}
		}

		public override function render( scene :SceneObject3D ):void
		{
			try
			{
				// Clear bitmap
				var sW2: Number = this.stageWidth /2;
				var sH2: Number = this.stageHeight /2;
				//log.debug("0", sW2 + ", " + sH2);
				var bd:BitmapData = this._bdCanvas;
				bd.fillRect( bd.rect, 0x000000);
				//log.debug("1", bd.width);
				// Paint stars
				
				var pixels :Number = 0;

				//log.debug("2");

				var color:int = material.fillColor || 0xFFFFFF;
				//log.debug("3");
				var v3d:Vertex3D;
				var v2d:Vertex2D;
				for each(v3d in geometry.vertices)
				{
					v2d = v3d.vertex2DInstance; 
					//log.debug("4", v.visible);
					if( v2d.visible )
					{
						_bdCanvas.setPixel( sW2 + v2d.x, sH2 + v2d.y, color );
						pixels++;
					}
				}
			}catch(e:Error)
			{
				log.error("stars.render error", e.message);
			}

			// Update stats
			scene.stats.pixels += pixels;
		}

	}
}

⌨️ 快捷键说明

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