I have been trying to write a picture mask which would mimic an expanding, fading box, exposing a picture underneath of it. I basically have the code, it works, but is excruciatingly slow. I am looking for a setRegistrationPoint function - to set the expansion orientation from the center of the box - or something similar to make this easier. Is there such a thing in AS3?
Here is the kludge.
4hov13
/////////////////////////////////
//////Code for Drawing Button 3
var _loader3:Loader;
var px_scale3:Number = 0.2;
var locX3:Number = 0;
var locY3:Number = 0;
var sizX3:Number;
var sizY3:Number;
var pixsliver3:Number = 0.1;
function Drawing3() {
_loader3 = new Loader();
var url3:String = "img/img_3.jpg";
_loader3.load(new URLRequest(url3));
_loader3.contentLoaderInfo.addEventListener(Event.COMPLETE, onImageLoad3);
}
function onImageLoad3(event:Event):void {
var bitmap3:BitmapData = new BitmapData(_loader3.width, _loader3.height);
bitmap3.draw(_loader3,new Matrix());
var matrix3:Matrix = new Matrix();
matrix3.scale(px_scale3, px_scale3);
sizX3 = _loader3.width * px_scale3;
sizY3 = _loader3.height * px_scale3;
var sampleSprite3:Sprite = new Sprite();
//sampleSprite1.graphics.lineStyle(0, 0x111111);
sampleSprite3.graphics.beginBitmapFill(bitmap3, matrix3);
sampleSprite3.graphics.drawRect(locX3, locY3, sizX3, sizY3);
sampleSprite3.graphics.endFill();
sampleSprite3.x = 50;
sampleSprite3.y = 310;
sampleSprite3.alpha = 0.1;
addChild(sampleSprite3);
var square3:Sprite = new Sprite();
square3.graphics.beginFill(0xFF0000);
square3.graphics.drawRect(locX3, locY3, sizX3 * pixsliver3, sizY3 * pixsliver3);//
square3.graphics.endFill();
square3.x = 50 + (sizX3 / 2) - ((sizX3 * pixsliver3)/2) ;
square3.y = 310 + (sizY3 / 2) - ((sizY3 * pixsliver3)/2) ;
addChild(square3);
sampleSprite3.mask = square3;
addEventListener(Event.ENTER_FRAME, onEnterFrame3);
function onEnterFrame3(event:Event):void{
if (sampleSprite3.height >= square3.height){
square3.height += (12 * (square3.height/100));
square3.y -= (6 * (square3.height/100));
square3.width += (12 * (square3.width/100));
square3.x -= (6 * (square3.width/100));
if(sampleSprite3.alpha <= 1){
sampleSprite3.alpha += 0.08;
}
}
else {
removeEventListener(Event.ENTER_FRAME, onEnterFrame3)
}