Smoothing en imagenes externas
El IDE de Flash permite aplicar la propiedad “smooth” a las imagenes de la libreria, esto hace que las imagenes que son escaladas en el stage de flash no se pixelen demasiado, dando un efecto de suavizado, lamentablemente esta opcion no existe para imagenes que se cargan externamente.
Para este fin encontré una clase Smoothing que aplica ese mismo efecto a imagenes que cargamos externamente.
Smoothing.as
Este es el código de la clase smoothing.as
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | import flash.display.BitmapData; class Smoothing { // the BitmapData instance that will smooth the image private var bmp:BitmapData; private var mc:MovieClip; private var interval; public function Smoothing(_mc:MovieClip) { this.mc = _mc; // create bmp with correct dimensions this.bmp = new BitmapData(mc._width, mc._height, true, 0); // cache loaded ext pic bmp.draw(mc); mc.unloadMovie(); // must delay attachbitmap this.interval = setInterval(this, "postop", 2); } private function postop() { clearInterval(interval); mc.attachBitmap(bmp, 0, "auto", true); // apply smoothing } } |
Ejemplo
En este ejemplo se puede ver claramente la aplicacion de la clase, lo importante de esto es la linea 6 donde se implemente la clase Smoothing a un MovieClip donde está cargado nuestra imagen
1 2 3 4 5 6 7 8 9 10 | var _mcl:MovieClipLoader = new MovieClipLoader(); var _mclListener:Object = new Object(); _mclListener.onLoadInit = function() { new Smoothing(target_mc); } _mcl.addListener(_mclListener); _mcl.loadClip("image.jpg", target_mc); |