Bitmap smoothing en AS3
Hola, hace tiempo hice esta clase para cargar imágenes, aplicarle un suavizado y hacer un pequeño efecto de entrada.
Siempre ha funcionado, pero ahora ha dejado de hacerlo.
package
{
import flash.display.Bitmap;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLRequest;
import gs.TweenMax;
import gs.easing.*;
public class IMG extends Sprite
{
private var _urlImg:URLRequest;
private var imgLoad:Loader;
private var alto:Number;
private var ancho:Number;
public function IMG(cual:String, _alto:Number, _ancho:Number)
{
_alto = alto;
_ancho = ancho;
_urlImg=new URLRequest(cual);
imgLoad = new Loader();
imgLoad.load(_urlImg);
imgLoad.contentLoaderInfo.addEventListener(Event.COMPLETE,colocarImg);
}
private function colocarImg(e:Event):void
{
Bitmap(e.target.loader.content).smoothing = true;
e.target.loader.content.width = ancho;
e.target.loader.content.height =alto;
addChild(e.target.content);
TweenMax.from(e.target.content, 1, {alpha:0, ease:Expo.easeOut});
}
}
}
La cuestion esta en que ahora no reconoce nada que tenga que ver con e.target , la carga la realiza correctamente, lo veo con un sniffer, parece que la añade a la lista de visualización tambien, pero no se ve.
Lo curioso del tema es que si directament hago un addChild(imgLoad) comentando las lineas de Bitmap y tamaño se ve, pero claro no la suaviza.
Alguien ve algo raro?
ochionet
hola a todos, el codigo es correcto, siempre lo he usado y funciona.
La manera de solucionar esto es creando de nuevo el archivo con la versión de flash que trabajo actualmente.
Este flash es anterior y creo que hay problemas de versiones.
Flash ya no hace tantas tonterías inexplicables como antes, pero de vez en cuando puedes perder la tarde
mirando algo que es tan sencillo como crear un fla nuevo y publicar llamando a las mismas clases que llamaba antes.
Esta misma semana me ha pasado con otra cosa.
Saludos,
dourado
BuenAS Ochionet.
Quedó OK?...
Sugerencia...añadindo al code de plastikaweb..
private function colocarImg(e:Event):void {
var image:Bitmap = Bitmap(imgLoad.content);
image.smoothing = true;
addChild(image);
TweenMax.from(image, 1, { alpha:0, ease:Expo.easeOut } );
}
...no diapares un event directamente dentro del TweenMax..
Ya nos diras!
Salud++
ochionet
lo del alto, ancho llevas razón se me ha colado el guión al picar, (esto no depura) pero bueno, al final no ha salido funcionando.
He montado algo parecido esta tarde en otro sitio y sin problemas, debe ser algo anterior a esta clase.
Gracias,
plastikaweb
Tal cual tienes la clase a mi me funciona, sólo intenta mejorar alguna cosilla,
por ejemplo clarifica la función colocarImg así:
private function colocarImg(e:Event):void {
var image:Bitmap = Bitmap(imgLoad.content);
image.smoothing = true;
addChild(image);
TweenMax.from(e.target.content, 1, { alpha:0, ease:Expo.easeOut } );
}
y al inicio declaras las propiedades alto y ancho como private, y luego en la función constructora les das los valores al reves,
_alto = alto;
_ancho = ancho;
y entonces deberías haber declarado las propiedades al inicio así:
private var _alto:Number;
private var _ancho:Number;
Si no ves la imagen elimina la linea en colocarImg en la que haces el tween sobre el alpha del bitmap, tal vez allí tengas el problema.
saludos!