consegui esta clase para tomar un sprite desde un spritesheet y mostrarlo en pantalla
Código ActionScript :
package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.geom.Point; import flash.geom.Rectangle; public class SpriteSheet extends Sprite { private var tileSheetBitmapData:BitmapData; private var canvasBitmapData:BitmapData; private var tileWidth:int; private var tileHeight:int; private var rowLength:int; private var tileRectangle:Rectangle; private var tilePoint:Point; public function SpriteSheet(tileSheetBitmap:Bitmap, width:Number = 32, height:Number = 32) { tileSheetBitmapData = tileSheetBitmap.bitmapData; tileWidth = width; tileHeight = height; rowLength = int(tileSheetBitmap.width / width); tileRectangle = new Rectangle(0, 0, tileWidth, tileHeight); tilePoint = new Point(0, 0); canvasBitmapData = new BitmapData(tileWidth, tileHeight, true); var canvasBitmap:Bitmap = new Bitmap(canvasBitmapData); addChild(canvasBitmap); drawTile(0); } public function drawTile(tileNumber:int):void { tileRectangle.x = int((tileNumber % rowLength)) * tileWidth; tileRectangle.y = int((tileNumber / rowLength)) * tileHeight; canvasBitmapData.copyPixels(tileSheetBitmapData, tileRectangle, tilePoint); } } }
como ven se le pasa como parametro un bitmap y las dimenciones de cada sprite
lo que quiero es modificarla para que se le pase un parametro "escala" que sea un numero entero y que con eso se multiplique el tamaño del sprite
intente acerlo pero hay un error, se encima el sprite agrandado con el normal
Código ActionScript :
package src.clases { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.Sprite; import flash.geom.Matrix; import flash.geom.Point; import flash.geom.Rectangle; public class SpriteSheet extends Sprite { private var tileSheetBitmapData:BitmapData; private var canvasBitmapData:BitmapData; private var tileWidth:int; private var tileHeight:int; private var rowLength:int; private var tileRectangle:Rectangle; private var tilePoint:Point; public function SpriteSheet(tileSheetBitmap:Bitmap, width:Number = 16, height:Number = 16, escala:int = 3) { var matrix:Matrix = new Matrix(); matrix.scale(escala, escala); tileSheetBitmapData = tileSheetBitmap.bitmapData; tileWidth = width; tileHeight = height; rowLength = int(tileSheetBitmap.width / width); tileRectangle = new Rectangle(0, 0, tileWidth, tileHeight); tilePoint = new Point(0, 0); canvasBitmapData = new BitmapData(tileWidth*3, tileHeight*3); canvasBitmapData.draw(tileSheetBitmapData, matrix); var canvasBitmap:Bitmap = new Bitmap(canvasBitmapData); addChild(canvasBitmap); drawTile(0); } public function drawTile(tileNumber:int):void { tileRectangle.x = int((tileNumber % rowLength)) * tileWidth; tileRectangle.y = int((tileNumber / rowLength)) * tileHeight; canvasBitmapData.copyPixels(tileSheetBitmapData, tileRectangle, tilePoint); } } }
si me pudieran ayudar para modificar la clase y poder seguir