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




