/* * Firefox DL Counter * A simple flash displayer * by NiKo - www.prendreuncafe.com * */ class FFCounter { private var mc:MovieClip; private var tf:TextField; private var feedURL:String; private var resync_time_ms:Number; private var refresh_time_ms:Number; private var timer_sync:Number; private var timer_refresh:Number; private var prevcount:Number; private var lastsync_starttime:Number; public var count:Number; public function FFCounter(parent:MovieClip, feedURL:String, resync_time_ms:Number, refresh_time_ms:Number) { this.mc = typeof(parent) == "movieclip" ? parent : _root; this.mc.createTextField("__counter_tf__", parent.getNextHighestDepth(), 0, 0, 160, 25); this.tf = mc.__counter_tf__; this.tf.html = true; this.tf.background = true; this.tf.backgroundColor = 0x000033; display('loading...'); this.feedURL = feedURL; this.resync_time_ms = resync_time_ms > 5000 ? resync_time_ms : 5000; this.refresh_time_ms = refresh_time_ms > 200 ? refresh_time_ms : 200; this.count = 0; this.prevcount = 0; init(); } private function init():Void { // Synchro des données depuis Mozilla resyncData(feedURL, this); this.timer_sync = setInterval(this.resyncData, this.resync_time_ms, this.feedURL, this); // Rafraîchissement de l'affichage this.timer_refresh = setInterval(this.refresh, this.refresh_time_ms, this); } private function resyncData(url:String, target:FFCounter):Void { var xmlDO = new XML(); xmlDO.ignoreWhite = true; xmlDO.onLoad = function(ok) { if (ok == true) { var nodes = this.firstChild.firstChild.childNodes; for (var i=0; i 0) { out = (count - prevcount) / resync_time_ms; } return out; } private function refresh(target:FFCounter):Void { if (target.count > 0) { var temp_count = Math.floor(target.getDLRate() * (getTimer() - target.lastsync_starttime)); target.display(String(target.count + temp_count)); } } private function display(text:String):Void { tf.htmlText = '

' + text + '

'; } public function destroy():Void { clearInterval(this.timer_sync); clearInterval(this.timer_refresh); } }