Continuano i Tutorial di AS3 su JuliusDesign, oggi andiamo a vedere come Trascinare un Oggetto in ActionScript3
Vi ricordate in ActionScript 2 come si faceva vero?
Vediamo insieme il codice ActionScript 3:
// Imposto le coordinate iniziali del clip
var startX:Number;
var startY:Number;
// Associo gli eventi MOUSE_DOWN e MOUSE_UP al clip
rosso_mc.addEventListener(MouseEvent.MOUSE_DOWN, pickUp);
rosso_mc.addEventListener(MouseEvent.MOUSE_UP, dropIt);
function pickUp(event:MouseEvent):void {
event.target.startDrag(true);
stato.text = "L'hai preso!";
event.target.parent.addChild(event.target);
startX = event.target.x;
startY = event.target.y;
}
function dropIt(event:MouseEvent):void {
//In caso rilascio il clip ROSSO_MC
event.target.stopDrag();
//Imposto il mio elemento TARGET
var myTargetName:String = "verde_mc";
var myTarget:DisplayObject = getChildByName(myTargetName);
stato.text = "Ti è scappato?";
//Se il mio clip ROSSO_MC collide con VERDE_MC
if (event.target.dropTarget != null && event.target.dropTarget.parent == myTarget) {
stato.text = "Bravo!";
event.target.removeEventListener(MouseEvent.MOUSE_DOWN, pickUp);
event.target.removeEventListener(MouseEvent.MOUSE_UP, dropIt);
// Disabilita il clip filmato dallo stato pulsante
event.target.buttonMode = false;
event.target.x = myTarget.x;
event.target.y = myTarget.y;
} else {
//se vuoi farlo tornare alle coordinate iniziali utilizza il seguente codice
//event.target.x = startX;
//event.target.y = startY;
}
}
// Abilita il clip filmato come fosse un pulsante
rosso_mc.buttonMode = true;
Come al solito ecco i file sorgenti con i quali approcciarsi meglio al codice, alla prossima lezione di AS3
4 Commenti
utile come sempre! grazie
Grazie Julius, sto imparando AS3 grazie anche a te ;) sei il migliore chiaro e preciso
Ciao, volevo farti una domanda su un progetto che sto realizzando, da codice creo un oggetto video e definisco la sua posizione (sempre da codice) all’interno di una cornice, realizzata nello stage. E’ possibile trascinare entrambi?
Ciao Julius, puoi aiutarmi?
devo fare una piccola variante al drag & drop: devo impostare come target un Movieclip creato run-time (una foto caricata da remoto).
Ho provato con:
(myMC.name impostato subito dopo la sua creazione)
var myTargetName:String = myMC.name;
ma non funziona.. perchè?