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:

  • lockCenter: “true o false”. Indica se il movieclip trascinato deve essere centrato rispetto al puntatore del mouse.
  • left,top,right,bottom : Indica i parametri di vincolo per il nostro oggetto, sinistra, alto, destra e basso

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: ScaricaDemo
) Drag Vincolato: ScaricaDemo
) Drag Collisione: ScaricaDemo

Author

Strategy Director @AQuest ~ Docente Master @NinjAcademy

7 Commenti

  1. 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

  2. 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

  3. 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();

  4. @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?

  5. ciao a tutti
    ci provo…
    ho realizzato un mc con un testo scrollabile;
    sullo scroll ho inserito questo codice

    on (press) {
    startDrag(“”,false, left, top, right, bottom);
    }
    on (release) {
    mioclip.stopDrag();
    }

    non funziona, nel senso che quando lo scroll arriva in fondo e rilascio il mouse e lo sposto sul monitor per fare altro, lo scroll continua a muoversi, anche se solidale ad una linea retta verticale come dovrebbe essere, ma continua a muoversi.
    Non riesco a capire il perché.
    Ho copiato un altro file preesistente che funziona benissimo, l’ho importato in un mio file nuovo e non funziona.
    Ho il pc sfigato? o il software è sfigato? ho è una questione di flashplayer o che ne so???

  6. Ciao GRANDE JULIUS

    vorrei iniziare ad usare questo bel tutorial, ma con differenti oggetti (immagini) sullo stage. Saresti così gentile da consigliarmi come potere implementare e riuscire a muovere differenti oggetti sullo stage? E sarebbe il massimo che se un oggetto urtasse un altro e ci fosse anche un conseguente movimento di spostamento dell’ultimo…

    E’ da FLASH GURU??? Tipo te??? :)) Credo che sia abbastanza complicato per un verginello di as come me, ma tue sagge parole potrebbero darmi un aiuto. Ho cercato parecchio ma non ho trovato queste specifiche (muovere con mouse e collisione con altro oggetto…)_

    GRAZIE Mr. Julius

Commenti