Crea una rotella colorata in Flash con AS3

In questo tutorial imparerai come creare una ruota che gira usando Flash e AS3, con un'interfaccia adatta sia per dispositivi basati su mouse che su touch.


Anteprima del risultato finale

Diamo un'occhiata al risultato finale su cui lavoreremo:

Clicca e trascina il tuo mouse verticalmente per far girare la ruota; più lunga è la linea che si trascina, più velocemente la ruota girerà! Una volta che si ferma, la barra colorata in basso mostrerà il colore su cui è posizionata la ruota.


Passaggio 1: breve panoramica

Usando elementi grafici pre-creati creeremo un'interfaccia colorata che sarà alimentata da diverse classi ActionScript 3.

L'utente sarà in grado di girare la ruota usando un gesto di trascinamento rappresentato da una linea sullo schermo; una linea più alta farà una rotazione più veloce.


Passaggio 2: Impostazioni documento Flash

Apri Flash e crea un documento 500x300px. Imposta la frequenza dei fotogrammi su 24 fps.


Passaggio 3: interfaccia

Verrà visualizzata un'interfaccia colorata dall'aspetto piacevole, composta da più forme, MovieClip e altro.
Le forme semplici sono state create utilizzando gli strumenti di disegno di Flash Pro e, poiché sono facili da duplicare, non spiegherò la loro creazione. Assicurati che il punto di rotazione della ruota sia al centro.

Puoi sempre guardare il FLA nei file di download di origine.


Passaggio 4: nomi di istanza

L'immagine sopra mostra il Nomi di istanza dei vari MovieClip. Prestare particolare attenzione al wheel.p MovieClip; queste sono le piccole linee nere che dividono i colori nella ruota, e lo sono dentro il ruota Un filmato. Sono nominati p1 a p10, andando in senso orario.


Passaggio 5: TweenMax

Useremo un motore di interpolazione diverso da quello predefinito incluso in Flash; questo renderà la transizione di colore del colorMC simbolo molto più facile.

Puoi scaricare TweenMax dal sito Web di Greensock.


Passaggio 6: imposta la classe principale

Aggiungi il nome della classe, Principale, al Classe campo nel Pubblicare sezione del Proprietà pannello per associare il FLA alla classe del documento principale.


Passaggio 7: creare una nuova classe ActionScript

Creare una nuova classe ActionScript 3.0 (Cmd + N) e salvarla come Main.as nella tua cartella di classe.


Step 8: Struttura della classe

Crea la tua struttura di base per iniziare a scrivere il tuo codice.

 pacchetto import flash.display.Sprite; public class Main estende Sprite public function Main (): void // constructor code

Passaggio 9: Classi richieste

Queste sono le classi che dovremo importare affinché la nostra classe funzioni. Il importare direttiva rende disponibili classi e pacchetti definiti esternamente al codice.

 import flash.display.Sprite; import flash.display.Shape; import flash.events.MouseEvent; import flash.events.Event; import com.greensock.TweenMax;

Passaggio 10: variabili

Queste sono le variabili che useremo; leggi i commenti nel codice per saperne di più su di loro:

 velocità var privata: Number = 0; // la velocità attuale della ruota private var paddle: Vector. = nuovo vettore.(); // un vettore che contiene gli MC p1, p2, ecc. nella riga var privata di stage: Shape; // la linea disegnata come il gesto per spostare la ruota private var lastPaddle: String; // rileverà il valore corrente della ruota

Passaggio 11: costruttore

Il costruttore è una funzione che viene eseguita quando un oggetto viene creato da una classe ed è il primo da eseguire quando si crea un'istanza di un oggetto. Poiché questa è la nostra classe di documenti, verrà eseguita non appena viene caricato il file SWF.

 funzione public final Main (): void // code ...

Step 12: Paddles Vector

Per prima cosa aggiungiamo i vari Movie Clip a forma di paddle al vettore e aggiungiamo gli ascoltatori - scriviamo il ascoltatori () funzione successiva.

 funzione public final Main (): void paddles.push (wheel.p1, wheel.p2, wheel.p3, wheel.p4, wheel.p5, wheel.p6, wheel.p7, wheel.p8, wheel.p9, wheel .p10); ascoltatori ( 'add'); 

Passaggio 13: ascoltatori

Questa funzione aggiungerà o rimuoverà gli ascoltatori in base al parametro. I mouse ascoltatori sono impostati per disegnare la linea che controllerà la ruota.

 ascoltatori di funzioni finali private (action: String): void if (action == 'add') stage.addEventListener (MouseEvent.MOUSE_DOWN, startDraw); stage.addEventListener (MouseEvent.MOUSE_UP, spinWheel);  else stage.removeEventListener (MouseEvent.MOUSE_DOWN, startDraw); stage.removeEventListener (MouseEvent.MOUSE_UP, spinWheel); 

Passo 14: Linea di movimento

La funzione successiva inizia a creare una linea in base alla posizione corrente del mouse e la posiziona sul palco. Viene attivato quando si fa clic sul mouse.

 funzione finale privata startDraw (e: MouseEvent): void line = new Shape (); addChild (line); line.graphics.moveTo (mouseX, mouseY); line.graphics.lineStyle (8, 0x000000, 0.3); // è possibile modificare il colore e lo stile della linea qui stage.addEventListener (MouseEvent.MOUSE_MOVE, drawLine); 

Step 15: Draw Line

Mentre il mouse viene spostato, la linea continua in quella direzione.

 private final function drawLine (e: MouseEvent): void line.graphics.lineTo (mouseX, mouseY); 

Step 16: gira la ruota

Il prossimo codice viene eseguito quando viene rilasciato il pulsante del mouse, terminando la linea. Gli ascoltatori del disegno vengono rimossi per evitare di disegnare più righe e la velocità viene calcolata in base all'altezza della linea. Infine, viene chiamato un evento EnterFrame per ruotare effettivamente la ruota.

 funzione finale privata spinWheel (e: MouseEvent): void stage.removeEventListener (MouseEvent.MOUSE_MOVE, drawLine); ascoltatori ( 'rm'); speed = line.height * 0.1; removeChild (line); riga = null; stage.addEventListener (Event.ENTER_FRAME, spin); 

Passaggio 17: ruota la rotella

Questa è la funzione che gira la ruota e rileva il valore su cui atterra:

 spin funzione privata finale (e: Evento): void / * Rotate Wheel * / wheel.rotationZ + = speed;

Passaggio 18: Rileva valore

Qui rileviamo il valore corrente della ruota in base all'ultima pala toccata.

 / * Rileva valore * / per (var i: int = 0; i < 10; i++)  if(indicator.hArea.hitTestObject(paddles[i]))  lastPaddle = paddles[i].name;  

Passaggio 19: ridurre la velocità

La velocità della ruota viene ridotta ad ogni fotogramma per interrompere definitivamente la rotazione.

 / * Diminuisce velocità * / velocità - = 0,1;

Passaggio 20: Reimposta la rotellina

Tutti i valori vengono resettati quando la ruota si ferma. Viene chiamata una funzione che eseguirà un'azione in base al valore finale.

 / * Rimuovi l'ascoltatore e ripristina la velocità quando la ruota si ferma * / se (velocità <= 0)  stage.removeEventListener(Event.ENTER_FRAME, spin); speed = 0; setBarColor(lastPaddle); listeners('add');  

Passaggio 21: imposta il colore della barra

Questa funzione eseguirà un'azione personalizzata in base all'ultimo valore della ruota. In questo caso cambia il colore della barra in basso, ma potresti farlo fare qualsiasi altra cosa.

 function setBarColor (action: String): void switch (action) case 'p1': TweenMax.to (colorMC, 0.5, colorTransform: tinta: 0xF15D5D, tintAmount: 1); rompere; case 'p2': TweenMax.to (colorMC, 0.5, colorTransform: tinta: 0xC06CA8, tintAmount: 1); rompere; case 'p3': TweenMax.to (colorMC, 0.5, colorTransform: tinta: 0x644D9B, tintAmount: 1); rompere; case 'p4': TweenMax.to (colorMC, 0.5, colorTransform: tinta: 0x5E98C6, tintAmount: 1); rompere; case 'p5': TweenMax.to (colorMC, 0.5, colorTransform: tinta: 0x4789C2, tintAmount: 1); rompere; case 'p6': TweenMax.to (colorMC, 0.5, colorTransform: tinta: 0x55C4CB, tintAmount: 1); rompere; case 'p7': TweenMax.to (colorMC, 0.5, colorTransform: tinta: 0x57BC80, tintAmount: 1); rompere; case 'p8': TweenMax.to (colorMC, 0.5, colorTransform: tinta: 0x90CC6C, tintAmount: 1); rompere; case 'p9': TweenMax.to (colorMC, 0.5, colorTransform: tinta: 0xEBE666, tintAmount: 1); rompere; case 'p10': TweenMax.to (colorMC, 0.5, colorTransform: tinta: 0xF29C69, tintAmount: 1); rompere; 

Conclusione

Cambia il codice per eseguire le tue azioni!

Spero che questo tutorial ti sia piaciuto, grazie per la lettura!