Su uso es muy sencillo, ya que sólo debes identificar una imagen con el nombre de clase Pattern como se muestra en la siguiente imagen.
Bitmap Properties
Esta es la clase:
Código :
package
{
import flash.display.*;
import flash.events.*;
import flash.display.Sprite;
import flash.geom.Matrix;
//
dynamic public class AddPattern extends MovieClip
{
private var maxWidth:Number;
private var maxHeight:Number;
private var Bitmap:BitmapData;
private var RadialGradient:Sprite;
private var BackGround:Sprite;
//
public function AddPattern() : void
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
Bitmap = new Pattern(0, 0);
//
BackGround = new Sprite();
addChild(BackGround);
//
RadialGradient = new Sprite();
RadialGradient.graphics.beginGradientFill(GradientType.RADIAL,[0x000000,0x000000],[0,.5],[0,255],new Matrix().createGradientBox(stage.stageWidth,stage.stageHeight,0,0,0));
RadialGradient.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
addChild(RadialGradient);
//
maxWidth = stage.stageWidth - 1;
maxHeight = stage.stageHeight - 1;
//
stage.addEventListener(Event.RESIZE, fillStage);
stage.addEventListener(Event.ADDED, fillStage);
}
//
public function fillStage(event:Event) : void
{
if (stage != null)
{
if((stage.stageWidth > maxWidth) || (stage.stageHeight > maxHeight))
{
with (BackGround)
{
graphics.beginBitmapFill(Bitmap, null, true, true);
//
if(stage.stageWidth > maxWidth){maxWidth = stage.stageWidth;}
if(stage.stageHeight > maxHeight){maxHeight = stage.stageHeight;}
//
graphics.drawRect(0, 0, maxWidth, maxHeight);
graphics.endFill();
}
}
updateRadialFilter();
}
}
//
public function updateRadialFilter() : void
{
RadialGradient.width = stage.stageWidth;
RadialGradient.height = stage.stageHeight;
}
}
}
Y aquí hay un ejemplo de su uso, que como verás también es sensible a un cambio de tamaño en la ventana del navegador expandiéndose y manteniéndose a pantalla completa.
Finalmente recomendaría que se considere el tamaño de una imagen al vincularla ya que entre más pequeña (10x10pxs) sea ésta, mayor será el esfuerzo que hará el procesador para hacerla ajustar al tamaño completo de la pantalla.
2 comentarios:
Hola Jorge, muy buenos tus ejemplos en el uso de AS 3. Yo estoy empezando y he intentado usar tu clase para poner una imagen de fondo pero me retorna este error:
1067: Conversión implícita de un valor de tipo void a un tipo flash.geom:Matrix no relacionado.
En el fla tengo un archivo gif exportado a AS con nombre de clase Pattern tal y como comentas y instancio la clase con:
var fondo:AddPattern = new AddPattern();
Que hago mal?
Gracias!!!
Para el que tenga el mismo problema, solo debe de cambiar por unas lineas por estas:
var m:Matrix = new Matrix();
m.createGradientBox(stage.stageWidth,stage.stageHeight,0,0,0);
RadialGradient.graphics.beginGradientFill(GradientType.RADIAL,[0x000000,0x000000],[0,.5],[0,255],m);
y para usarlo solo pongan un movieclip en el stage vinculado a la clase y ya.