trick7.com blogさんのエントリ Flashで時計作る時に – 「TeraClock」ライブラリ作りました を拝見。
FLash as3.0で簡単に時計が作れるという記事
おーこれはすごい便利!!と思いこのライブラリを早速使わせてもらいました。
記事通り同フォルダに「src」フォルダを作成TortoiseSVNで「TeraClock.as」をダウンロード。ひとまず記事のサンプル通りに作成
package
{
import flash.display.Sprite;
import com.trick7.utils.TeraClock;
import flash.events.Event;
import flash.text.TextField;
/**
* 2008.09
*/
public class ClockSample1 extends Sprite
{
private var clock:TeraClock = new TeraClock();
private var text:TextField;
private var _messege:String;
public function ClockSample1()
{
clock = new TeraClock();
clock.addEventListener(TeraClock.SECONDS_CHANGED, secondsListener);
//text
text = new TextField;
stage.addChild(text)
text.x = stage.width/2;
text.y = stage.height/2-10;
text.width = 200;
text.height = 20;
text.selectable = false;
text.textColor = 0xffffff;
}
private function secondsListener(event:Event):void {
_messege = String("現在:" +clock.hours + ":" + clock.minutes + ":" + clock.seconds + " です。");
text.text = _messege;
}
}
}
trick7.com blog さんの記事をみてみると
時・分・秒の各値は、(TeraClockインスタンス名).seconds とかで取得できます。秒の値に応じてオブジェクトのサイズ変形とかするときはこっちですね。
一方、デジタル数字で表示させたい時は、たとえば5秒のときは「05」にしたいですよね。そういうときは2桁モードとして、(TeraClockインスタンス名).seconds2ってやると常に2桁になるようにしてあります。
と書いてありました。
ということは「clock.hours」「clock.minutes」「clock.seconds」に「2」をつけるだけで
わざわざ「0」を足す処理をしなくてもOKということですね。
これもうれしいかぎり。
あとは表現。ということで
早速AS2.0で以前に作成したデジタル時計をAS3.0に直してみました
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import com.trick7.utils.TeraClock;
import flash.events.Event;
import flash.text.TextField;
/**
* 2008.09
* @author Molab.
* AS3.0 Clock
*/
public class ClockMain extends MovieClip
{
private var clock:TeraClock = new TeraClock();
private var text:TextField;
private var _messege:String;
private var centerX:Number = stage.stageWidth / 2;
private var centerY:Number = stage.stageHeight / 2;
private var _mc:MovieClip;
public function ClockMain()
{
//MC
var _mc:ClockSample2 = new ClockSample2(mc);
mc.x = centerX+mc.x/2;
mc.y = centerY+mc.y/2;
//Time
clock = new TeraClock();
clock.addEventListener(TeraClock.SECONDS_CHANGED, clockListener);
//TextField
text = new TextField;
stage.addChild(text);
text.x = 10;
text.y = 10;
text.width = 200;
text.height = 20;
text.selectable = false;
text.textColor = 0xffffff;
}
//Clock
private function clockListener(event:Event):void {
_messege = String(clock.hours2 + ":" + clock.minutes2 + ":" + clock.seconds2);
text.text = _messege;
var time:String = String(clock.hours2 + clock.minutes2 + clock.seconds2);
var count:Number;
var i:Number;
for (i = 1; i <= 6; i++) {
count = Number(time.substr(i-1, 1));
if(count==0) mc["time"+i].gotoAndStop(count);
else mc["time" + i].gotoAndStop(count + 1);
}
}
}
}
こんな感じになりました。
このASファイルワールドタイムも取得できるのでかなりステキですね。
AS3.0で初の作成物になりました(´∀`*)
別クラスを作ったんだけどいらなかったかな~
ひとまずサンプルなのでよしとします。今度差し替えます。
なれるとAS3.0のほうがエラーを教えてくれるし文系人間の私でも書き方もスマートかも。。
せっかくだから今度はこの時計をAIRにパッケージしてみようと思う。




0