//配列類の定義
var city:Array = new Array("Auckland", "Tokyo", "Beijing", "New Delhi", "Moskva", "Paris", "London", "New York", "Los Angeles", "Honolulu");
var difference:Array = new Array("12:00", "9:00", "8:00", "6:30", "3:00", "1:00", "0:00", "-5:00", "-8:00", "-10:00");
var month:Array = new Array("Jan","Feb","Mar","Apl","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
var dy:Array = new Array("Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat");
var cityNum = city.length;
//時計表示列数(いくつ横に並べるか)
var col = 5;
//都市の分だけ時計を整列配置
for (i=0; i<cityNum; i++) {
city_watch = this.attachMovie("watch", "watch"+i, i);
city_watch._x = 5+145*(i%col);
city_watch._y = 20+210*Math.floor(i/col);
city_watch.cityName.text = city[i];
}
//現在のUTC時間を一定間隔で取得して、都市の時間計算・表示関数に渡す
function getUTCTime() {
var utcTime = new Date();
var utc_y = utcTime.getUTCFullYear();
var utc_mo = utcTime.getUTCMonth();
var utc_d = utcTime.getUTCDate();
var utc_dy = utcTime.getUTCDay();
var utc_h = utcTime.getUTCHours();
var utc_m = utcTime.getUTCMinutes();
var utc_s = utcTime.getUTCSeconds();
setTime(utc_y,utc_mo,utc_d,utc_dy,utc_h,utc_m,utc_s);
}
ID = setInterval(getUTCTime, 100);
//各都市の現在時間を計算し、所定の場所に表示・アナログ時計の表示
function setTime(utc_y,utc_mo,utc_d, utc_dy, utc_h, utc_m, utc_s) {
for (i=0; i<cityNum; i++) {
cityDifference = difference[i].split(":");
cityDifference_h = parseInt(cityDifference[0]);
cityDifference_m = parseInt(cityDifference[1]);
dd = utc_d;
dh = utc_h+cityDifference_h;
dm = utc_m+cityDifference_m;
ddyRevision(dh,dm,utc_dy);
var lcTime = new Date();
lcTime.setFullYear(utc_y);
lcTime.setMonth(utc_mo);
lcTime.setDate(dd);
lcTime.setHours(dh);
lcTime.setMinutes(dm);
lcTime.setSeconds(utc_s);
city_mo = lcTime.getMonth();
city_d = lcTime.getDate();
city_h = lcTime.getHours();
city_m = lcTime.getMinutes();
city_s = lcTime.getSeconds();
if (city_m<10) {
city_m = "0"+city_m;
}
if (city_s<10) {
city_s = "0"+city_s;
}
watch_mc = _root["watch"+i];
watch_mc.time.text = month[city_mo]+city_d+" ("+dy[ddy]+") "+city_h+":"+city_m+":"+city_s;
watch_mc.short._rotation = city_h*360/12+city_m*360/12/60;
watch_mc.long._rotation = city_m*360/60+city_s*360/60/60;
}
}
//曜日の補正(循環)
function ddyRevision(dh, dm, utc_dy):Number {
if (dh>=24) {
ddy = utc_dy+1;
if (ddy>6) {
ddy = 0;
}
} else if (dh<0) {
ddy = utc_dy-1;
if (ddy<0) {
ddy = 6;
}
} else {
ddy = utc_dy;
if (ddy>6) {
ddy = 0;
}
}
return ddy;
} |