- Home
- Categorie
- Digital Marketing
- Grafica, Visual Design & UX
- Così si, così no! (Smooth drag)
-
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]
-
nessuno?