[AS3] Problem With External AS or Class File

I am trying to remove a certain portion of my code from my main document class and am trying to either incorporate it into an external as file that I can include and have the code run from there, or set it up into an external class (it’s own class structure). However, either way that I do it, I run into some issues. To start, when I try to include the file, I have the include line done properly, but I am getting an error 5007. The code I am trying to include is this:


        var loader:Loader;
        var xmlLoader:URLLoader;
        var xml:XML;
        var screenBitmap:Bitmap;
        var screenBitmapData:BitmapData;
        var tilesBitmapData:BitmapData;
        var spriteWidth:uint;
        var spriteHeight:uint;
        var tileWidth:uint;
        var tileHeight:uint;
        var tileLength:uint;
        var tileLayers:uint;
        var spriteSource:String;
        var tiles:Array = new Array();
        var tileCoordinates:Array = new Array();
        var tileset:Array = new Array();
        
        
        function mapLoad(map) {
            xmlLoader = new URLLoader();
            xmlLoader.addEventListener(Event.COMPLETE, xmlLoadComplete2);
            xmlLoader.load(new URLRequest("tiled/"+map+".tmx"));
        }
        
        function xmlLoadComplete2(e:Event) {
            xml = new XML(e.target.data);

            tileLength = xml.layer.data.tile.length();
            spriteWidth = xml.attribute("width");
            spriteHeight = xml.attribute("height");
            tileWidth = xml.attribute("tilewidth");
            tileHeight = xml.attribute("tileheight");
            spriteSource = xml.tileset.image.attribute("source");

            for (var code:String in xml.layer) {
                tiles

= new Array();
for each (var code2 in xml.layer.data

.tile.attribute("gid")) {
                    tiles

.push(code2);
}
}
for (var tileX = 0; tileX < spriteWidth; tileX++) {
tileset[tileX32] = new Array();
tileCoordinates[tileX] = new Array();
for (var tileY = 0; tileY < spriteHeight; tileY++) {
tileCoordinates[tileX][tileY] = new Array();
tileset[tileX * 32][tileY * 32] = new Tile(“Floor”,false,tileX,tileY);
for (var layer = 0; layer < tiles.length; layer++) {
tileCoordinates[tileX][tileY].push(tiles[layer][(tileX+(tileY
spriteWidth))]);
}
var xmldoc = xml.objectgroup.object.(@x == tileX32 && @y == tileY32);
if (xmldoc. @ gid > 0) {
tileCoordinates[tileX][tileY][2] = xmldoc. @ gid;
tileset[tileX * 32][tileY * 32].barrier = true;
tileset[tileX * 32][tileY * 32].type = “NPC”;
if (xmldoc. @ type == “NPC”) {
tileset[tileX * 32][tileY * 32].newNPC(xmldoc.@name,xmldoc.quest);
}
}
}
}

        loader = new Loader();
        loader.contentLoaderInfo.addEventListener(Event.INIT,tilesLoadInit2);
        loader.load(new URLRequest(spriteSource));
    }
     function tilesLoadInit2(e:Event):void {
        tilesBitmapData = Bitmap(loader.content).bitmapData;
        screenBitmapData = new BitmapData(spriteWidth * tileWidth,spriteHeight * tileHeight,false,0x22ffff);
        for (var layer = 0; layer < 3; layer++) {
            for (var spriteForX = 0; spriteForX < spriteWidth; spriteForX++) {
                for (var spriteForY = 0; spriteForY < spriteHeight; spriteForY++) {

                    var tileNum:int = int(tileCoordinates[spriteForX][spriteForY][layer]);
                    var destY:int = spriteForY * tileWidth;
                    var destX:int = spriteForX * tileWidth;
                    var sourceY:int = Math.ceil(tileNum / 32) - 1;
                    var sourceX:int=(((tileNum/32)-(sourceY))*32-1);

                    screenBitmapData.copyPixels(tilesBitmapData,new Rectangle(sourceX*tileWidth,sourceY*tileWidth,tileWidth,tileHeight), new Point(destX,destY));
                }
            }
        }
        //display screen by adding screenBitmapData to screenBitmap and add screenBitmap data to displaylist
        screenBitmap = new Bitmap(screenBitmapData);
        TileCode(parent).container.addChild(screenBitmap);
        TileCode(parent).mapset(15,33);
        TileCode(parent).loadMapm = true;
    }
 
And the error is that 5007: An ActionScript file must have at least one externally visible definition.

Now, if I try to set this up as an external class file, I have it arranged like so:

package {

import flash.display.MovieClip;
import flash.display.Loader;
import flash.events.*;
import flash.net.URLRequest;
import flash.net.URLLoader;
import flash.display.BitmapData;
import flash.display.Bitmap;
import flash.geom.*;
import flash.display.Sprite;

public class loadMap extends MovieClip{
    private var loader:Loader;
    public var xmlLoader:URLLoader;
    private var xml:XML;
    public var screenBitmap:Bitmap;
    private var screenBitmapData:BitmapData;
    private var tilesBitmapData:BitmapData;
    private var spriteWidth:uint;
    private var spriteHeight:uint;
    private var tileWidth:uint;
    private var tileHeight:uint;
    private var tileLength:uint;
    private var tileLayers:uint;
    private var spriteSource:String;
    private var tiles:Array = new Array();
    public var tileCoordinates:Array = new Array();
    public var tileset:Array = new Array();
    
    public function loadMap() {
        xmlLoader = new URLLoader();
        xmlLoader.addEventListener(Event.COMPLETE, xmlLoadComplete);
        xmlLoader.load(new URLRequest("tiled/"+map+".tmx"));
    }
    
    private function xmlLoadComplete(e:Event) {
        xml = new XML(e.target.data);

        tileLength = xml.layer.data.tile.length();
        spriteWidth = xml.attribute("width");
        spriteHeight = xml.attribute("height");
        tileWidth = xml.attribute("tilewidth");
        tileHeight = xml.attribute("tileheight");
        spriteSource = xml.tileset.image.attribute("source");

        for (var code:String in xml.layer) {
            tiles
 = new Array();
                for each (var code2 in xml.layer.data

.tile.attribute(“gid”)) {
tiles

.push(code2);
                }
            }
            for (var tileX = 0; tileX < spriteWidth; tileX++) {
                tileset[tileX*32] = new Array();
                tileCoordinates[tileX] = new Array();
                for (var tileY = 0; tileY < spriteHeight; tileY++) {
                    tileCoordinates[tileX][tileY] = new Array();
                    tileset[tileX * 32][tileY * 32] = new Tile("Floor",false,tileX,tileY);
                    for (var layer = 0; layer < tiles.length; layer++) {
                        tileCoordinates[tileX][tileY].push(tiles[layer][(tileX+(tileY*spriteWidth))]);
                    }
                    var xmldoc = xml.objectgroup.object.(@x == tileX*32 && @y == tileY*32);
                    if (xmldoc. @ gid > 0) {
                        tileCoordinates[tileX][tileY][2] = xmldoc. @ gid;
                        tileset[tileX * 32][tileY * 32].barrier = true;
                        tileset[tileX * 32][tileY * 32].type = "NPC";
                        if (xmldoc. @ type == "NPC") {
                            tileset[tileX * 32][tileY * 32].newNPC(xmldoc.@name,xmldoc.quest);
                        }
                    }
                }
            }

            //loader = new Loader();
            //loader.contentLoaderInfo.addEventListener(Event.INIT,tilesLoadInit);
            //loader.load(new URLRequest(spriteSource));
        }
        private function tilesLoadInit(e:Event):void {
            tilesBitmapData = Bitmap(loader.content).bitmapData;
            screenBitmapData = new BitmapData(spriteWidth * tileWidth,spriteHeight * tileHeight,false,0x22ffff);
            for (var layer = 0; layer < 3; layer++) {
                for (var spriteForX = 0; spriteForX < spriteWidth; spriteForX++) {
                    for (var spriteForY = 0; spriteForY < spriteHeight; spriteForY++) {

                        var tileNum:int = int(tileCoordinates[spriteForX][spriteForY][layer]);
                        var destY:int = spriteForY * tileWidth;
                        var destX:int = spriteForX * tileWidth;
                        var sourceY:int = Math.ceil(tileNum / 32) - 1;
                        var sourceX:int=(((tileNum/32)-(sourceY))*32-1);

                        screenBitmapData.copyPixels(tilesBitmapData,new Rectangle(sourceX*tileWidth,sourceY*tileWidth,tileWidth,tileHeight), new Point(destX,destY));
                    }
                }
            }
            //display screen by adding screenBitmapData to screenBitmap and add screenBitmap data to displaylist
            screenBitmap = new Bitmap(screenBitmapData);
            TileCode(parent).container.addChild(screenBitmap);
            TileCode(parent).mapset(15,33);
            TileCode(parent).loadMapm = true;
        }
        

    }
    
}

I would love to call it from my document class file like loadMap(map) then it does everything from there, but that gives me issues as well. My big issue at the moment is that the TileCode(parent) portion of it returns null. I have certain variables in the document class file that need to stay native to the document class, but gets manipulated and adjusted in this external class. I am unable to access any files within TileCode (the document class). Flash IDE allows me to access the variables when typing them out, but the actual value is null.