flash on 2011-6-3
import flash.filters.ColorMatrixFilter;
import flash.geom.Point;
/**
* Copyright yasyasyas ( http://wonderfl.net/user/yasyasyas )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/zgF2
*/
package {
import flash.display.*;
import flash.events.Event;
//import flash.filters.ColorMatrixFilter;
//import flash.geom.Point;
import flash.text.*;
public class Main3 extends Sprite {
private var sp1:Sprite;
private var sp2:Sprite;
private var sp3:Sprite;
private var cx:Number = 200; //時計の中心点のx座標
private var cy:Number = 200; //時計の中心点のy座標
private var numList:Array = ["I", "II","III", "IV", "V", "VI", "VII", "VIII", "IX", "X", "XI", "XII"];
public function Main3() {
//trace("hoge");
for (var i:int = 0; i < numList.length; i++) {
var nanji:TextField = new TextField();
var tFormat:TextFormat = nanji.getTextFormat();
tFormat.size = 25;
//tFormat.bold = true;
nanji.defaultTextFormat = tFormat;
nanji.autoSize = "left";
nanji.text = numList[i];
var sp:Sprite = new Sprite();
sp.graphics.drawRect(0, 0, nanji.width, 130); //枠線なし&文字盤の文字幅&分針と同じくらいの長さの四角形を作り・・・
sp.addChild(nanji); //その先に文字盤の文字を載せるイメージ。この繰り返し文で、文字ごとのspを30度ずつ回転させて文字盤を作っていく。
//addChild(sp);
/*
以下は、テキストをそのまま回転させると消えてしまうのを防ぐ処理。
要は、上記のspをビットマップ化して、それをさらに別のSpriteオブジェクトの子にし、
そのSpriteオブジェクトを回転させる。以下のサイトを参考にさせていただきました。
http://www.ncreate.net/flash/post201/
*/
var bmd:BitmapData = new BitmapData(sp.width, sp.height, true, 0x00);
bmd.draw(sp);
var bm:Bitmap = new Bitmap(bmd, "auto", true);
//bmをSpriteオブジェクトの子に入れる前に、あとできれいに回転するようにbmの位置をずらしておく。
bm.x = -bm.width / 2;
bm.y = -bm.height;
var rotationBase:Sprite = new Sprite();
rotationBase.addChild(bm);
addChild(rotationBase);
//回転の基準点を時計の中心に持っていく。
rotationBase.x = cx;
rotationBase.y = cy;
//
rotationBase.rotation = 30 + 30 * i; // 30度傾けたところから"I"が始まり、以降30度ずつズラしていく。
}
var tf:TextField = new TextField();
tf.text = "SOIKO";
tf.autoSize = "center";
tf.x = 200 - tf.width * 0.5;
//tf.border = true;
tf.y = 220;
addChild(tf);
//秒針
sp1 = new Sprite();
sp1.graphics.beginFill(0xff0000);
//sp1.graphics.drawCircle(50, 0, 20);
sp1.graphics.drawRect(-30, -1, 130, 2);
sp1.graphics.endFill();
sp1.x = 200;
sp1.y = 200;
//addChild(sp1);
//分針
sp2 = new Sprite();
sp2.graphics.beginFill(0x00FF00);
//sp2.graphics.drawCircle(50, 0, 20);
sp2.graphics.drawRect(0, -5, 100, 10);
sp2.graphics.endFill();
sp2.x = 200;
sp2.y = 200;
//addChild(sp2);
//時針
sp3 = new Sprite();
sp3.graphics.beginFill(0x0000FF);
//sp3.graphics.drawCircle(50, 0, 20);
sp3.graphics.drawRect(0, -8, 80, 16);
sp3.graphics.endFill();
sp3.x = 200;
sp3.y = 200;
addChild(sp3);
addChild(sp2);
addChild(sp1);
//中心点
var cyu:Sprite = new Sprite();
cyu.graphics.beginFill(0x000000);
cyu.graphics.drawCircle(0, 0, 10);
cyu.graphics.endFill();
cyu.x = cx;
cyu.y = cy;
addChild(cyu);
this.addEventListener(Event.ENTER_FRAME, onEnter);
}
private function onEnter(event:Event):void {
//trace("Boo");
var date:Date = new Date();
//trace(date.hours, date.minutes, date.seconds);
sp1.rotation = -90 + date.seconds * 6;
sp2.rotation = -90 + date.minutes * 6;
sp3.rotation = -90 + date.hours * 30 + date.minutes*0.5;
}
}
}