En teoría debería hacerlo así:
Código :
var imagenPrueba:CargaImagenArrastable = new CargaImagenArrastable("imagen.jpg", 50, 50);
imagenPrueba.addEventListener(MouseEvent.MOUSE_DOWN, coger);
imagenPrueba.addEventListener(MouseEvent.MOUSE_UP, soltar);
stage.addChild(imagenPrueba);
function coger(event:MouseEvent):void {
event.target.startDrag();
}
function soltar(event:MouseEvent):void {
event.target.stopDrag();
}
Siendo la clase "CargaImagenArrastable" la siguiente:
Código :
package {
import flash.display.*;
import flash.text.*;
import flash.net.URLRequest;
import flash.events.*;
public class CargaImagenArrastable extends Sprite {
private var _ancho:int;
private var _alto:int;
private var _loader:Loader;
public function CargaImagenArrastable(fichero:String, ancho:int, alto:int) {
_ancho = ancho;
_alto = alto;
_loader = new Loader();
_loader.contentLoaderInfo.addEventListener( Event.OPEN, handleOpen );
_loader.contentLoaderInfo.addEventListener( ProgressEvent.PROGRESS, handleProgress );
_loader.contentLoaderInfo.addEventListener( Event.COMPLETE, handleComplete );
_loader.load( new URLRequest( fichero ) );
}
private function handleOpen( event:Event ):void {
}
private function handleProgress( event:ProgressEvent ):void {
}
private function handleComplete( event:Event ):void {
var image:Bitmap = Bitmap(_loader.content);
if (_ancho != 0) image.width=_ancho;
if (_alto != 0) image.height=_alto;
this.addChild( _loader );
}
}
}
Pero cuando "pincho" sobre la imagen, en realidad pincho sobre una instancia de Loader, y esta clase no tiene los métodos startDrag y stopDrag.
¿Cómo podría solucionarlo?
Muchas Gracias
