Bouw een eigen timer en voortgangsmeter in AS3

Tijdens deze tutorial zal ik demonstreren hoe je een aangepaste timer maakt die het aftellen naar een bepaalde tijd ondersteunt.


Eindresultaat voorbeeld

In de onderstaande demo ziet u de tijd aftellen vanaf 1:00, een voortgangsbalk die de voortgang van de timer en een annuleerknop bijhoudt.

Zodra het aftellen vanaf 01:00 is voltooid of u op de knop Annuleren drukt, wordt er een filmclip van rechts weergegeven. Met deze filmclip kunt u een gewenste tijd invoeren en bepalen of de tijd omhoog of omlaag loopt. Een voortgangsbalk wordt dan toegevoegd en volgt de voortgang van de tijd. Als de tijd is verstreken of u drukt op de knop Annuleren, kunt u een nieuwe tijd invoeren.


Stap 1: Codering van de Custom Timer Class

Hier zullen we de aangepaste timer-klasse schrijven die onze hoofdfilm zal besturen.

Ga naar Bestand> Nieuw en kies Actionscript 3.0 Class. Bewaar dit bestand als "CountTimer.as".


Stap 2: klassen importeren

Hier openen we het pakket en importeren we de klassen die we nodig hebben om deze klasse te schrijven.

Voeg het volgende toe aan "CountTimer.as"

 pakket // Nodig voor de timer import flash.utils.Timer; import flash.events.TimerEvent; // We zullen dit TextField updaten met de tijd import flash.text.TextField;

Stap 3: Variabelen en Constructorfunctie

Hier zullen we de variabelen declareren die de klasse nodig heeft en de constructorfunctie coderen.

Voeg het volgende toe aan "CountTimer.as".

 public class CountTimer verlengt Timer // Het tekstveld waar de bijgewerkte tijd private tar targetText: TextField; // De richting van de timer, d.w.z. "up" of "down" private var direction: String; // Hoeveel minuten heeft de timer privé-var minuten: int; // Hoeveel seconden heeft de timer privé-var seconden: int; // Gebruikt in onze berekening om de timer te updaten private var totalSeconds: int; // De totale hoeveelheid tijd = (minuten + seconden) privé-var timeTotal; // Hoeveel van de tijd is privé var timeLoaded = 0 voorbijgegaan; // Stel in op true om de timer te testen. Private var test: Boolean = false; openbare functie CountTimer (min: int, sec: int, dir: String, targetTextField: TextField = null) notulen = int (min * 60); seconden = int (sec); timeTotal = minuten + seconden; super (1000, timeTotal); if (dir == "down") totalSeconds = minutes + seconds;  else totalSeconds = 0;  if (targetTextField! = null) targetText = targetTextField;  direction = dir; 

Hier hebben we enkele variabelen verklaard die we nodig hebben voor onze klas.

De Constructorfunctie heeft vier parameters; ze zijn als volgt:

  • min: Een geheel getal dat aangeeft hoeveel minuten u de timer wilt hebben.
  • sec: Een geheel getal dat aangeeft hoeveel seconden u wilt dat de timer heeft.
  • dir: Een tekenreeks die de richting van de teller vertegenwoordigt, kan een van de volgende zijn: "omhoog" of "omlaag".
  • targetTextField: Een tekstveld dat wordt gebruikt om de bijgewerkte tijd weer te geven (dit is optioneel).

Binnen de constructorfunctie stellen we de notulen variabele gelijk aan de opgegeven waarde van min * 60 (sinds 1 minuut is gelijk aan 60 seconden).

We hebben vervolgens de seconden variabele gelijk aan de sec.

Vervolgens stellen we de timeTotal variabele gelijk aan notulen + seconden.

Dan bellen we super() -- die de code van de constructorfunctie van de timer class - pass in 1000 milliseconden, en de timeTotal variabel. Door 1000 milliseconden te gebruiken, vertellen we de timer één keer per seconde aan te vinken en door in te geven timeTotal we vertellen de timer hoe vaak hij moet vuren.

We controleren vervolgens of het dir parameter is gelijk aan "omhoog" of "omlaag" en stel de totaalseconden variabele overeenkomstig. De totale seconden worden gebruikt in onze timeHandler () functie. We zullen dit met 1 verhogen of verlagen met elke timer dat de timer afgaat.

Vervolgens controleren we of de gebruiker in een TextField al dan niet geslaagd is voor de constructor en stelt de targetText variabel als ze dat deden; dit wordt gebruikt om de tijd weer te geven.

Eindelijk stellen we de richting variabel in de richting waarin de gebruiker is gepasseerd.


Stap 4: Codering van de begin() Functie

Hier coderen we het begin() functie voor onze timer.

Voeg het volgende toe aan de "CountTimer.as".

 override public function start (): void super.start (); addEventListener (TimerEvent.TIMER, timerHandler); 

Omdat we Timer hebben verlengd, overschrijven we de bestaande timer begin() methode. Hier bellen we gewoon Super start() (die de code van de klasse Timer uitvoert begin() methode) en voeg een EventListener toe om te detecteren wanneer de timer tikt.


Stap 5: Codering van de timerHandler Functie

Hier coderen we onze timerHandler () functie. Dit is waar we onze tijd bijwerken en weergeven. Deze functie wordt eenmaal per seconde gebeld.

Voeg het volgende toe aan de CountTimer-klasse.

 private function timerHandler (e: TimerEvent): void // Update onze tijd Geladen variabele timeLoaded + = 1; if (richting == "up") // totalSeconds is = 0, om mee te beginnen. We voegen daar 1 toe. totaalseconden ++;  else // totalSeconds = theNumber of seconds door min en sec toe te voegen; we trekken daar 1 van af totaal seconden -;  // Hoe kunnen seconden er nog zijn. seconden = totalSeconds% 60; // Hoeveel minuten resteren minuten = Math.floor (totalSeconds / 60); // De minuten en seconden om weer te geven in het TextField. var minutenDisplay: String = (minuten < 10) ? "0" + minutes.toString() : minutes.toString(); var secondsDisplay:String = (seconds < 10) ? "0" + seconds.toString(): seconds.toString(); if (targetText != null)  targetText.text = minutesDisplay + ":" + secondsDisplay;  if (test=true)  trace(minutesDisplay + ":" + secondsDisplay);  

Binnen deze functie werken we onze timeLoaded variabele, die wordt gebruikt om de voortgang bij te houden van hoeveel tijd verstreken is.

Vervolgens controleren we of richting is gelijk aan "omhoog" of "omlaag" en pas onze aan totaalseconden variabele overeenkomstig.

We bepalen vervolgens hoeveel seconden en minuten er nog over zijn; vul de minutesDisplay en secondsDisplay met een extra nul indien nodig; werk het TextField bij (als er een is doorgegeven aan de constructor); en volg eventueel de tijd op als we onze hebben ingesteld test variable to true (handig om te testen als je geen TextField instelt).

De berekening die werd gebruikt om het te bepalen seconden variabele neemt de rest van totaalseconden / 60.De% (modulo) operator geeft ons de rest.

De berekening die werd gebruikt om het te bepalen notulen variabele neemt eenvoudig de totaalseconden/ 60, naar beneden afgerond met Math.floor ().


Stap 6: Codering van de getTimeTotal () Functie

Hier coderen we een functie die eenvoudig onze teruggeeft timeTotal variabele. Omdat we deze variabele privé hebben gemaakt, hebben we een manier nodig om er toegang toe te krijgen.

 openbare functie getTimeTotal (): int return timeTotal; 

Stap 7: Codering van de getTimeLoaded () Functie

Hier coderen we een functie die onze teruggeeft timeLoaded variabel. Nogmaals, omdat het privé is, hebben we een manier nodig om toegang te krijgen.

 openbare functie getTimeLoaded (): int return timeLoaded; 

Stap 8: Coderen van de getProg () Functie

Deze functie geeft ons de voortgang van onze tijd. Het is hoeveel van de totale tijd (die we in de constructor hebben ingesteld) is verstreken. We vermenigvuldigen met 100 zodat we een percentage tussen 1 en 100 krijgen.

 openbare functie getProg (): int return Math.floor (timeLoaded / timeTotal * 100); 

Stap 9: De CountTimer-klasse testen

Hier beginnen we met het ontwerpen van de hoofdfilm die onze klasse "CountTimer" gebruikt.

Ga naar Bestand> Nieuw en maak een nieuw ActionScript 3.0-document.

Stel de grootte in op 320x220 px.

Sla dit document op als "Timer.fla". Ga naar Bestand> Nieuw en kies Actionscript 3.0 Class.

Bewaar dit bestand als "Main.as". We gaan onze CountTimer-klasse testen, dus voeg het volgende toe aan de "Main.as".

 pakket import flash.display.MovieClip; importeer CountTimer; public class Main breidt MovieClip uit var countTimer: CountTimer; public function Main () countTimer = new CountTimer (1,30, "up"); countTimer.start (); 

Zorg ervoor dat u de test variabele in "CountTimer.as" in waar, en stel de documentklasse in op "Hoofd".

Druk op ctrl-enter en test de film; u zou de getraceerde tijd moeten zien in het Output-venster.


Stap 10: De gebruikersinterface ontwerpen

Hier beginnen we met het ontwerpen van de hoofdfilm die onze gebruikt CountTimer klasse.

We zullen TweenLite in onze film gebruiken, dus als je geen exemplaar hebt, download het dan van greensock.com.


Countdown / Countup Text

Selecteer het gereedschap Tekst en zorg ervoor dat de volgende eigenschappen zijn ingesteld in het "CHARACTER" -venster.

  • Grootte: 50.0 pt
  • De kleur zwart

Klik nog steeds in het paneel "Teken" op "Inbedden" en zorg ervoor dat "UpperCase", "LowerCase", "Cijfers" zijn geselecteerd en onder "Voeg ook deze tekens toe"
dat je een ":" en een "%" hebt toegevoegd.

Teken een tekstveld op het podium en stel de volgende eigenschappen in onder het venster "POSITIE en GROOTTE".

  • X: 0
  • Y: 0
  • W: 320
  • H: 60

Geef dit TextField de instantienaam "timer_txt"; zorg ervoor dat het type respectievelijk is ingesteld op "Klassieke tekst" en "Dynamische tekst".

Dit TextField zal worden gebruikt om het tijdstip aan te geven waarop de film voor het eerst begint.


Voortgangsbalk

Nu moeten we onze voortgangsbalk ontwerpen.

Ga naar Invoegen> Nieuw symbool. Geef het de naam "ProgressContainer" en zorg ervoor dat "Exporteren voor Actionscript" is aangevinkt en dat de klasse is ingesteld op "ProgressContainer".

Ga naar Venster> Componenten en sleep een ProgressBar-component naar de filmclip.

Stel de eigenschappen van de ProgressBar in op het volgende.

  • X: 0
  • Y: 0
  • W: 320
  • H: 42.0

Onder "Componentparameters" stelt u de modus in op "handmatig".

Geef de ProgressBar de instantienaam "pb".

Selecteer het gereedschap Tekst en zorg ervoor dat de volgende eigenschappen onder het paneel "TEKENS" zijn ingesteld.

  • Grootte: 30pt
  • De kleur zwart

Teken een TextField in de filmclip.

Stel de volgende eigenschappen in op het TextField.

  • X: 80.0
  • Y: 1,0
  • W: 159.0
  • H: 38: 0

Geef dit TextField de instantienaam "progress_txt".

U kunt nu deze MovieClip sluiten.


Groeiende en vervagende tekst

Nu gaan we de groeiende en vervagende tekst ontwerpen die wordt weergegeven als de tijd is verstreken.

Ga naar Invoegen> Nieuw symbool. Geef het de naam "GrowFadeText" en zorg ervoor dat "Exporteren voor Actionscript" is aangevinkt en de klasse is ingesteld op "GrowFadeText".

Selecteer het gereedschap Tekst en zorg ervoor dat de volgende eigenschappen zijn ingesteld onder het paneel "Teken".

  • Grootte: 15pt
  • Kleur: [ik zet het op een blauwe, je kunt hetzelfde doen als je wilt]

Sleep een TextField naar de MovieClip en stel de volgende eigenschappen in.

  • X: -69.0
  • Y: -6,35
  • W: 135.0
  • H: 21.0

Voer de tekst "TIMER COMPLETE" in het tekstveld in. U kunt nu deze MovieClip sluiten.


Entry Fields

Nu gaan we de MovieClip ontwerpen die van links naar binnen glijdt. Selecteer het gereedschap Rechthoek en stel de kleur in op wit. Sleep een rechthoek van de linkerbovenhoek van het werkgebied naar de rechterbenedenhoek.

Selecteer de rechthoek die u zojuist hebt gesleept en druk op F8.Geef hem de naam "countContainer" .Zorg ervoor dat "Exporteren voor Actionscript is ingeschakeld en dat Class is ingesteld op" countContainer ".

Stel de volgende eigenschappen in op de MovieClip.

  • X: 322
  • Y: 0
  • W: 320
  • H: 220

Dubbelklik nu om naar de MovieClip te gaan.

Selecteer het gereedschap Tekst en zorg ervoor dat de volgende eigenschappen zijn ingesteld in het "CHARACTER" -venster.

  • Grootte: 50pt
  • De kleur zwart

Sleep een tekstveld naar het werkgebied en stel de volgende eigenschappen in.

  • X: 0
  • Y: 0
  • W: 320
  • H: 60

Geef dit TextField de instantienaam "timer_txt" en zorg ervoor dat het type is ingesteld op respectievelijk "Klassieke tekst" en "Invoertekst".

Selecteer opnieuw het gereedschap Tekst en sleep een TextField naar het werkvlak. Stel vervolgens de volgende eigenschappen in.

  • X: 0
  • Y: 59,0
  • W: 320
  • H: 60

Geef dit TextField de instantienaam "instructions_txt" en zorg ervoor dat het type respectievelijk is ingesteld op "Classic Text" en "Input Text".

Ga naar Venster> Componenten en sleep drie knoppen binnen deze MovieClip.

Geef de eerste knop de instantienaam "countDown_btn" en stel de volgende eigenschappen in.

  • X: 14.00
  • Y: 160

Geef de tweede knop de instantienaam "cancel_btn" en stel de volgende eigenschappen in.

  • X: 103,00
  • Y: 160,00

Geef de derde knop de instantienaam "countUp_btn" en stel de volgende eigenschappen in.

  • X: 182,00
  • Y: 160,00

U kunt nu de MovieClip sluiten.

Nu we onze UI Designed hebben, kunnen we de code voor de hoofdfilm schrijven.


Stap 11: codering van de hoofdfilm

Als u meegaat, verwijdert u alle ActionScript in "Main.as" die u in stap 9 hebt gemaakt. Dat was om te testen; nu hebben we code nodig die werkt met onze nieuwe interface.

Hier openen we de pakketverklaring en importeren we de klassen die we gaan gebruiken.

Voeg het volgende toe aan "Main.as".

 pakket import flash.display.MovieClip; import fl.controls.Button; import flash.text.TextField; import flash.events.TimerEvent; import flash.events.MouseEvent; import flash.text.TextFieldType; import flash.text.TextFieldAutoSize; importeer CountTimer; import com.greensock.TweenLite; import flash.events.Event; import fl.controls.ProgressBar;

Stap 12: Variabelen en Constructorfunctie

Hier verklaren we onze variabelen en coderen we de Constructor.

Voeg het volgende toe de "Main.as"

 public class Main breidt MovieClip uit // Een array om de minuten en seconden op te slaan in elementen [0] en [1] private var timeArray: Array; // Onze countTimer private var countTimer: CountTimer; // Een boolean die aangeeft of dit de eerste timer // is (die wordt gebruikt wanneer de film voor het eerst wordt gestart) private var firstTimer: Boolean = true; // De richting van onze timer kan "up" of "down" zijn. Private var direction: String; // De MovieClip die de tekst bevat die we laten groeien en vervagen private var growFadeText: GrowFadeText; // De MovieClip waarin onze progressBar private var progressContainer: ProgressContainer; // De minuten private var min: int; // De tweede private var sec: int; openbare functie Hoofd () min = 1; sec = 0; countTimer = new CountTimer (min, sec, "down", timer_txt); timer_txt.text = "1:00"; countTimer.addEventListener (TimerEvent.TIMER_COMPLETE, timerComplete); setupButtons (); addProgressContainer (0,70, "down"); countTimer.start (); stage.addEventListener (Event.ENTER_FRAME, UpdateProgress); cancel_btn.addEventListener (MouseEvent.CLICK, moveContainer); 

Eerst hebben we de min en sec variabelen en geef ze door aan de countTimer; we stellen vervolgens de richting in op "omlaag" en stellen het doel TextField in op timer_txt.

We stellen vervolgens een aantal standaardtekst in voor het TextField, voeg een toe TIMER_COMPLETE gebeurtenis naar de Timer, voer een functie uit om onze knoppen in te stellen, voeg de ProgressBar toe, start de Timer en voeg een ENTER_FRAME gebeurtenis luisteraar naar het podium (die we zullen gebruiken om de voortgangsbalk bij te werken), en ten slotte een toevoegen KLIK gebeurtenis luisteraar voor onze cancel_btn.


Stap 13: Codering van de timerComplete () Functie

Voeg het volgende toe aan "Main.as".

 private function timerComplete (e: TimerEvent): void addGrowFadeText (154,130); if (firstTimer == true) TweenLite.to (growFadeText, 2.5, scaleX: 2, scaleY: 2, alpha: 0, onComplete: moveContainer);  else TweenLite.to (growFadeText, 2.5, scaleX: 2, scaleY: 2, alpha: 0, onComplete: showTheControls); 

Hier voegen we de tekst toe aan het podium door te bellen addGrowFadeText () we zullen deze functie binnenkort bekijken. We controleren dan de firstTimer variabele om te zien of dit de eerste timer is, of het gebruik van tweenLite is om te groeien en de tekst te vervagen en de moveContainer functie als de animatie voltooid is. Als het niet de eerste timer is, gebruiken we opnieuw tweenLite om de tekst te laten groeien en vervagen, maar bel de showTheControls () functie zodra de animatie is voltooid. We zullen de moveContainer en showTheControls functioneert kort.


Stap 14: Codering van de setupButtons () Functie

Voeg het volgende toe aan "Main.as"

 private function setupButtons (): void countContainer.countDown_btn.addEventListener (MouseEvent.CLICK, doTimer); countContainer.countUp_btn.addEventListener (MouseEvent.CLICK, doTimer); countContainer.cancel_btn.addEventListener (MouseEvent.CLICK, restoreControls); countContainer.instructions_txt.text = "Voer tijd in opmaak 1:30 en druk dan op CountDown of CountUp knop"; // We willen niet dat de gebruiker de tekst kan bewerken countContainer.instructions_txt.selectable = false; 

Hier voegen we een aantal EventListeners toe aan onze knoppen, zetten de tekst voor onze instructions_txt en stel het zo in dat de gebruiker de tekst niet kan selecteren of bewerken. Ik heb hier een TextField gebruikt om deze al lange tutorial korter te houden, maar je zou waarschijnlijk een Label-component hier willen gebruiken en het met een TextFormat-object opmaken.


Stap 15: Codering van de addProgressContainer () Functie

Voeg het volgende toe aan "Main.as"

 persoonlijke functie addProgressContainer (xPos: int, yPos: int, dir: String): void progressContainer = new ProgressContainer (); progressContainer.x = xPos; progressContainer.y = yPos; stage.addEventListener (Event.ENTER_FRAME, UpdateProgress); addChild (progressContainer); if (dir == "down") progressContainer.pb.direction = "left";  else progressContainer.pb.direction = "right"; 

Hier maken we een nieuwe progressContainer en stellen deze in X en Y eigenschappen van de xpos en YPOS parameters die worden doorgegeven. Vervolgens voegen we een toe ENTER_FRAME gebeurtenis luisteraar die de UpdateProgress () functie, en we voegen het toe progressContainer naar het podium. Tot slot kijken we naar de dir parameter om te zien of deze gelijk is aan "down"; als dit het geval is, stellen we de richting van de ProgressBar in op "left", anders zetten we de richting van de ProgressBar op "right".


Stap 16: Coderen van de removeProgressContainer () Functie

Voeg het volgende toe aan "Main.as"

 private function removeProgressContainer (): void if (progressContainer! = null) stage.removeEventListener (Event.ENTER_FRAME, updateProgress); removeChild (progressContainer); progressContainer = null; 

Hier controleren we of het progressContainer bestaat; als dat niet het geval is, verwijderen we de ENTER_FRAME gebeurtenis luisteraar vanaf het podium, zodat het niet verder loopt. We verwijderen dan de progressContainer van het podium en stellen het in nul omdat we er klaar mee zijn.


Stap 17: Codering van de UpdateProgress () Functie

Voeg het volgende toe aan "Main.as".

 private function updateProgress (e: Event): void progressContainer.progress_txt.text = countTimer.getProg (). toString () + "%"; progressContainer.pb.setProgress (countTimer.getTimeLoaded (), countTimer.getTimeTotal ()); 

Hier hebben we de progress_txt's tekst om de voortgang van onze timer te tonen. We gebruiken de countTimer's getProg () methode die een geheel getal retourneert van welk percentage van de tijd is verstreken. Omdat het een int retourneert, gebruiken we AS3's ingebouwd toString () methode erop en voeg er een "%" -teken aan toe.

Vervolgens noemen we de setProgress () methode van de ProgressBar component op onze ProgressBar (pb). We komen binnen countTimer.getTimeLoaded () en countTimer.getTimeTotal () die gehele getallen retourneren. Raadpleeg voor meer informatie over de ProgressBar-component mijn Quick Introduction to the ProgressBar-component.


Stap 18: Codering van de addGrowFadeText () Functie

Voeg het volgende toe aan "Main.as".

 persoonlijke functie addGrowFadeText (xPos: int, yPos: int) growFadeText = new GrowFadeText (); growFadeText.x = xPos; growFadeText.y = yPos; addChild (growFadeText); 

Hier maken we een nieuw exemplaar van GrowFadeText, stel het in X en Y eigenschappen zoals opgegeven, en dan voegen we deze toe aan de fase.


Stap 19: Codering van de removeGrowFadeText () Functie

Voeg het volgende toe aan "Main.as".

 private function removeGrowFadeText (): void if (growFadeText! = null) removeChild (growFadeText); growFadeText = null; 

Hier controleren we om te zien of growFadeText bestaat. Als dat niet het geval is, verwijderen we het uit het werkgebied en stellen het in op nul.


Stap 20: Codering van de moveContainer () Functie

Voeg het volgende toe aan "Main.as".

 privéfunctie moveContainer (e: Event = null): void countTimer.stop (); removeChild (timer_txt); removeChild (cancel_btn); removeGrowFadeText (); removeProgressContainer (); countContainer.cancel_btn.visible = false; firstTimer = false; TweenLite.to (countContainer, 1, x: 0); 

Hier stoppen we de timer en verwijderen we de timer_txt en cancel_btn. Vervolgens noemen we onze removeGrowFadeText () en removeProgressContainer () functies, stel de cancel_btn in de countContainer om onzichtbaar te zijn, stelt u de firstTimer variabele naar vals, en schuif de countContainer in het gebruik van TweenLite.


Stap 21: Codering van de showControls () Functie

Voeg het volgende toe aan "Main.as":

 private function showTheControls (): void showControls (); removeProgressContainer (); countTimer.stop (); countContainer.timer_txt.text = ""; countContainer.timer_txt.text = ""; 

Hier noemen we de showControls functie, die we binnenkort zullen bekijken. Vervolgens bellen we removeProgressContainer (), stop de timer en reset onze TextFields om leeg te zijn.


Stap 22: Codering van de doTimer () Functie

Voeg het volgende toe aan "Main.as":

 private functie doTimer (e: MouseEvent): void if (e.target == countContainer.countDown_btn) direction = "down";  else direction = "up";  if (countContainer.timer_txt.text! = "") timeArray = countContainer.timer_txt.text.split (":"); min = timeArray [0]; sec = timeArray [1]; countTimer = new CountTimer (min, sec, direction, countContainer.timer_txt); countTimer.start (); countTimer.addEventListener (TimerEvent.TIMER_COMPLETE, timerComplete); countTimer.addEventListener (TimerEvent.TIMER, UpdateProgress); hideControls (); addProgressContainer (0,70, richting); 

We controleren eerst welke knop werd ingedrukt. Als de countDown_btn werd ingedrukt, hebben we de richting variabele naar "down" anders hebben we de richting veranderlijk naar "omhoog". Daarna controleren we om het zeker te weten timer_txt is niet leeg. Als dit niet het geval is, gebruiken we de split () functie om de minuten en seconden in de timeArray.De split () functie neemt een tekenreeks en scheidt deze van alles wat je als parameter doorgeeft - hier hebben we de dubbele punt (:) - gebruikt en vervolgens elk "stuk" aan de array toegevoegd. Dus als je bent geslaagd "01:45", dan is het element van de array [0] "1"; element [1] zou "45" zijn.

We hebben vervolgens de sec en min variabelen.

Vervolgens maken we een nieuw exemplaar van de countTimer en pas in de min,sec,dir,en het TextField om te gebruiken.

We voegen er vervolgens twee toe TimerEvent luisteraars die ons bellen timerComplete () en UpdateProgress () functies.

Eindelijk noemen we de hideControls () functie en voeg de progressContainer naar het podium.


Stap 23: Codering van de showControls () Functie

Voeg het volgende toe aan "Main.as".

 private function showControls (): void countContainer.instructions_txt.visible = true; countContainer.countDown_btn.visible = true; countContainer.countUp_btn.visible = true; countContainer.cancel_btn.visible = false; 

Hier hebben we gewoon de instruction_txt,countDown_btn,en countUp_btn zichtbaar zijn. We hebben vervolgens de cancel_btn zijn inzichtbaar.


Stap 24: Codering van de hideControls () Functie

Voeg het volgende toe aan "Main.as".

 private function hideControls (): void countContainer.instructions_txt.visible = false; countContainer.countDown_btn.visible = false; countContainer.countUp_btn.visible = false; countContainer.cancel_btn.visible = true; 

Dit is het tegenovergestelde van de vorige functie; hier hebben we alleen de set ingesteld instruction_txt,countDown_btn,en countUp_btn onzichtbaar zijn. We hebben vervolgens de cancel_btn zichtbaar zijn.


Stap 25: Codering van de restoreControls () Functie

Voeg het volgende toe aan "Main.as".

 private function restoreControls (e: Event) showTheControls (); countTimer.stop (); 

Hier noemen we de showControls () functie en stop de timer.


Stap 26: Sluit de klasse en het pakket.

Voeg het volgende toe aan "Main.as"

  // Sluit de klasse // Sluit het pakket

Hier sluiten we onze lessen en pakket af.


Stap 27: Stel de documentklasse in en test de film

Hoewel niet absoluut noodzakelijk, stelt u de test variabele naar vals in de "CountTimer" .as ".

Zorg ervoor dat uw documentklasse is ingesteld op "Main" en test de film.


Conclusie

We hebben nu een veelzijdige Timerklasse die voor een aantal dingen kan worden gebruikt, van tijdslimieten voor tests tot tijden voor het instellen van levels op games.

Ik hoop dat je deze tutorial nuttig hebt gevonden en bedankt voor het lezen!