Im ersten Beispiel möchte ich kurz zeigen, wie man mit der Date-Klasse in ActionScript 3 umgeht. Ein Date-Objekt kann ein Datum und eine Uhrzeit beinhalten. Im Anschluss folgt ein Beispiel, wie man auf einfache Weise die aktuelle Zeitposition eines Videos im Format Minuten/Sekunden (z.B. 1:30) realisieren kann (Beispiel anschauen).

Zeitanzeige im Format Minuten/Sekunden eines Flashvideos

Beispiel 1: Date-Objekte

Hier zunächst das Ergebnis-SWF bzw. die vier Date-Objekte, die danach erklärt werden:

Wird ein Objekt der Date-Klasse mit einem leeren Konstruktor erstellt, enthält er das (zur Laufzeit) aktuelle Datum und die aktuelle Uhrzeit (vgl. erste Zeile im SWF).

Actionscript:
  1. var dt1:Date = new Date();

Des Weiteren kann man dem Konstruktor das Jahr, den Monat und dem Tag mitgeben. Dabei beginnen die Monate nicht mit Eins, sondern Null (=Januar). Die Tage sind ab Eins durchnummeriert (1-31).

Actionscript:
  1. var dt2:Date = new Date(2007, 7, 3);

Als nächsten Schritt kann man auch eine Zeit ergänzen, in Stunden, Minuten, Sekunden. Im Beispiel ist dies genau 10:00 Uhr

Actionscript:
  1. var dt3:Date = new Date(2007, 7, 3, 10, 0, 0);

Interessant wird es nun, wenn man Werte angibt, die außerhalb den in der Dokumentation angegebenen Bereichen liegen. Für second schreibt die Doku beispielsweise: second:Number (default = 0) — An integer from 0 to 59. Wählt man ein höhere Zahl, z.B. 100, wird diese automatisch richtig umgerechnet. Das Date-Objekt enthält also 1 Minute 40 Sekunden.

Actionscript:
  1. var dt4:Date = new Date(2007, 0, 1, 0, 0, 100);  // 100 Sekunden setzen
  2. trace("dt4.getMinutes: " + dt4.getMinutes());

Über die Methoden wie getMinutes oder getSeconds lassen sich die einzelnen Bestandteile einer Zeitangabe auslesen.

Undokumentierte Funktionen in der Date-Klasse

Darron Schall weist in seinem Blog auf diese undokumentierten Funktionen hin. Auch negative Wert sind möglich. Beispiel new Date( 2006, 0, 1, -1 ) ist eine Stunde früher als der erste Januar, also der 31.12.05 um 23:00. Man kann also nach Belieben mit den Date-Objekten "rechnen".

Beispiel 2: Zeitanzeige für eine .flv-Datei

Spielt man ein Video über NetConnection/NetStream ab, wird die aktuelle Zeit des Videos (ns.time) ausschließlich in Sekunden zurückgegeben. Ein Video, das 1:20 dauert, durchläuft also 1 bis 80.

Nimmt man also ns.time und packt den Wert in ein Date-Objekt, rechnet dieses die Sekunden automatisch in die Form Stunden/Minuten/Sekunden um. Nun kann man mit getMinutes() und getSeconds() die Zeit des Videos auslesen.

Actionscript:
  1. vidTime = new Date(2007, 0, 1 , 0, 0, ns.time);
  2. ... = vidTime.getMinutes() + ":" + vidTime.getSeconds();

Damit bei einer einstelligen Sekundenzahl 1:05 statt 1:5 angezeigt wird, baut man noch eine Fallunterscheidung ein.

Actionscript:
  1. if (vidTime.getSeconds() <10) {
  2.         tf.text = vidTime.getMinutes() + ":0" + vidTime.getSeconds();
  3.     }
  4.     else {
  5.         tf.text = vidTime.getMinutes() + ":" + vidTime.getSeconds();
  6.     };

Quellcode zu Beispiel 2
Hier noch der komplette Quellcode zum Beispiel:

Actionscript:
  1. // ::: Video :::
  2. var myVideo:Video = new Video(320,180);
  3. addChild(myVideo);
  4.  
  5. var nc:NetConnection = new NetConnection();
  6. nc.connect(null);
  7.  
  8. var ns:NetStream = new NetStream(nc);
  9. ns.client = new Object();
  10. myVideo.attachNetStream(ns);
  11. ns.play("gv.flv");
  12.  
  13. // ::: Timer :::
  14.  
  15. import flash.utils.Timer;     
  16. import flash.events.TimerEvent;
  17.  
  18. var myTimer:Timer = new Timer(200);
  19. myTimer.addEventListener("timer", updateDisplay);
  20. myTimer.start();
  21.  
  22.  
  23. // ::: Date :::
  24.  
  25. var vidTime:Date;
  26.  
  27. function updateDisplay(event:TimerEvent):void {
  28.     vidTime = new Date(2007, 0, 1 , 0, 0, ns.time);
  29.     if (vidTime.getSeconds() <10) {
  30.         tf.text = vidTime.getMinutes() + ":0" + vidTime.getSeconds();
  31.     }
  32.     else {
  33.         tf.text = vidTime.getMinutes() + ":" + vidTime.getSeconds();
  34.     };
  35.        
  36.    
  37.     tf2.text = tf.text;
  38. }
  39.  
  40. // ::: Buttons :::
  41.  
  42.  
  43. forwardButton.addEventListener(MouseEvent.MOUSE_UP, forward);
  44. rewindButton.addEventListener(MouseEvent.MOUSE_UP, rewind);
  45. resetButton.addEventListener(MouseEvent.MOUSE_UP, reset);
  46.  
  47. function forward(event:MouseEvent) {
  48.     ns.seek(ns.time+10);
  49. };
  50.  
  51. function rewind(event:MouseEvent) {
  52.     ns.seek(ns.time-10);
  53. };
  54.  
  55. function reset(event:MouseEvent) {
  56.     ns.seek(0);
  57.     ns.resume();
  58. };

Link: Beispiel anschauen
Link: Darron Schall (Beitrag vom 28.12.06)
Link: Date-Klasse (ActionScript 3 Reference)