AnalogClockFace sınıfındaki kodun büyük bir kısmı, saat yüzünün görüntüleme öğelerinin ayarlanmasını kapsar. AnalogClockFace başlatıldığında, dairesel bir anahat çizer, her saat işaretine sayısal bir metin etiketi yerleştirir ve sonra saatteki akrep, yelkovan ve saniye göstergesinin her biri için birer tane olmak üzere üç Shape nesnesi oluşturur.
SimpleClock uygulaması çalışmaya başladıktan sonra, aşağıdaki gibi her saniye
AnalogClockFace.draw()
yöntemini çağırır:
/**
* 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);
}
Bu yöntem geçerli saati bir değişkene kaydeder, böylece akrep, yelkovan ve saniye göstergesi çizilirken işlemin ortasında saat değişemez. Ardından aşağıda gösterildiği gibi, akrep, yelkovan ve saniye göstergesini görüntülemek için
showTime()
yöntemini çağırır:
/**
* 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);
}
İlk olarak bu yöntem, geçerli zamanın saat, dakika ve saniye değerlerini ayıklar. Daha sonra akrep, yelkovan ve saniye göstergesinin her birinin açısını hesaplamak için bu değerleri kullanır. Saniye göstergesi tam bir dönüşü 60 saniyede gerçekleştirdiğinden, bu gösterge her saniyede 6 derece (360/60) dönüş yapar. Yelkovan da her dakika aynı derece dönüş yapar.
Akrep de her dakika güncellenir, böylece dakikalar ilerledikçe o da aynı ilerlemeyi gösterebilir. Her saatte 30 derece (360/12) dönüş yapmanın yanı sıra her dakika da yarım derece döner (60 dakika/30 derece).