[GmtTimer Universal Clock / HandDragCursor] Debut
Mercredi 13 août 2008* Coming city -> Adelaide,Caracas,Chatham Island,Darwin,Kathmandu,Kolkata,Mumbai
* New Delhi, St. John’s, Tehran, Yangon
*/
package fr.manmaru
{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.events.Event;
import flash.filters.DropShadowFilter;
import flash.geom.Rectangle;
import flash.ui.Mouse;
import flash.utils.getTimer;
import flash.utils.Timer;
public class GmtTimer extends MovieClip
{
private var worldCity:Array = new Array(
‘addis ababa’,‘aden’,‘algiers’,‘almaty’,‘amman’,‘amsterdam’,‘anadyr’,‘anchorage’,‘ankara’,
‘antananarivo’,‘asuncion’,‘athens’,‘atlanta’,‘auckland’,
‘baghdad’,‘bangkok’,‘barcelona’,‘beijing’,‘beirut’,‘belgrade’,‘berlin’,‘bogota’,‘boston’,‘brasilia’,
‘brisbane’,‘brussels’,‘bucharest’,‘budapest’,‘buenos aires’,
‘cairo’,‘canberra’,‘cape town’,‘Casablanca’,‘chicago’,‘copenhagen’,
‘denver’,‘detroit’,‘dhaka’,‘dubai’,‘dublin’,
‘edmonton’,
‘frankfurt’,
‘geneva’,‘guatemala’,
‘halifax’,‘hanoi’,‘harare’,‘havana’,‘helsinki’,‘hong kong’,‘honolulu’,‘houston’,
‘indianapolis’,‘islamabad’,‘istanbul’,
‘jakarta’,‘jerusalem’,‘johannesburg’,
‘kamchatka’,‘karachi’,‘khartoum’,‘kingston’,‘kiritimati’,‘kuala lumpur’,‘kuwait city’,‘kyiv’,
‘la paz’,‘lagos’,‘lahore’,‘lima’,‘lisbon’,‘london’,‘los Angeles’,
‘madrid’,‘managua’,‘manila’,‘melbourne’,‘mexico City’,‘miami’,
‘minneapolis’,‘minsk’,‘montevideo’,‘montgomery’,‘montreal’,‘moscow’,
‘nairobi’,‘nassau’,‘new orleans’,‘new york’,
‘oslo’,‘ottawa’,
‘paris’,‘perth’,‘philadelphia’,‘phoenix’,‘prague’,
‘reykjavik’,‘rio de janeiro’,‘riyadh’,‘rome’,
’san francisco’,’san juan’,’san salvador’,’santiago’,’santo domingo’,’sao paulo’,
’seattle’,’seoul’,’shanghai’,’singapore’,’sofia’,’st. paul’,’stockholm’,’suva’,’sydney’,
‘taipei’,‘tallinn’,‘tashkent’,‘tegucigalpa’,‘tokyo’,‘toronto’,
‘vancouver’,‘vienna’,‘vladivostok’,
‘warsaw’,‘washington DC’,‘winnipeg’,
‘zagreb’,‘zurich’
);
private var localTime:Array = new Array(
+3,+3,+1,+6,+3,+2,+13,-8,+3,+3,-4,+3,-4,+12,
+3,+7,+2,+8,+3,+2,+2,-5,-4,-3,+10,+2,+3,+2,-3,
+3,+10,+2,+1,+5,+2,
-6,-4,+6,+4,+1,
+6,
+2,
+2,-6,
-3,+7,+2,-4,+3,+8,-10,-5,
-4,+6,+3,
+7,+3,+2,
+13,+6,+3,-5,+14,+8,+3,+3,
-4,+1,+6,+5,+1,+1,-7,
+2,-6,+8,+10,-5,-4,-5,+3,-3,-5,-4,+4,
+3,-4,-5,-4,
+2,-4,
+2,+8,-4,-7,+2,
0,-3,+3,+2,
-7,-4,-6,-4,-4,-3,-7,+9,+8,+8,+3,-5,+2,+12,+10,
+8,+3,+5,-6,+9,-4,
-7,-2,+11,
+2,-4,-5,
+2,+2
);
private var _clockPanel:MovieClip = new MovieClip();
private const friction:uint = 5;
private var arrayClock:Array = new Array();
private var itemXPos:uint = new uint();
private var itemYPos:uint = new uint();
private var count:uint = new uint();
private var multi:uint = new uint();
private var numberPair:Boolean = new Boolean();
private var timer:Timer;
private var GMTdate:Date;
private var cursor:HandPc;
public function GmtTimer():void
{
_clockPanel.x = 31;
_clockPanel.y = 41;
_clockPanel.addEventListener(MouseEvent.MOUSE_DOWN, clockPanelMouseDownHandler);
addChild(_clockPanel);
cursor = new HandPc();
cursor.gotoAndStop(1);
cursor.filters = [new DropShadowFilter(3,60,0,.5,2,1,1)];
cursor.visible = false;
addChild(cursor);
for (var i:Number = 0; i<2; i++)
{
for (var j:Number = 0; j<Math.floor(worldCity.length/2); j++)
{
arrayClock[count] = [‘_clock’+count];
arrayClock[count] = new Clock();
itemXPos = arrayClock[count].width * j;
itemYPos = arrayClock[count].height * i;
arrayClock[count].x = itemXPos;
arrayClock[count].y = itemYPos;
arrayClock[count].id = count;
arrayClock[count].city_txt.text = worldCity[count];
_clockPanel.addChild(arrayClock[count]);
count++;
}
}
stage.addEventListener(MouseEvent.MOUSE_MOVE, stageMouseMoveHandler);
stage.addEventListener(MouseEvent.MOUSE_DOWN, stageMouseDownHandler);
stage.addEventListener(MouseEvent.MOUSE_UP, stageMouseUpHandler);
stage.addEventListener(Event.MOUSE_LEAVE, stageMouseLeaveHandler);
timer = new Timer(1);
timer.addEventListener(TimerEvent.TIMER, onDelay);
timer.start();
}
private function onDelay(event:TimerEvent)
{
GMTdate = new Date();
for(var i:uint; i<worldCity.length-1; i++)
{
if(localTime[i] > -1)
{
arrayClock[i].h = GMTdate.getUTCHours()+localTime[i];
if(arrayClock[i].h > 24) arrayClock[i].h = arrayClock[i].h -24;
}
else
{
arrayClock[i].h = (GMTdate.getUTCHours() + localTime[i]);
}
arrayClock[i].h = arrayClock[i].h + (arrayClock[i].m/60);
arrayClock[i].m = GMTdate.getUTCMinutes();
arrayClock[i].s = GMTdate.getUTCSeconds();
arrayClock[i].percentHour = arrayClock[i].h * 30
arrayClock[i].percentMinute = arrayClock[i].m * 6;
arrayClock[i].percentSecond = arrayClock[i].s * 6;
arrayClock[i].h_mc.rotation = arrayClock[i].percentHour;
arrayClock[i].m_mc.rotation = arrayClock[i].percentMinute;
arrayClock[i].s_mc.rotation = arrayClock[i].percentSecond;
}
_clockPanel.xVel = Math.abs(_clockPanel.x - _clockPanel.lastX);
_clockPanel.x >= _clockPanel.lastX ? _clockPanel.xDir = ‘plus’ : _clockPanel.xDir = ‘minus’;
_clockPanel.lastX = _clockPanel.x;
if(_clockPanel.dropped == true)
{
if (Math.abs(_clockPanel.x-_clockPanel.xDest)>0.1)
{
_clockPanel.x += (_clockPanel.xDest-_clockPanel.x)/20;
}
else
{
_clockPanel.dropped = false;
}
}
}
protected function clockPanelMouseDownHandler(event:MouseEvent):void
{
stage.addEventListener(MouseEvent.MOUSE_MOVE, startDragClockPanel);
stage.addEventListener(MouseEvent.MOUSE_UP, stopDragClockPanel);
}
protected function startDragClockPanel(event:MouseEvent):void
{
_clockPanel.startDrag(false,new Rectangle(31, 41, -(_clockPanel.width) + 508, 0));
}
protected function stopDragClockPanel(event:MouseEvent):void
{
_clockPanel.stopDrag();
_clockPanel.dropped = true;
_clockPanel.xDir == ‘plus’ ? _clockPanel.xDest = _clockPanel.x+(_clockPanel.xVel*friction) : _clockPanel.xDest = _clockPanel.x-(_clockPanel.xVel*friction);
stage.removeEventListener(MouseEvent.MOUSE_MOVE, startDragClockPanel);
stage.removeEventListener(MouseEvent.MOUSE_UP, stopDragClockPanel);
}
protected function stageMouseMoveHandler(event:MouseEvent):void
{
cursor.x = stage.mouseX;
cursor.y = stage.mouseY;
if(cursor.hitTestObject(_clockPanel))
{
cursor.visible = true;
Mouse.hide();
}
else
{
cursor.visible = false;
Mouse.show();
}
}
protected function stageMouseDownHandler(event:MouseEvent):void{ cursor.gotoAndStop(2); }
protected function stageMouseUpHandler(event:MouseEvent):void{ cursor.gotoAndStop(1); }
protected function stageMouseLeaveHandler(event:Event):void
{
cursor.gotoAndStop(1);
cursor.visible = false;
Mouse.show();
}
}
}

