The Easiest Way to Save and Share Code Snippets on the web

TerrainObjectSpriteSheetRenderer - as3isolib.v2

actionscript3

posted: Mar, 28th 2011 | jump to bottom

package testing.renderers
{
	import as3isolib.v2.core.BaseEntityImpl;
	import as3isolib.v2.core.BaseObjectRendererImpl;
	import as3isolib.v2.data.RenderData;
	import as3isolib.v2.utils.RenderDataUtil;
 
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.geom.Rectangle;
 
	public class TerrainObjectSpriteSheetRenderer extends BaseObjectRendererImpl
	{
		[Embed( source="assets/images/spriteSheet.json.xml", mimeType="application/octet-stream" )]
		static private const SPRITE_SHEET_DATA_CLASS:Class;
 
		[Embed( source="assets/images/spriteSheet.png" )]
		static private const SPRITE_SHEET_IMAGE_CLASS:Class;
 
		public function TerrainObjectSpriteSheetRenderer()
		{
			if ( !isRenderDataInitialized )
			{
				initializeRenderData();
				isRenderDataInitialized = true;
			}
		}
 
		static private var renderDataArray:Vector.<RenderData> = Vector.<RenderData>([]);
 
		static private var isRenderDataInitialized:Boolean;
 
		static private function initializeRenderData():void
		{
 
			var rect:Rectangle = new Rectangle();
			var bmp:Bitmap = new SPRITE_SHEET_IMAGE_CLASS();
			var clone:RenderData;
 
			var src:RenderData = RenderDataUtil.getRenderData( bmp );
			src.xOffset = -62;
			src.yOffset = -102;
			src.leftSpillover = 12;
			src.rightSpillover = 10;
 
			var xml:XML = XML( new SPRITE_SHEET_DATA_CLASS());
			var node:XML;
			var nodes:XMLList = xml..SubTexture;
 
			for each ( node in nodes )
			{
				//create the renderData objects
				clone = src.clone() as RenderData;
				clone.cx = int( node.@x );
				clone.cy = int( node.@y );
				clone.cw = int( node.@width );
				clone.ch = int( node.@height );
 
				renderDataArray.push( clone );
			}
		}
 
		override public function render( target:BaseEntityImpl ):RenderData
		{
			var i:int = Math.random() * renderDataArray.length;
			return renderDataArray[ i ];
		}
	}
}
18 views