Originariamente inviato da and80
Esatto, nel tuo caso è Event.ENTERFRAME, quindi tra parentesi avrai un Event e non un MouseEvent.
però scusa, non per mettere in dubbio quanto dici perchè difatti funziona l'sfw, ma per capire come funziona as3, enterframe è contenuto in un mouseevent, quindi alla funzione non dovrei anche passare quest'ultimo sopratutto considerando che l'event.target è associato ad esso?
Poi avrei un'altra domanda: posso assegnare l'event.target ad una variabile?
perchè allo stato attuale il mio codice ha un problema
http://digilander.libero.it/American_horizon/galler.swf
se provi a ruotare l'immagine, vedrai che se il MOUSE_UP avviene fuori dalla foto, ovvero sullo stage, la foto nn smette di ruotare, questo perchè il MOUSE_UP fa ormai riferimento allo stage come event.target difatti se lo eseguo in flash mi riporta un errore nel pannello Output
Ovvio che se usassi i nomi delle istanze sarebbe tutto più semplice, ma sto cercando di mantenermi più generico possibile usando appunto gli event.target per facilitare la gestione del progetto.
codice aggiornato:
codice:
import flash.events.Event;
import flash.events.MouseEvent;
var distanzaX:Number;
var distanzaY:Number;
var radianti:Number;
var sup:Number;
var sup2:Number;
var bordo:Number=50
stage.addEventListener(MouseEvent.MOUSE_DOWN, drag)
function drag(event:MouseEvent): void
{
distanzaX=mouseX-event.target.x;
distanzaY=mouseY-event.target.y;
radianti=Math.atan2(distanzaY,distanzaX);
if ((distanzaX > -bordo) && (distanzaX < bordo) && (distanzaY > -bordo) && (distanzaY < bordo)) //se si preme al centro della foto allora parte lo spostamento
{event.target.startDrag()
{event.target.startDrag()
event.target.addEventListener(MouseEvent.MOUSE_UP, stopdrag)
}
else //altrimenti parte la rotazione
{radianti=Math.atan2(distanzaY,distanzaX);
sup=(radianti/Math.PI)*180;
sup2=event.target.rotation;
event.target.addEventListener(Event.ENTER_FRAME, ruota)}
}
function stopdrag(event:MouseEvent): void
{event.target.stopDrag()
event.target.removeEventListener(Event.ENTER_FRAME, ruota)}
//--------------------------------------------------------------------------------
function ruota(event:Event):void
{
distanzaX=mouseX-event.target.x;
distanzaY=mouseY-event.target.y;
radianti=Math.atan2(distanzaY,distanzaX);
event.target.rotation=(radianti/Math.PI)*180-sup+sup2;
stage.addEventListener(MouseEvent.MOUSE_UP, stopdrag)
}