Skip to content

Instantly share code, notes, and snippets.

@wwwins
Created December 16, 2011 02:30
Show Gist options
  • Save wwwins/1484153 to your computer and use it in GitHub Desktop.
Save wwwins/1484153 to your computer and use it in GitHub Desktop.
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLLoaderDataFormat;
import flash.net.URLRequest;
import flash.utils.getTimer;
/**
* ...
* @author jacky
*/
public class Main extends Sprite
{
public var counter:MovieClip;
private var loader:URLLoader;
private var eventDate:Date;
private var eventMillisecs:Number;
private var serverTime:Number;
private var msecs:Number;
private var secs:Number;
private var mins:Number;
private var hours:Number;
private var days:Number;
private var str_msecs:String;
private var str_secs:String;
private var str_mins:String;
private var str_hours:String;
private var str_days:String;
private var arrTxt:Array;
private var _active:Boolean = false;
public function Main():void
{
if (stage)
init();
else
addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
/*
* 顯示日期格示
* arrTxt = ["MovieClip name"...]
* 000.00.00.00
* arrTxt = ["days_0", "days_1", "days_2", "hours_0", "hours_1", "mins_0", "mins_1", "secs_0", "secs_1"];
* 000.00.00.00.000
* arrTxt = ["days_0", "days_1", "days_2", "hours_0", "hours_1", "mins_0", "mins_1", "secs_0", "secs_1", "msecs_0", "msecs_1", "msecs_2"];
*/
arrTxt = ["days_0", "days_1", "days_2", "hours_0", "hours_1", "mins_0", "mins_1", "secs_0", "secs_1", "msecs_0", "msecs_1", "msecs_2"];
setEventDate();
getServerTime();
}
/*
* 設定日期
* Date( year, month-1, date [, hour [, minute [, second [, millisecond]]]])
* ie: 2011 11 15 15:40
*/
private function setEventDate():void
{
eventDate = new Date(2011, 11, 17, 10, 00);
eventMillisecs = eventDate.getTime();
}
/*
* 取得 server 時間
* <?php
* echo "time=" . time();
* ?>
*/
private function getServerTime():void
{
loader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.VARIABLES;
loader.addEventListener(Event.COMPLETE, loadComplete);
var request:URLRequest = new URLRequest();
request.url = "http://wwwins.phpfogapp.com/gettime.php";
loader.load(request);
}
private function loadComplete(e:Event):void
{
// php time() returns seconds and not milliseconds
serverTime = Number(e.target.data.time) * 1000 - getTimer();
if (!_active) {
_active = true;
addEventListener(Event.ENTER_FRAME, countDown);
}
}
private function countDown(e:Event):void
{
// 用 getTimer 計算時間
var currentMillisecs:Number = serverTime + getTimer();
msecs = eventMillisecs - currentMillisecs;
if (msecs <= 0) {
trace("END");
return;
}
secs = Math.floor(msecs / 1000); // 1000 milliseconds make a second
mins = Math.floor(secs / 60); // 60 seconds make a minute
hours = Math.floor(mins / 60); // 60 minutes make a hour
days = Math.floor(hours / 24); // 24 hours make a second
str_msecs = String(msecs % 1000);
str_secs = String(secs % 60);
str_mins = String(mins % 60);
str_hours = String(hours % 24);
str_days = String(days);
while (str_msecs.length < 3) str_msecs = "0" + str_msecs;
if (str_secs.length < 2) str_secs = "0" + str_secs;
if (str_mins.length < 2) str_mins = "0" + str_mins;
if (str_hours.length < 2) str_hours = "0" + str_hours;
while (str_days.length < 3) str_days = "0" + str_days;
//trace(str_days, str_hours, str_mins, str_secs)
updateCounter();
}
private function updateCounter():void
{
var i:int = 0;
var mc:MovieClip;
var mcn:String;
var c:String;
var n:String;
var len:int = arrTxt.length;
for (i = 0; i < len; i++) {
n = arrTxt[i];
mc = counter[n];
mcn = n.split('_')[0];
c = n.split('_')[1];
var frame:uint = 1 + uint(this["str_" + mcn].charAt(c));
if (mc.currentFrame != frame) mc.gotoAndStop(frame);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment