Shape.mask=mc.mask in as file not working

ive gotten one movie clip to mask another in the actions frame but i cant seem to be able to mask the flames which are a shape with a movieclip in this as file. im not getting any errors but the mask isnt covering anything
look near the bottom at s.mask=mask_mc;
there are about 20 “s” shapes spawning per second if that has anything to do with it


//this package turns an mc into a flaming button that calls a javascript function
package 
{
    import flash.display.MovieClip;
    import flash.events.MouseEvent;
    import flash.display.Sprite;
    import flash.display.Shape;
    import flash.events.*;
    import flash.external.ExternalInterface;
    import flash.text.TextField;
    import flash.utils.Timer;
    import flash.text.TextFieldType;
    import flash.text.TextFieldAutoSize;
    import com.greensock.*;
    import com.greensock.plugins.*;
    
    TweenPlugin.activate([Physics2DPlugin]);
    TweenPlugin.activate([BlurFilterPlugin]);

    public class FireButton extends MovieClip 
    {
        var out:Boolean;        
        var minRadius:int = 5;
        var maxRadius:int = 15;
        var numEmbers:int = 20;
        var maxRespawnTime:Number = .5;
        var locX:int = 180;
        var locY:int = 75;
        var spreadAngle:int = 25;
        var trajectoryAngle:int = 0;
        var spreadVelocity:int = 150;
        var averageVelocity:int = 230;
        var explosion:int = 15;
        var numExplosion:int = 15;
        var offStage:int = -32;
        
        var minRed:int = 200;
        var maxRed:int = 255;
        var minGreen:int = 0;
        var maxGreen:int = 200;
        var minBlue:int = 0;
        var maxBlue:int = 0;
        
        var s:Shape = new Shape();
        private var output:TextField;

        //constructor adds mouse listners and tells flash we are MOUSE_OUT by default
        public function FireButton()
        {
            out = true
            //remove /**/ to enter debugging mode
            /*
            output = new TextField();
            output.y = 5;
            output.width = 45;
            output.height = 32;
            output.autoSize = "left";
            output.multiline = true;
            output.border = true;
            output.text = "Initializing...
";
            addChild(output);
            */

            clickable_mc.addEventListener(MouseEvent.MOUSE_OVER, overHandler);
            clickable_mc.addEventListener(MouseEvent.MOUSE_OUT, outHandler);
            clickable_mc.addEventListener(MouseEvent.CLICK, clickHandler);
        }

        //on mouse over flames pour out
        private function overHandler(event:MouseEvent):void
        {
            out=false;
            for (var i:int = 0; i < numEmbers; i++) 
            {
                tweenEmber(getNewEmber(), getRandom(0, maxRespawnTime), s);
            }
        }

        //on mouse out flames stop
        private function outHandler(event:MouseEvent):void
        {
            out=true;
        }
        
        //on click call javascript function, make a blue explosion and then stop flames
        private function clickHandler(event:MouseEvent):void
        {
            for (var i:int = 0; i < numExplosion; i++) 
            {
                tweenEmber(getExplosion(), getRandom(0, maxRespawnTime), getNewEmber());
            }
            out=true;
            
            if (ExternalInterface.available)
            {
                try
                {
                    //remove /**/ to enter debugging mode
                    /*
                    output.appendText("Adding callback...
");
                    */
                    if (checkJavaScriptReady())
                    {
                        //remove /**/ to enter debugging mode
                        /*
                        output.appendText("JavaScript is ready.
");
                        */
                        ExternalInterface.call("makeRequest", text_txt.text);
                    }
                    else
                    {
                        //remove /**/ to enter debugging mode
                        /*
                        output.appendText("JavaScript is not ready, creating timer.
");
                        */
                        var readyTimer:Timer = new Timer(100, 0);
                        readyTimer.addEventListener(TimerEvent.TIMER, timerHandler);
                        readyTimer.start();
                    }
                }
                //remove /**/ to enter debugging mode
                /*
                catch (error:SecurityError)
                {
                    
                    output.appendText("A SecurityError occurred: " + error.message + "
");
                }
                */
                catch (error:Error)
                {
                    //remove /**/ to enter debugging mode
                    /*
                    output.appendText("An Error occurred: " + error.message + "
");
                    */
                }
            }
            //remove /**/ to enter debugging mode
            /*
            else
            {
                output.appendText("External interface is not available for this container.");
                
            }
            */
        }
        
        //external interface call to ckeck if init has been called and javascript is fully loaded
        private function checkJavaScriptReady():Boolean
        {
            var isReady:Boolean = ExternalInterface.call("isReady");
            return isReady;
        }
        
        //if javascript isn't ready when flash loads it checks 10 times a second
        private function timerHandler(event:TimerEvent):void
        {
            //remove /**/ to enter debugging mode
            /*
            output.appendText("Checking JavaScript status...
");
            */
            var isReady:Boolean = checkJavaScriptReady();
            if (isReady)
            {
                //remove /**/ to enter debugging mode
                /*
                output.appendText("JavaScript is ready.
");
                */
                Timer(event.target).stop();
            }
        }
        
        private function tweenEmber(ember:Shape, delay:Number, oldEmber:Shape):void 
        {
            ember.x = locX;
            ember.y = locY;
            if(!out)
            {
                TweenLite.to(ember, maxRespawnTime, {blurFilter:{blurX:50, blurY:50}, physics2D:{velocity:getRandom(averageVelocity - spreadVelocity,averageVelocity + spreadVelocity), angle:getRandom(trajectoryAngle - spreadAngle, trajectoryAngle + spreadAngle)}, delay:delay, onComplete:tweenEmber, onCompleteParams:[getNewEmber(), getRandom(0, maxRespawnTime), ember]});
            }
            //    TweenMax.to(ember, maxRespawnTime/10, {alpha:0, delay:maxRespawnTime*9/10}); //use an alpha gradient instead for more realistic flame
            if (this.contains(oldEmber))
            {
                this.removeChild(oldEmber);
            }
        }

        private function getNewEmber():Shape 
        {
            var s:Shape = new Shape();
            var color:uint = int(getRandom(minRed, maxRed)) << 16 | int(getRandom(minGreen, maxGreen)) << 8 | int(getRandom(minBlue, maxBlue)) << 0;
            s.graphics.beginFill(color, 1);
            s.graphics.drawCircle(0, 0, getRandom(minRadius, maxRadius));
            s.graphics.endFill();
            this.addChild(s);
            s.mask=mask_mc;
            return s;
        }

        private function getExplosion():Shape 
        {
            var colorExplosion:uint = int(getRandom(0, 0)) << 16 | int(getRandom(0, 255)) << 8 | int(getRandom(255, 255)) << 0;
            var s:Shape = new Shape();
            var color:uint = colorExplosion;
            s.graphics.beginFill(color, 1);
            s.graphics.drawCircle(0, 0, explosion);
            s.graphics.endFill();
            this.addChild(s);
            s.mask=mask_mc;
            return s;
        }
    
        private function getRandom(min:Number, max:Number):Number 
        {
            return min + (Math.random() * (max - min));
        }
    }
}