Máscaras dinámicas - ActionScript 3 | Phoxer.com
Máscaras dinámicas - ActionScript 3
24/10/2008

La utilización de las mascaras en ActionSctipt 3 nos permite esconder parte del contenido de un objeto o de un texto.
En este artículo mostraré como enmascarar cualquier objeto dinámicamente con una clase que programé en ActionScript 3 llamada Msk

La implementamos de esta manera:

import phoxer.ChildsManager.Msk;
 
//con este simple rengon podemos enmascarar un objeto
var msk:Msk= new Msk(this,MySprite,0,0,150,100,20);
 
//o tambien se puede implementar asi
var msk:Msk= new Msk(this);
msk.setNewMask(MySprite,0,0,150,100,20);
 


1- El primer parametro es donde va a estar ubicada la mascara
2- El segundo parametro es el clip que se va a enmascarar
3- El tercer y cuarto parametro es el x y y de la mascara
4- El cuarto y el quinto parametro es el ancho y el alto de la mascara
5- El sexo parametro es opcional, es para redondear los bordes.
6- El sexto parametro opcional es para setear la mascara visible.

aca esta la clase:

/**
by .:{PHOXER}:.
http://www.phoxer.com
v 3.0;
*/
package phoxer.Sprites{
	import flash.display.Shape;
	import flash.display.Sprite;
	import phoxer.ChildsManager.DeleteClips;
	public class Msk extends Sprite{
		private var cuad:Shape;
 
		public function Msk(cont:Object,mc:Object=null,x:int=0,y:int=0,w:int=0,h:int=0,rad:int=0,vs:Boolean=false):void{
			super();
			cont.addChild(this);
			this.mouseEnabled=false;
			this.mouseChildren=false;
			if(mc!=null){
				setNewMask(mc,x,y,w,h,rad,vs);
			}
		}
 
		public function setNewMask(mc:Object,x:int,y:int,w:int,h:int,rad:int=0,vs:Boolean=false):void{
			DeleteClips.deleteAll(this);
			this.x=mc.x;
			this.y=mc.y;
			cuad = new Shape();
            cuad.graphics.beginFill(0x000000);
            cuad.graphics.drawRoundRect(x, y, w, h,rad);
            cuad.graphics.endFill();
            this.addChild(cuad);
            if(!vs){
          		mc.mask=this;
            }
		}
 
		public function addMsk(x:int,y:int,w:int,h:int,rad:int=0):void{
			cuad = new Shape();
            cuad.graphics.beginFill(0x000000);
            cuad.graphics.drawRoundRect(x, y, w, h,rad);
            cuad.graphics.endFill();
            this.addChild(cuad);
		}
	}
}

Tambien programe una clase para manejar Mascaras en ActionScript para Flex extendiendo UIMovieClip:

/**
by .:{PHOXER}:.
http://www.phoxer.com
v 3.0;
*/
package phoxer.Sprites{
	import flash.display.Shape;
	import mx.flash.UIMovieClip;
	import phoxer.ChildsManager.DeleteClips;
	public class FlexMsk extends UIMovieClip{
		private var cuad:Shape;
 
		public function FlexMsk(cont:Object,mc:Object=null,x:int=0,y:int=0,w:int=0,h:int=0,rad:int=0,vs:Boolean=false):void{
			super();
			cont.addChild(this);
			this.mouseEnabled=false;
			this.mouseChildren=false;
			if(mc!=null){
				setNewMask(mc,x,y,w,h,rad,vs);
			}
		}
 
		public function setNewMask(mc:Object,x:int,y:int,w:int,h:int,rad:int=0,vs:Boolean=false):void{
			DeleteClips.deleteAll(this);
			this.x=mc.x;
			this.y=mc.y;
			cuad = new Shape();
            cuad.graphics.beginFill(0x000000);
            cuad.graphics.drawRoundRect(x, y, w, h,rad);
            cuad.graphics.endFill();
            this.addChild(cuad);
            if(!vs){
          		mc.mask=this;
            }
		}
 
		public function addMsk(x:int,y:int,w:int,h:int,rad:int=0):void{
			cuad = new Shape();
            cuad.graphics.beginFill(0x000000);
            cuad.graphics.drawRoundRect(x, y, w, h,rad);
            cuad.graphics.endFill();
            this.addChild(cuad);
		}
	}
}