Cutting Tiles from a MovieClip

My class works if I load the image using a url but does not work if I pass in a MovieClip. Any idea why?


package  {
    import flash.events.*;
    import flash.display.*;
    import flash.geom.*;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    
    public class CutTiles extends EventDispatcher {
        private var imageLoader:Loader;
        private var imageObj:MovieClip;
        public var bitmapArray:Array;
        public var progressPercentage:Number = 0;
        
        public function CutTiles(imageObj:MovieClip, url:String = "") {
            this.imageObj = imageObj;
            if(imageObj == null)
            {
                if(url != "")
                {
                    imageLoader = new Loader();
                    imageLoader.load(new URLRequest(url));
                    imageLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, imageLoading);
                    imageLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, imageLoaded);
                }
                else
                {
                    throw new Error("Need at least 1 valid parameter");
                }
            }
            else
            {
                imageLoaded();
            }
        }
        
        private function imageLoaded(e:Event = null):void
        {
            if(imageObj == null)
            {
                imageObj = new MovieClip();
                imageObj.addChild(imageLoader);
            }
            
            var mainImage:BitmapData = new BitmapData(imageObj.width,imageObj.height);
            var tileX:Number = 36; 
            var tileY:Number = 36;
        
            var tilesH:uint = Math.ceil(mainImage.width / tileX); // Number  of Columns
            var tilesV:uint = Math.ceil(mainImage.height / tileY);// Number of Rows
        
            mainImage.draw(imageObj);
            imageObj.x += 500;
        
            bitmapArray = new Array();
        
            for (var i:Number = 0; i < tilesH; i++)
            {
                bitmapArray* = new Array();
                for (var n:Number = 0; n < tilesV; n++)
                {
                    var tempData:BitmapData = new BitmapData(tileX,tileY);
                    var tempRect = new Rectangle((tileX * i),(tileY * n),tileX,tileY);
                    tempData.copyPixels(mainImage,tempRect,new Point(0,0));
                    bitmapArray*[n] = tempData;
                }
            }
        
            if(imageLoader)
            {
                imageLoader.contentLoaderInfo.removeEventListener(ProgressEvent.PROGRESS, imageLoading);
                imageLoader.contentLoaderInfo.removeEventListener(Event.COMPLETE, imageLoaded);
            }
            dispatchEvent(new Event("Finished"));
        }
        private function imageLoading(e:ProgressEvent):void
        {
            progressPercentage = Math.ceil((e.bytesLoaded / e.bytesTotal)*100);
            trace(progressPercentage);
        }
    }
    
}

Here is where I create my object on the timeline for testing the class. myMC is a library movieclip and yes it is exported for actionscript.


var ct:CutTiles = new CutTiles(new myMC()); //this doesnt work
//var ct:CutTiles = new CutTiles(null, "myImage.jpg");  //this works
ct.addEventListener("Finished", loaded);


function loaded(e:Event):void
{
    var bitmapArray:Array = ct.bitmapArray;
    for (var j:uint =0; j < bitmapArray.length; j++)
    {


        for (var k:uint=0; k < bitmapArray[j].length; k++)
        {


            var bitmap:Bitmap=new Bitmap(bitmapArray[j][k]);
            this.addChild(bitmap);
            bitmap.x = (j+1)* bitmap.width;
            bitmap.y = (k+1)* bitmap.height;


        }
    }
}