Durante la creazione di siti in Flash, può risultare utile trascinare un oggetto sul nostro stage.
La sintassi base è questa (Demo) :
mioclip.startDrag(lockCenter, left, top, right, bottom)
Andiamo ad analizzare i vari parametri:
E’ possibile trascinare un oggetto tramite pressione e rilascio (Demo), oppure intercettare una collisione (Demo), vediamo il primo caso:
on (press) {
startDrag(mioclip,lockCenter, left, top, right, bottom);
}
on (release) {
mioclip.stopDrag();
}
Nell’ evento press del pulsante abbiamo messo il codice, visto prima, per trascinare un oggetto. La new entry è al rilascio del pulsante, dove andremo a fermare il “draggaggio” dell’oggetto tramite stopDrag();
Nel secondo caso, per intercettare la collisione tra due oggetti, il codice è leggermente diverso:
if (mioclip.hitTest(muro)) {
//Collisione avvenuta
} else {
//Collisione non avvenuta
}
Attraverso mioclip.hitTest possiamo intercettare la collisione (Demo) con un altro oggetto, in questo caso, muro che si troverà sulla root, inseguito con una condizione if eseguiamo le azioni da compiere.
Drag&Drop: Scarica - Demo
Drag Vincolato: Scarica - Demo
Drag Collisione: Scarica - Demo
ABC, Altro, Flash, Sviluppo, Tutorial

tag abilitati: <code> </code> | <a href=""> </a> | <b> </b> | <i> </i>
arcu
18 Novembre 2007 alle 16:25 pm
Ciao julius,
I tuoi tutorial mi sono davvero utili ma non mi riesce proprio quella del dreg&drop, Non capisco dove sbaglio..
Io Ho fatto cosi’:
-Copia incolla dal tuo blog
-Ho creato una palla in flash su un altro livello
-Ho trasformato la palla in simbolo e l ho chiamata pallab
-Nel livello simbolo ho copiato il tuo script
-Ho modificato mioclip con pallab
-Prova filmato
Ma nulla da fare .
Ti chiedo dove sia l errore perchè non sono molto esperto ma Flash mi esalta come la gnocca!!!
Grazie ancora e complimeti!!!
aRQ
Julius
19 Novembre 2007 alle 11:00 am
Controlla di aver cambiato il nome istanza nel Action Script
simone
19 Novembre 2007 alle 17:48 pm
Ciao julius.
Ti faccio i miei complimenti!
non tanto per la bravura e la professionalità che dimostri ma soprattutto per il tuo impegno nel divulgare conoscenza.
COMPLIMENTI!
Il mio problema è semplice.
Sto facendo un piccolo puzzle con flash.
All’interno di un quadrato dovranno muoversi 15 quadrati più piccoli.
Chiaramente uso il comando drag ma non ho idea di come fare ad impedire ai quadratini di uscire dal rettangolo e soprattutto di frli scivolare tra di loro ma senza sovrapporsi.
Spero di non aver chiesto troppo
grazie comunque
lu
9 Ottobre 2008 alle 0:16 am
Ciaou Julius , ho bisogno del tuo aiuto
ho qs codice che ti posto di seguito e vorrei però, il contrario, cioè che la maschera si muova per lo stage in maniera randomica all’avvio del falsh e anche con la funzione del drag del mouse che riporto qui di s eguito :
speed = 10;
onEnterFrame = motion;
pic.setMask(pic_mask);
function motion()
{
pic_mask._y = pic_mask._y+ (_ymouse - pic_mask._y)/speed;
pic._y = pic2._y + (_ymouse - pic_mask._y)*5/speed;
pic_mask._x = pic_mask._x+ (_xmouse - pic_mask._x)/speed;
pic._x = pic2._x + (_xmouse - pic_mask._x)*5/speed;
}
stop();
Julius
9 Ottobre 2008 alle 21:48 pm
@simone: ciao dai uno sguardo a questo tutorial
@lu: non ho capito bene cosa vuoi fare…
in pratica un random di una maschera spostata con un drag & drop?