Ошибка в том, что Вы берете местное время в форматтере, а надо брать универсальное.

Код AS3:
private function formatDate(d:Date):String {
return f(d.getUTCHours()) + ":" + f(d.getUTCMinutes()) + ":" + f(d.getUTCSeconds());
}
Как-то так. У меня с нуля показывает, Ваш последний код показывал с новосибирским оффсетом — с 06:00:00.

Код AS3:
package ru.nsab.player {
import flash.display.MovieClip;
import flash.utils.Timer;
import flash.events.TimerEvent;
public class Clock extends MovieClip {
private var _timer:Timer = new Timer(1000);
private var _start:Date;
private var _datePassed:Date = new Date();
public function Clock() {}
public function start():void {
_start = new Date();
_timer.addEventListener(TimerEvent.TIMER, onTimer);
_timer.start();
updateClock();
}
private function onTimer(event:TimerEvent):void {
updateClock();
}
private function f(n:Number):String {
return n<10 ? "0"+n : n.toString();
}
private function formatDate(d:Date):String {
return f(d.getUTCHours()) + ":" + f(d.getUTCMinutes()) + ":" + f(d.getUTCSeconds());
}
private function updateClock():void {
var dateNow:Date = new Date();
var timePassed:Number = dateNow.getTime() - _start.getTime();
_datePassed.setTime(timePassed);
this["timeRunning"].text = formatDate(_datePassed);
}
}
}
А, ну и запуск:

Код AS3:
var clock:Clock = new Clock();
this.addChild(clock);
clock.x = clock.y = 100;
clock.start();
И да, учтите что в полночь карета превращается в тыкву.
Потому что это не таймер, а часы, на которых установили 00:00:00 и запустили. Показывать они все-равно будут время, а не количество часов, минут и секунд. То есть когда количество часов станет больше 23, поле "часы" начнет показывать с нуля, а не 24..25..26.