Scroll Clock on Flash

by undo
♥21 | Line 129 | Modified 2009-11-19 21:40:24 | MIT License
play

ActionScript3 source code

/**
 * Copyright undo ( http://wonderfl.net/user/undo )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/m9fb
 */

<?xml version = "1.0" encoding = "utf-8"?>
<mx:Application xmlns:mx = "http://www.adobe.com/2006/mxml" layout = "absolute" applicationComplete = "init();">

	<mx:Script>
		<![CDATA[
		
		/*
		* これパクった
		* Scroll Clock
		* http://toki-woki.net/p/scroll-clock/
		*
		* 小さいウィンドウだとつまんないので
		* 右下のボタンでフルスクリーンにしてね。
		*/
		
		
		

import flash.events.Event;

import mx.containers.Canvas;

import caurina.transitions.Tweener;

private var decWidth:Number;
private var decHeight:Number;
private var interval:Number = 25;//時分秒の隙間
private var barWidth:Number = 20;//バーの太さ大体

private var LED:Array = [
						[1,1,1,1,1,1,0],
						[1,1,0,0,0,0,0],
						[1,0,1,1,0,1,1],
						[1,1,1,0,0,1,1],
						[1,1,0,0,1,0,1],
						[0,1,1,0,1,1,1],
						[0,1,1,1,1,1,1],
						[1,1,0,0,1,1,0],
						[1,1,1,1,1,1,1],
						[1,1,1,0,1,1,1]
						];
private var canvasArray:Array = new Array();

private var now:int = 0;

private function init():void
{
	this.decWidth = (this.width - interval * 8) / 6;
	this.decHeight = this.decWidth * 0.8;

	//デジタル表示するスクロールバーをそれぞれaddChild
	setCanvas(h1);
	setCanvas(h2);
	setCanvas(m1);
	setCanvas(m2);
	setCanvas(s1);
	setCanvas(s2);
	
	//座標
	h2.x = this.decWidth+this.interval;
	m1.x = this.decWidth*2 + this.interval*3;
	m2.x = this.decWidth*3 + this.interval*4;
	s1.x = this.decWidth*4 + this.interval*6;
	s2.x = this.decWidth*5 + this.interval*7;
	
	this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}

private function onEnterFrame(evt:Event):void
{
	var date:Date = new Date();
	if(date.getSeconds() != this.now)
	{
		this.now = date.getSeconds();
		changeTime(date);
	}
	else
	{
		//何もしない
	}
}

private function changeTime(date:Date):void
{
	//秒数が進んだら、時刻表時をトゥイーン
	
	//表示する時刻を1字ずつの配列に
	var h:int = date.getHours();
	var m:int = date.getMinutes();
	var s:int = date.getSeconds();
	
	var newTime:Array = [Math.floor(h/10), h%10, Math.floor(m/10), m%10, Math.floor(s/10), s%10];
	
	//各数字をトゥイーン i:数字の桁
	for(var i:int = 0; i < 6; i++)
	{
		Tweener.addTween(this.canvasArray[i][0], {width:this.LED[newTime[i]][6] * this.decWidth*2, height:this.LED[newTime[i]][0] * this.decHeight*2, time:0.8, transition:"easeInOutCubic"});
		Tweener.addTween(this.canvasArray[i][1], {width:this.LED[newTime[i]][2] * this.decWidth*2, height:this.LED[newTime[i]][1] * this.decHeight*2, time:0.8, transition:"easeInOutCubic"});
		Tweener.addTween(this.canvasArray[i][2], {height:this.LED[newTime[i]][3] * this.decHeight*2, time:0.8, transition:"easeInOutCubic"});
		Tweener.addTween(this.canvasArray[i][3], {height:this.LED[newTime[i]][4] * this.decHeight*2, time:0.8, transition:"easeInOutCubic"});
		Tweener.addTween(this.canvasArray[i][4], {width:this.LED[newTime[i]][5] * this.decWidth*2, time:0.8, transition:"easeInOutCubic"});
	}
}

private function setCanvas(trg:Canvas):void
{
	//デジタル表示のスクロールバーを表示するためのCanvasを生成。
	
	//頭
	var h5:Canvas = new Canvas();
	h5.width = this.decWidth;
	h5.height = this.barWidth;
	var h5child:Canvas = new Canvas();
	h5child.width = this.decWidth*2;
	h5child.height = 1;
	h5.addChild(h5child);
	h5.x = this.barWidth;
	
	//右上と真ん中
	var h06:Canvas = new Canvas();
	h06.width = this.decWidth;
	h06.height = this.decHeight;
	var h06child:Canvas = new Canvas();
	h06child.width = this.decWidth*2;
	h06child.height = this.decHeight*2;
	h06.addChild(h06child);
	h06.x = this.barWidth;
	h06.y = this.barWidth;
	
	//右下と下
	var h12:Canvas = new Canvas();
	h12.width = this.decWidth;
	h12.height = this.decHeight;
	var h12child:Canvas = new Canvas();
	h12child.width = this.decWidth*2;
	h12child.height = this.decHeight*2;
	h12.addChild(h12child);
	h12.x = this.barWidth;
	h12.y = this.barWidth + this.decHeight;
	
	//左下
	var h3:Canvas = new Canvas();
	h3.width = this.barWidth;
	h3.height = this.decHeight;
	var h3child:Canvas = new Canvas();
	h3child.width = 1;
	h3child.height = this.decHeight*2;
	h3.addChild(h3child);
	h3.y = this.barWidth+this.decHeight;

	//左上
	var h4:Canvas = new Canvas();
	h4.width = this.barWidth;
	h4.height = this.decHeight;
	var h4child:Canvas = new Canvas();
	h4child.width = 1;
	h4child.height = this.decHeight*2;
	h4.addChild(h4child);
	h4.y = this.barWidth;
	
	//以上。
	//addChild
	trg.addChild(h5);
	trg.addChild(h06);
	trg.addChild(h12);
	trg.addChild(h3);
	trg.addChild(h4);
	
	//配列保持
	var arry:Array = [h06child, h12child, h3child, h4child, h5child];
	this.canvasArray.push(arry);
}		]]>
	</mx:Script>

	<mx:Canvas id = "h1" />
	<mx:Canvas id = "h2" />

	<mx:Canvas id = "m1" />
	<mx:Canvas id = "m2" />

	<mx:Canvas id = "s1" />
	<mx:Canvas id = "s2" />

</mx:Application>