Den mesta koden i klassen AnalogClockFace handlar om inställning av urtavlans visningselement. När AnalogClockFace initieras ritar den en cirkel, placerar en numerisk textetikett vid varje timmarkering och skapar sedan tre Shape-objekt, en för respektive tim-, minut- och sekundvisare.
När SimpleClock-programmet körs anropas metoden
AnalogClockFace.draw()
varje sekund, enligt följande:
/**
* Called by the parent container when the display is being drawn.
*/
public override function draw():void
{
// stores the current date and time in an instance variable
currentTime = new Date();
showTime(currentTime);
}
Med den här metoden sparas aktuell tid i en variabel så att tidpunkten inte kan ändras precis när visarna ska flyttas. Därefter anropas metoden
showTime()
för att visa visarna, enligt följande:
/**
* Displays the given Date/Time in that good old analog clock style.
*/
public function showTime(time:Date):void
{
// gets the time values
var seconds:uint = time.getSeconds();
var minutes:uint = time.getMinutes();
var hours:uint = time.getHours();
// multiplies by 6 to get degrees
this.secondHand.rotation = 180 + (seconds * 6);
this.minuteHand.rotation = 180 + (minutes * 6);
// Multiply by 30 to get basic degrees, then
// add up to 29.5 degrees (59 * 0.5)
// to account for the minutes.
this.hourHand.rotation = 180 + (hours * 30) + (minutes * 0.5);
}
Först extraheras värdena för timma, minut och sekund motsvarande aktuell tidpunkt. Därefter används dessa värden till att beräkna vinkeln för respektive visare. Eftersom den andra visaren roteras ett helt varv på 60 sekunder så roteras den 6 grader per sekund (360/60). Minutvisaren roteras lika mycket varje minut.
Timvisaren uppdateras varje minut, så den visar en liten förändring allteftersom minuterna tickar. Den roteras 30 grader varje timme (360/12), men den roteras även en halv grad varje minut (30 grader dividerat med 60 minuter).