일단 코드부터.

//버튼 클래스
package {
        import flash.display.Sprite;
        import flash.display.Bitmap;
        import flash.display.BitmapData;
        import flash.filters.ColorMatrixFilter;
        
        import flash.display.Loader;
        import flash.display.LoaderInfo;
        import flash.net.URLRequest;
        import flash.events.Event;
        
        public class TableButton extends Sprite{
                var _rgbScreenImage:RGBScreenImage;
                var _rgbImageColor:uint;
                var defaultFilter:ColorMatrixFilter = null;
                var hotFilter:ColorMatrixFilter;
                //var selectableFilter:ColorMatrixFilter;

                public function TableButton(buttonImage:Bitmap/*, colorIndex:uint*/){
                        //filter set
                        var BRIGHT_AMOUNT:int = 1;//1~10
                        var matrix:Array = new Array();
                        
                        matrix = matrix.concat([0.7, 0, 0, 0, BRIGHT_AMOUNT*50]);//red
                        matrix = matrix.concat([0, 0.7, 0, 0, BRIGHT_AMOUNT*50]);//green
                        matrix = matrix.concat([0, 0, 0, 0, 0]);//blue
                        matrix = matrix.concat([0, 0, 0, 1, 0]);//alpha
                        
                        hotFilter = new ColorMatrixFilter(matrix);
                        
                        //image load start
                        _rgbImageColor = 0x000000;//colorIndex;
                        this.addChild(buttonImage);
                        
                        _rgbScreenImage = new RGBScreenImage(buttonImage, _rgbImageColor);
                }
                
                public function hOverSetFilter():void{
                        this.filters = [hotFilter];
                }
                
                public function hOutSetFilter():void{
                        this.filters = [defaultFilter];
                }
                
                public function ():void{
                        //click event
                }

                public function getRGBScreenImage():BitmapData{
                        return _rgbScreenImage.getRGBScreenImage();
                }
                
                public function getMousePointColor(locX:Number, locY:Number):uint{
                        return _rgbScreenImage.getMousePointColor(locX, locY);
                }
        }
}

//버튼을 담는 버튼 스크린 클래스
package{
        import flash.display.Sprite;
        import flash.display.BitmapData;
        import flash.geom.Matrix;
        import flash.geom.ColorTransform;
        import flash.display.BlendMode;
        import flash.events.MouseEvent;
        
        public class ButtonImageScreen extends Sprite{
                private var rgbScreen:BitmapData;
                private var buttonVector:Array = new Array();
                private var releasedButton:TableButton;
                
                public function ButtonImageScreen(locX:Number, locY:Number, screenW:Number, screenH:Number){
                        this.x = locX;
                        this.y = locY;
                        this.width = screenW;
                        this.height = screenH;
                        
                        rgbScreen = new BitmapData(screenW, screenH, false);
                        
                        this.addEventListener(MouseEvent.MOUSE_MOVE, );
                        this.addEventListener(MouseEvent.CLICK, );
                }
                
                public function addButton(button:TableButton, locX:Number, locY:Number):void{
                        buttonVector.push(button);
                        //this.addChild(button);//this.addChild(buttonVector[buttonVector.length-1];
                        this.addChild(buttonVector[buttonVector.length-1]);
                        button.x = locX;
                        button.y = locY;
                        
                        var matrix:Matrix = new Matrix();
                        matrix.tx = locX;
                        matrix.ty = locY;
                        
                        var colorTransform:ColorTransform = new ColorTransform();
                        colorTransform.color = buttonVector.length;
                        
                        rgbScreen.draw(button.getRGBScreenImage(), matrix, colorTransform, BlendMode.LAYER);
                }
                
                private function (evt:MouseEvent):void{
                        if(releasedButton != null){
                                releasedButton.hOutSetFilter();
                                releasedButton = null;
                        }
                        
                        var clickColor:int = rgbScreen.getPixel(evt.localX, evt.localY);
                        
                        if(clickColor != 0xffffff){
                                releasedButton = buttonVector[int];
                                releasedButton.hOverSetFilter();
                        }
                }
                
                private function (evt:MouseEvent):void{
                        if(releasedButton != null){
                                releasedButton.();
                        }
                }
        }
}

버튼이랑 버튼 스크린 둘다 sprite상속받은놈들인데, 메인클래스에서 버튼을 생성해서 버튼스크린에 등록한다음 버튼 스크린을 메인클래스에 차일드로 붙이는 방식임

대략 이런형식으루

var buttonScreen:ButtonImageScreen = new ButtpnImageScreen(패러미터);
buttonScreen.addButton(new TableButton(이미지), x, y);

이미지 포함관계는

메인(sprite)[버튼스크린(sprite)[버튼(sprite)[버튼이미지(bitmap)]]]

요런식으로 포함되는데. 에러도 없고 경고도 없는데, swf실행시켜보면 이미지가 안나옴. 포함관계 문제인가해서 동일한 포함형태로 짧게 코드짜서 실행시켜봤는데 그건 문제 없었음. 뭐가 문제인지 해결좀ㅠㅠ