me he propuesto a mi mismo un ejercicio sencillo para aprender as3, quiero hacer un reflejo de imagen, tipo web2.0.
Pero lo que parecia sencillo en principio, se me esta complicando, sobre todo por la ausencia de un metodo nativo para duplicar movieclips en as3.
Se que hay muchos posts al respecto, pero investigando por la web he encontrado una clase creada por un usuario, que tiene bastante buenas criticas. La clase se puede encontrar en esta pagina, y por lo que dicen en los comentarios, solo falla con algunos constructores.
Por eso y porque tengo bastante poca idea de as3 pienso que el fallo debe estar en mi codigo:
Código :
package
{
import flash.display.DisplayObject;
import flash.display.Loader;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.ProgressEvent;
import flash.filters.GlowFilter;
import flash.geom.Rectangle;
import flash.net.URLRequest;
import com.senocular.display.duplicateDisplayObject;
/**
* ...
* @author ...
*/
public class ReflectionImage extends Sprite
{
public var imageLoader:Loader;
public var percentLoaded:Number;
public var imageReflection:Sprite;
public function ReflectionImage():void {
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void {
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
var ldr:Loader = new Loader();
ldr.load(new URLRequest("imagenes/amourchaleurcom.jpg"));
ldr.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler, false, 0, true);
ldr.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler, false, 0, true);
}
/* On load progress, updated the variable containing the percent loaded */
private function progressHandler(event:ProgressEvent):void {
percentLoaded = Math.floor(event.bytesLoaded / event.bytesTotal * 100);
}
private function completeHandler(event:Event):void {
imageReflection = new Sprite;
addChild(imageReflection);
var originalImage:DisplayObject = event.target.content;
imageReflection.addChild(originalImage);
/*** @@ ***/ var reflectedImage:DisplayObject = duplicateDisplayObject(originalImage, true);
reflectedImage.x += 300; // shift to see duplicate
trace(reflectedImage.height); // 0
}
}
}En él, cargo una imagen y a continuacion intento duplicarla con la mencionada clase (en la linea precedida con las dos @). Aunque la imagen que cargo inicialmente se ve sin ningún problema, la imagen clonada no me aparece, y aunque al tracear sus atributos me aparecen alpha=1, visible=true, x=300, etc, su anchura y altura me dan 0. ¿Qué puedo estar haciendo mal?
Gracias y un saludo.
