Guest User

Untitled

a guest
Jul 23rd, 2018
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. package com.flame.display
  2. {
  3.     import com.flame.system.Base;
  4.    
  5.     import flash.display.BitmapData;
  6.     import flash.geom.Point;
  7.     import flash.geom.Rectangle;
  8.    
  9.     public class Spritemap extends Base
  10.     {  
  11.         private var __mBitmaps:Array;
  12.         private var __mBlockWidth:int;
  13.         private var __mBlockHeight:int;
  14.        
  15.         public function Spritemap(bitmapData:BitmapData, backgroundColor:uint=0xFFFF00FF, borderColor:uint=0xFFFFFFFF):void
  16.         {
  17.             __mBitmaps = new Array;
  18.             __mBlockWidth = __doCalculateWidth(bitmapData, borderColor);
  19.             __mBlockHeight = __doCalculateHeight(bitmapData, borderColor);
  20.             __doProcessBitmaps(bitmapData, backgroundColor);
  21.         }
  22.        
  23.         private function __doCalculateHeight(bitmapData:BitmapData, borderColor:uint):int
  24.         {
  25.             var result:int = 0;
  26.             var maxHeight:int = bitmapData.height;
  27.            
  28.             while (result != maxHeight)
  29.             {
  30.                 if (bitmapData.getPixel32(0, ++result) == borderColor) {
  31.                     break;
  32.                 }
  33.             }
  34.            
  35.             return result;
  36.         }
  37.        
  38.         private function __doCalculateWidth(bitmapData:BitmapData, borderColor:uint):int
  39.         {
  40.             var result:int = 0;
  41.             var maxWidth:int = bitmapData.width;
  42.            
  43.             while (result != maxWidth)
  44.             {
  45.                 if (bitmapData.getPixel32(++result, 0) == borderColor) {
  46.                     break;
  47.                 }
  48.             }
  49.            
  50.             return result;
  51.         }
  52.        
  53.         private function __doProcessBitmaps(bitmapData:BitmapData, backgroundColor:uint):void
  54.         {
  55.             var maxFramesX:int = (bitmapData.width / __mBlockWidth);
  56.             var maxFramesY:int = (bitmapData.height / __mBlockHeight);
  57.            
  58.             var block:BitmapData = new BitmapData(__mBlockWidth, __mBlockHeight);
  59.             var point:Point = new Point;
  60.             var rectBuffer:Rectangle = new Rectangle(0, 0, __mBlockWidth, __mBlockHeight);
  61.            
  62.             for (var i:int = 0; i < maxFramesY; i++)
  63.             {
  64.                 __mBitmaps.push(new Array);
  65.                
  66.                 for (var j:int = 0; j < maxFramesX; j++)
  67.                 {
  68.                     rectBuffer.x = (__mBlockWidth * j) + (j > 0 ? j : 0);
  69.                    
  70.                     block.copyPixels(bitmapData, rectBuffer, point);
  71.                    
  72.                     var rect:Rectangle = block.getColorBoundsRect(backgroundColor, backgroundColor, false);
  73.                    
  74.                     if (rect.width && rect.height)
  75.                     {
  76.                         var data:BitmapData = new BitmapData(rect.width, rect.height);
  77.                        
  78.                         data.copyPixels(block, rect, point);
  79.                         data.threshold(data, data.rect, point, "==", backgroundColor);
  80.                        
  81.                         __mBitmaps[i].push(data);
  82.                     } else {
  83.                         break;
  84.                     }
  85.                 }
  86.                
  87.                 rectBuffer.y += (__mBlockHeight + 1);
  88.             }
  89.         }
  90.        
  91.         //
  92.         // GET AND SET
  93.         //
  94.        
  95.         public function getBitmapDataAt(row:uint, column:uint):BitmapData
  96.         {
  97.             return __mBitmaps[row][column];
  98.         }
  99.        
  100.         public function getRow(row:uint):Array
  101.         {
  102.             return __mBitmaps[row];
  103.         }
  104.     }
  105. }
Add Comment
Please, Sign In to add comment