Background Tileado en Actionscript 3

Hoy mientras trabajaba en mi nuevo proyecto con AS3, surgió la necesidad de crear un fondo tileado (fondo que se repite desde un “tile”), como estamos trabajando con AS3, desarrollé una simple pero efectiva clase que resuelve este problema:

package cl.dospuntocero.utilities{

import flash.display.BitmapData;
import flash.display.Loader;
import flash.display.MovieClip;
import flash.events.Event;
import flash.net.URLRequest;

public class tiledBg extends MovieClip {

public var loader:Loader = new Loader();

public function tiledBg(forTile:String) {
addChild(loader);
loader.load(new URLRequest(forTile));
loader.visible = false;
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onBackgroundLoaded);
}

private function onBackgroundLoaded(event:Event):void {
var tile:BitmapData = new BitmapData(event.target.content.width, event.target.content.height);
tile.draw(event.target.content);

graphics.beginBitmapFill(tile, null, true,true);
graphics.lineTo(stage.stageWidth, 0);
graphics.lineTo(stage.stageWidth, stage.stageHeight);
graphics.lineTo(0, stage.stageHeight);
graphics.lineTo(0, 0);
graphics.endFill();
}
}
}

¿Cómo utilizarla? simplemente tienes que agregar lo siguiente en la clase principal de tu película:

package
{
import flash.display.MovieClip;
import cl.dospuntocero.utilities.tiledBg;
public class main extends MovieClip
{
public function main()
{
super();
//creamos una nueva variable del tipo tiledBg y luego la agregamos a la escena
var tiler:tiledBg = new tiledBg("bg.png")
addChild(tiler)
}
}
}

Espero les sea de utilidad!
adicionalmente les dejo los archivos para que vean un ejemplo funcionando

Leave a Reply