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));
}
}
}