Trascinare un oggetto

Con flash è possibile trascinare un oggetto con il mouse, vediamo come.

Realizziamo un esempio in cui l'utente possa trascinare con il mouse l'aereo.

Partiamo da questo filmato di partenza: trascinamento-partenza.fla

Per farlo, useremo un pulsante. Creiamo un pulsante con il disegno dell'aereo (elabora → converti in simbolo - pulsante)

Diamo come nome d'istanza al pulsante creato “aereo”:

Ora selezioniamo il pulsante, apriamo il pannello azioni ed inseriamo questo codice:

//qui facciamo partire il trascinamento
 
//quando si clicca con il mouse:
on (press) {
//si comincia il trascinamento:
	startDrag(aereo,true);
	}
//quando si rilascia il mouse:	
on (release) {
//si ferma il trascinamento.
	stopDrag();
	}
 

Questo il risultato:

The Adobe Flash Plugin is needed to display this content.

trascinamento_semplice.fla

Trascinare un oggetto animato

Ora abbiamo trascinato un pulsante inanimato, vediamo come trascinare il nostro clip filmato animato dell'aereo:

  • modifichiamo l'oggetto dell'aereo
  • creiamo un pulsante all'interno dell'aereo
  • questo pulsante sarà “invisibile”: definiamo soltanto lo stato “premuto” (l'ultimo). In questo modo il pulsante sarà invisibile quando esportato. (in modifica verrà mostrato come azzurrino chiaro)
  • associamo a questo pulsante il codice:
on (press) {
	startDrag(this,false);
	}
 
on (release) {
	stopDrag();
	}

Questo sarà il risultato:

The Adobe Flash Plugin is needed to display this content.

trascinamento_animato.fla

Associare azioni agli oggetti clip filmato

Abbiamo visto che tutte le azioni che sono associate a pulsanti devono essere contenute in blocchi di codice preceduti dall'operatore on.

Allo stesso modo, le azioni associate ai clip filmato devono essere associate all'operatore onclipEvent.

Tutte le azioni associate ai clip filmato devono essere associate all'operatore onclipEvent!

Vediamo gli eventi principali:

  • load L'azione viene avviata nel momento in cui viene creata l'istanza del clip filmato e questo appare nella linea temporale.
  • unload L'azione viene avviata nel primo fotogramma dopo che il clip filmato è stato rimosso dalla linea temporale.
  • enterFrame L'azione viene attivata in modo continuo alla stessa frequenza dei fotogrammi del clip filmato.
  • mouseMove L'azione viene avviata ogni volta che il mouse viene spostato.
  • mouseDown L'azione viene avviata quando si preme il pulsante sinistro del mouse.
  • mouseUp L'azione viene avviata quando si rilascia il pulsante sinistro del mouse.
  • keyDown L'azione viene avviata quando si preme un tasto.
  • keyUp L'azione viene avviata quando si rilascia un tasto.

Quelli che utilizzeremo di più sono load e enterFrame.

Collisioni

Vediamo come rilevare le collisioni fra gli oggetti: in questo caso rileviamo la collisione fra il nostro aereo (che trasciniamo), ed un albero.

Partiamo dal nostro esempio di trascinamento animato:

  • creiamo un oggetto di tipo clip filmato con il disegno dell'albero
  • trasciniamone un'istanza sullo stage
  • creiamo sullo stage un campo di testo dinamico, e associamo la variabile “collisione”
  • associamo al clip filmato dell'albero questo codice:
 
onClipEvent (enterFrame) {
	if (this.hitTest(_root.aereo)) {
 
		_root.collisione="collisione!";
	} else {
		_root.collisione="no";
	}
}

Ora, se trasciniamo il clip dell'aereo sull'albero, il campo di testo dinamico ci segnalerà la collisione.

The Adobe Flash Plugin is needed to display this content.

Scarica file sorgente: trascinamento_collisione.fla

A questo punto possiamo aggiungere suoni, e variazioni di proprietà…

L'esempio è contenuto in questa pagina: esempio_suono

scarica il file sorgente: trascinamento_collisione_suono.fla

Scarica il file creato a lezione: trascinamento_collisione_prova_lezione.fla

 
corso_flash/lezione_6.txt · Last modified: 2009/06/06 00:34 (external edit)
 
Except where otherwise noted, content on this wiki is licensed under the following license:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki