Citiți pașii simpli din acest sfat rapid pentru a crea un minimalist SandClock cu ActionScript.
Să aruncăm o privire asupra rezultatului final pe care îl vom strădui:
Folosind Arrays și un pătrat premergător MovieClip vom crea un SandClock care va fi animat de un cronometru.
Lansați Flash și creați un nou document Flash, setați dimensiunea scenei la 400x250px și rata de cadre la 24fps.
Aceasta este interfața pe care o vom folosi, pătratele din imagine sunt de fapt un singur film albastru pătrat MovieClip exportat pentru utilizare cu ActionScript, cu un nume de Pătrat. Un buton simplu numit butonul de start va fi folosit pentru a construi și a începe ceasul.
Creați o nouă clasă ActionScript (Cmd + N), salvați fișierul ca Main.as și scrieți următoarele rânduri. Citiți comentariile din cod pentru a înțelege pe deplin comportamentul clasei.
pachet import flash.display.Sprite; import flash.utils.Timer; import flash.events.TimerEvent; importul flash.events.MouseEvent; public class Main extinde Sprite private var clockArray: Array = [15,13,11,9,7,3,1]; // Stochează numărul de pătrate pe linie priv var top: Array = []; // va păstra pătratele de pe partea superioară a containerului var varcop privat: Sprite = Sprite nou (); // stochează toate movieclips private var containerCopy: Sprite = Sprite nou (); // va duplica partea de sus pentru a face cronometrul privat privat var: Timer = nou Cronometru (1000); // un timer executat la fiecare al doilea contor privat var: int = 0; // va contoriza secundele folosite pentru a opri funcția publică temporizator Main (): void startButton.addEventListener (MouseEvent.MOUSE_UP, buildClock); // un ascultător în butonul de start funcția privată buildClock (e: MouseEvent): void startButton.removeEventListener (MouseEvent.MOUSE_UP, buildClock); // dezactivează butonul startButton.enabled = false; var clockLength: int = clockArray.length; / * acest dublu pentru căutări prin lungimea matricei și valoarea fiecărui element de matrice creând 7 linii (lungime) de pătrate cu 15, 13, 11 (valoarea elementului) și așa mai departe * / pentru (var i: int = 0; eu < 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 (i); containerCopy.addChild (sc); // creează o copie pentru partea de sus top.push (e); sc.alpha = 0,2; // face partea de jos semi transparentă addChild (container); containerCopy.x = 225; // poziționează și rotește partea de jos containerCopy.y = 247; containerCopy.ro = 180; addChild (containerCopy); timer.addEventListener (TimerEvent.TIMER, startClock); // începe calendarul timer.start (); / * această funcție se execută în fiecare secundă, se schimbă alfa al pătratului corespunzător pentru a produce efectul de nisip. când timpul se termină, oprește temporizatorul și apelează o funcție * / funcția privată startClock (e: TimerEvent): void container.getChildAt (counter) .alpha = 0.2; containerCopy.getChildAt (contra) .alpha = 1; counter ++; // 60 de secunde dacă (contra> = 59) timer.stop (); timer.removeEventListener (TimerEvent.TIMER, startClock); timeComplete (); funcția privată timeComplete (): void // face ceva aici
Puteți ajusta temporizatorul și tejghea valoare pentru a face durata de nisip mai mare sau mai scurtă.
Nu uitați să adăugați numele clasei la Clasă domeniu în Publica secțiunea din Proprietăți panou.
De ce nu utilizați acest SandClock pentru a vă oferi aplicației sau jocului o notă plăcută?
Sper că ți-a plăcut acest tutorial, mulțumesc pentru lectură!