Home > ActionScript3.0 | Works > TeraFireClock

TeraFireClock


東京てら子5 Flashで時計大会用に作った時計は、これで最後。

TeraFireライブラリとTeraClockライブラリを組み合わせて使ってみました。

JavaScriptを有効にしてご覧ください。(要FlashPlayer9以上)

ソースはこんな感じ

package {
	import flash.display.StageScaleMode;
	import flash.display.Sprite;
	import flash.events.*;
	import com.trick7.utils.TeraClock;
	import com.trick7.effects.TeraFire;
	
	public class TeraFireClock extends Sprite{
		
		public var clock:TeraClock;
		private var fire:TeraFire;
		private var fire1:TeraFire;
		private var fire2:TeraFire;
		private var fire3:TeraFire;
		
		private var radius:Number = 140;
		private var minradius:Number = 115;
		private var p:Number = Math.PI/180;
		
		//コンストラクタ
		public function TeraFireClock() {

			stage.scaleMode = StageScaleMode.NO_SCALE;
			
			//文字版を表す火(12個)
			for(var i:uint = 1; i<13;i++){
				fire = new TeraFire();
				fire.x = radius * Math.cos(i * 30 * p) + stage.stageWidth/2;
				fire.y = radius * Math.sin(i * 30 * p)+ stage.stageHeight /2;
				addChild(fire);
				//文字盤なので、アルファを下げておく
				fire.alpha = 0.25;
			}
			
			fire1 = new TeraFire();
			addChild(fire1);
			
			fire2 = new TeraFire();
			addChild(fire2);
			
			fire3 = new TeraFire(0,0,30,60);
			addChild(fire3);
			
			clock = new TeraClock();
			clock.addEventListener(TeraClock.SECONDS_CHANGED, secondsListener);
		}
		
		//秒が更新される度の処理
		function secondsListener(e:Event):void {
			if(clock.hours > 12) {
				var a:Number = clock.hours - 12;
			} else if(clock.hours == 12){
				a = 0;
			}else if(1<=clock.hours<=11){
				a = clock.hours;
			}

			fire1.x = radius * Math.cos((a - 3) * 30 * p) + stage.stageWidth / 2;
			fire1.y = radius * Math.sin((a - 3) * 30 * p) + stage.stageHeight / 2;
			
			var b:Number = Number(clock.minutes);
			
			fire2.x = radius * Math.cos((b - 15) * 6 * p) + stage.stageWidth / 2;
			fire2.y = radius * Math.sin((b - 15) * 6 * p) + stage.stageHeight / 2;
			
			var c:Number = Number(clock.seconds);
			
			fire3.x = minradius * Math.cos((c - 15) * 6 * p) + stage.stageWidth / 2;
			fire3.y = minradius * Math.sin((c - 15) * 6 * p) + stage.stageHeight / 2;
		}
	}
}

発表の時は、前もって時刻の数字を配列に格納して…なんていう力業を使っていたんですが…

あれこれやっているうちに、もっと簡単に書けたので、そちらのコードをアップしておきます。

Comments:0

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://flabaka.com/blog/wp-trackback.php?p=271
Listed below are links to weblogs that reference
TeraFireClock from flabaka

Home > ActionScript3.0 | Works > TeraFireClock

Search
Feeds
Meta

flashDevelopスポンサー

Return to page top