Leggi i semplici passaggi di questo Suggerimento rapido per creare un SandClock minimalista con ActionScript.
Diamo un'occhiata al risultato finale su cui lavoreremo:
Usando le matrici e un MovieClip quadrato premed creeremo un SandClock che sarà animato da un Timer.
Avvia Flash e crea un nuovo documento Flash, imposta le dimensioni dello stage su 400x250px e la frequenza fotogrammi su 24 fps.
Questa è l'interfaccia che useremo, i quadrati nell'immagine sono in realtà un singolo quadrato blu MovieClip esportato per l'uso con ActionScript, con un nome di collegamento di Piazza. Un semplice pulsante chiamato pulsante Start sarà usato per costruire e avviare l'orologio.
Creare una nuova classe ActionScript (Cmd + N), salvare il file come Main.as e scrivi le seguenti righe. Leggi i commenti nel codice per comprendere appieno il comportamento della classe.
pacchetto import flash.display.Sprite; import flash.utils.Timer; import flash.events.TimerEvent; import flash.events.MouseEvent; public class Main extends Sprite private var clockArray: Array = [15,13,11,9,7,3,1]; // Memorizza il numero di quadrati per riga private var top: Array = []; // terrà i quadrati nella parte superiore del contenitore var privato di sandclock: Sprite = new Sprite (); // memorizza tutti i movieclips private var containerCopy: Sprite = new Sprite (); // duplicherà la parte superiore per rendere il timer var inferiore privato: Timer = new Timer (1000); // un timer eseguito ogni secondo contatore var privato: int = 0; // conterrà i secondi, usati per interrompere la funzione pubblica del timer Main (): void startButton.addEventListener (MouseEvent.MOUSE_UP, buildClock); // un listener nel pulsante start private function buildClock (e: MouseEvent): void startButton.removeEventListener (MouseEvent.MOUSE_UP, buildClock); // disabilita il pulsante startButton.enabled = false; var clockLength: int = clockArray.length; / * questo doppio per navigare attraverso la lunghezza dell'array di clock E il valore di ciascun elemento dell'array che crea 7 linee (lunghezza) di quadrati con 15, 13, 11 (valore elemento) e così via * / per (var i: int = 0; io < clockLength; i++) for (var j:int = 0; j < clockArray[i]; j++) var s:Square = new Square(); var sc:Square = new Square(); s.x = 70.5 + (s.width * j) + (1 * j) + (i * (s.width + 1)); s.y = 84.5 + (s.height + 1) * i; sc.x = s.x; sc.y = s.y; if (i >= 5) s.x = 70,5 + (s.width * j) + (1 * j) + (i * ((s.width) + 1)) + (s.width * 2 - 4); sc.x = s.x; container.addChild (s); containerCopy.addChild (sc); // crea una copia per la parte inferiore top.push (s); sc.alpha = 0,2; // rende la parte inferiore semi trasparente addChild (contenitore); containerCopy.x = 225; // posiziona e ruota la parte inferiore containerCopy.y = 247; containerCopy.rotation = 180; addChild (containerCopy); timer.addEventListener (TimerEvent.TIMER, startClock); // avvia il timer timer.start (); / * questa funzione viene eseguita ogni secondo, cambia l'alfa del quadrato corrispondente per rendere l'effetto sabbia. quando il tempo è terminato, arresta il timer e chiama una funzione * / funzione privata startClock (e: TimerEvent): void container.getChildAt (counter) .alpha = 0.2; containerCopy.getChildAt (counter) .alpha = 1; contatore ++; // 60 secondi se (contatore> = 59) timer.stop (); timer.removeEventListener (TimerEvent.TIMER, startClock); timeComplete (); private function timeComplete (): void // fai qualcosa qui
È possibile regolare il timer e il contatore valore per rendere la durata della sandclock maggiore o minore.
Ricorda di aggiungere il nome della classe al Classe campo nel Pubblicare sezione del Proprietà pannello.
Perché non usare questo SandClock per dare un tocco di classe alla tua applicazione o al tuo gioco?
Spero che questo tutorial ti sia piaciuto, grazie per la lettura!