Estoy cargando imagenes en una galeria y funciona correctamente, pero me encuentro con un problema:
Cada imagen de la galeria debe visualizarce en cuadros de 200x200 independientemente si la imagen es muy grande o muy pequeña(la mayoria son de 20x10), PERO NO deben escalarse los tamaños(pixelearse), sino mas bien verse como un "color tipo mapa de bit", de esa forma cualquier imagen mantendra su tamaño original y se vera como si fuera un patron o textura.
Lo que tengo hasta ahora es lo sgte
- Tengo las rutas de 4 imagenes en un archivo galeria.xml :
Código XML :
<?xml version="1.0" encoding="utf-8"?> <GALLERY WIDTH="200" HEIGHT="200"> <IMAGE THUMB="imagen1.jpg" /> <IMAGE THUMB="imagen2.jpg" /> <IMAGE THUMB="imagen3.jpg" /> <IMAGE THUMB="imagen4.jpg" /> </GALLERY>
- El codigo AS3 en el primer fotograma es el sgte:
Código ActionScript :
var columnas:Number = 3; var ancho_thumb:Number; var alto_thumb:Number; var mis_imagenes:XMLList; var mi_total:Number; var x_counter:Number = 0; var y_counter:Number = 0; var container_mc:MovieClip; var myXMLLoader:URLLoader = new URLLoader(); myXMLLoader.load(new URLRequest("galeria.xml")); myXMLLoader.addEventListener(Event.COMPLETE, procesandoXML); function procesandoXML (e:Event):void{ var miXML:XML = new XML(e.target.data); ancho_thumb = miXML.@WIDTH; // las imagenes se deben ver en cuadros de 200x200 alto_thumb = miXML.@HEIGHT; mis_imagenes = miXML.IMAGE; mi_total = mis_imagenes.length(); createContainer(); callThumbs(); } function createContainer():void{ container_mc = new MovieClip(); container_mc.x = 0; container_mc.y = 0; addChild(container_mc); } function callThumbs():void{ for (var i:Number = 0; i < mi_total; i++){ var thumb_url = mis_imagenes[i].@THUMB; var thumb_loader = new Loader(); thumb_loader.load(new URLRequest(thumb_url)); thumb_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, thumbLoaded); thumb_loader.x = (ancho_thumb+10)*x_counter; thumb_loader.y = (alto_thumb+10)*y_counter; if (x_counter+1 < columnas){ x_counter++; } else { x_counter = 0; y_counter++; } } } function thumbLoaded(e:Event):void{ var my_thumb:Loader = Loader(e.target.loader); container_mc.addChild(my_thumb); }
He leido varios tutoriales de este foro que me han servido mucho, tambien un archivo .pdf de adobe en la pagina 19 aqui, donde indican que para crear el efecto mosaico, el método beginBitmapFill() es el más adecuado.
Y muestran este codigo que no he podido acondicionar a lo que ya tengo:
Código ActionScript :
var container:Sprite = new Sprite(); var source:BitmapData = new Star(0,0); // Fill the surface with the source BitmapData container.graphics.beginBitmapFill(source); container.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight); addChild(container);
Alguien me podria ayudar a incorporar el metodo beginBitmapFill a la galeria que ya se muestra correctamente, espero no sea muy dificil ya que no tengo mucho conocimiento de AS3.
saludos