• User

    Così si, così no! (Smooth drag)

    Salve ragazzi, ho una sorta di smooth drag, non capisco per quale motivo lo stesso codice funziona quando i movieclip sono disegnati a mano, mentre se generati tramite codice nada!

    Il codice è semplice e abbastanza comune, ci sto sopra da giorni e ancora non capisco!

    Un trascinamento "morbido" tutto qui, solo che quando rilascio la foto trascinata e clicco sopra una seconda volta, la foto torna ad xy=0, problema che non si manifesta se disegno i movieclip a mano.

    Mi aiutate?

    [PHP]var contenitore:MovieClip = new MovieClip();
    contenitore.graphics.beginFill(0x666666,1);
    contenitore.graphics.drawRect(0,0,200,200);
    addChild(contenitore);

    var foto:MovieClip = new MovieClip();
    foto.graphics.beginFill(0x666666,1);
    foto.graphics.drawRect(0,0,200,200);
    contenitore.addChild(foto);

    var mcMask:MovieClip=new MovieClip();
    mcMask.graphics.beginFill(0xff0000,1);
    mcMask.graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
    contenitore.addChild(mcMask);
    foto.mask=mcMask;

    var loader:Loader = new Loader();
    var url:String="Immagine 1.png";
    var urlReq:URLRequest=new URLRequest(url);
    loader.load(urlReq);
    foto.addChild(loader);

    function onProgress(event:ProgressEvent):void {
    trace(" Percentuale caricamento: " + int((event.bytesLoaded/event.bytesTotal)*100));
    }

    function onComplete(event:Event):void {
    trace("

    ");
    }

    loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgress);
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);

    var ease:int=5;
    var targX:int=foto.x;
    var targY:int=foto.y;
    var drag:Boolean=false;
    var ptX:int;
    var ptY:int;

    foto.addEventListener(Event.ENTER_FRAME, attacca);
    foto.addEventListener(MouseEvent.MOUSE_DOWN, cliccato);
    stage.addEventListener(MouseEvent.MOUSE_UP, scliccato);

    function attacca(e:Event):void {

    if (drag) { 
        targX=mouseX+ptX; 
        targY=mouseY+ptY; 
    } 
    
    e.target.x += (targX-e.target.x)/ease; 
    e.target.y += (targY-e.target.y)/ease; 
    
    margini(); 
    

    }

    function scliccato(event:MouseEvent):void {
    drag=false;
    }

    function cliccato(e:MouseEvent):void {
    ptX=e.target.x-mouseX;
    ptY=e.target.y-mouseY;

    drag=true; 
    

    }

    function margini():void {

    if (foto.x<=- foto.width+mcMask.width) { 
        foto.x=- foto.width+mcMask.width; 
    } 
    
    if (foto.y<=- foto.height+mcMask.height) { 
        foto.y=- foto.height+mcMask.height; 
    } 
    
    if (foto.y>0) { 
        foto.y=0; 
    } 
    
    if (foto.x>0) { 
        foto.x=0; 
    } 
    

    } [/PHP]


  • User

    nessuno?