Mas sobre Flash


Koala Technologies (koalatec.com)
Esta clase la tenía escrita para usar una imagen tipo mosaico (tile) en mi biblioteca y fijarla como fondo, similar a lo que se puede hacer con background:url() en CSS. Así esta clase pegará la imagen vinculada y la usará como fondo cuando el stage la requiera.


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.
|
This entry was posted on 10:30 and is filed under . You can follow any responses to this entry through the RSS 2.0 feed. You can leave a response, or trackback from your own site.

2 comentarios:

On 8 de noviembre de 2009, 0:47 , Unknown dijo...

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!!!

 
On 14 de enero de 2010, 10:41 , Unknown dijo...

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.

 

Relacionados