package Engine
{
import flash.geom.Point;
import flash.display.*;
import flash.net.URLRequest;
import flash.geom.Rectangle;
import flash.geom.Point;
import flash.events.Event;
public class GraphicsManager
{
private static var m_images:Array = new Array();
private static var m_graphicsobjects:Array = new Array();
private static var m_loader:Loader;
private static var m_imageToSplit:Image;
private static var m_tileSize:Point;
private static var m_loadedImage:Image;
public static function GetImage(i_filename:String):Image
{
for each (var cur:Image in m_images)
{
if (cur.ImageName() == i_filename)
{
trace("curImagename is" + i_filename);
return cur;
}
}
LoadImage(i_filename,false);
return GetImage(i_filename);
}
// returns false if file can't be found
public static function LoadImage(i_filename:String, i_bool:Boolean):void
{
// create new loader for each image
m_loader = new Loader();
m_loadedImage = new Image();
m_loader.load(new URLRequest( i_filename ));
m_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, ImageLoadedComplete);
m_loadedImage.SetImageName(i_filename);
}
public static function ImageLoadedComplete(event:Event):void
{
trace("Image Load Complete");
m_loadedImage.SetImageData(m_loader.content);
m_images.push(m_loadedImage);
}
public static function StartSplitImage(event:Event):void
{
trace("ImageComplete");
var y:int;
var x:int;
var splitImage:Image;
var b:DisplayObject = m_imageToSplit.ImageData();
trace(m_imageToSplit.ImageData().height);
trace("split x [" + b.height + m_tileSize.x + "] width [" + m_imageToSplit.ImageData().width);
for (var imgY:int=0; imgY<m_imageToSplit.ImageData().width;imgY+=m_tileSize.x)
{
for (var imgX:int=0; imgX<m_imageToSplit.ImageData().height;imgX+=m_tileSize.y)
{
splitImage = new Image();
// splitImage.ImageData() = new DisplayObject();
var bitmapData:BitmapData = new BitmapData(m_tileSize.x, m_tileSize.y);
//splitImage.ImageData() = new BitmapData(i_tileSize.x * i_tileSize.y);
for (y=0; y<m_tileSize.y; y++)
{
for (x=0; x<m_tileSize.x; x++)
{
splitImage.ImageData().setPixel(x,y, m_imageToSplit.ImageData().getPixel(x,y));
// bitmapData.copyPixels(m_imageToSplit.ImageData(), new Rectangle(imgY,imgX,m_tileSize.x, m_tileSize.y), new Point(0,0));
trace("split Success1");
// m_graphicsobjects.push(splitImage);
}
}
}
}
}
public static function SplitImage(i_filename:String, i_tileSize:Point):void
{
m_imageToSplit = GetImage(i_filename);
m_tileSize = i_tileSize;
m_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, StartSplitImage);
trace("EndingSplitImage");
}
public static function GetSplitImage(i_filename:String, i_index:int):Image
{
return m_graphicsobjects[i_index];
}
}
}