プログラミング工房
TOP
Flex基本
開発環境 JavaScript連携 PHP連携1 PHP連携2(AMFPHP) ウィンドウ ボタンスキン 矩形スキン ローカルファイル(テキスト) F5等の対策 ローカルファイル(イメージ) ダウンロード、アップロード 1枚の画像のカラーを変更 時間のかかる計算処理 外部SWFの読込み
Flexで3D
Flexだけで3D Papervision3Dを使ってみる 3Dオブジェクト カメラ、前後判定の工夫しました 自由な形状を作成
Flexでクラス
Class1(白黒ゲームの盤) Class2(白黒ゲームのプレイヤー) Class3(プレイヤーを外部SWF)
PHP
共通関数1
Flexの作品
お問合せの説明 サンプルのソース表示の説明 分子構造の表示(PDBファイル) マンデルブロ集合の画像作成 swf参加型白黒ゲーム(Reversi) ストップウォッチ WEB素材
AIR
AIRを使ってみる ソースファイルのHTML変換を作る
etc.
マンデルブロ集合のギャラリー ジュリア集合のギャラリー wonderflを使ってみました お問合せ

Flexの作品-ストップウォッチ

■2011.05.04:作成
ストップウォッチのソース

ストップウォッチ

アンドロイド携帯で使えるようなストップウォッチを作ってみた。
これをAIR化すれば使えるかも?
(私の携帯がまだアンドロイド携帯でないので確認は出来ていない。)


プログラムソースのメモ

今回は「*.mxml」を使用しないで「*.as」で作成しました。

今回の目玉は「デジタル数字」の利用です。
「デジタル数字」はクラス「clsLedNum」で表示しています。
  arrPoint1で6点X7形状で数字の形を保持します。
  arrFlgで各数字毎に7形状の表示のON/OFFを持っています。
      (マイナス"-",16進"A"-"F"も表示できます。)
package cls {
    //----------------------------------------------
    //デジタル数字クラス
    // http://programmingatelier.net/
    //----------------------------------------------
    import flash.display.Sprite;
    import flash.events.Event;

    public class clsLedNum extends Sprite {
        //デジタル数字形状(7形状*6点)
        private const arrPoint1:Array = [
            [7,0],[20,0],[23,3],[20,6],[7,6],[4,3],
            [21,7],[21,20],[24,23],[27,20],[27,7],[24,4],
            [21,28],[21,41],[24,44],[27,41],[27,28],[24,25],
            [7,42],[20,42],[23,45],[20,48],[7,48],[4,45],
            [0,28],[0,41],[3,44],[6,41],[6,28],[3,25],
            [0,7],[0,20],[3,23],[6,20],[6,7],[3,4],
            [7,21],[20,21],[23,24],[20,27],[7,27],[4,24]
        ];
        //数字(文字)に対する形状の表示ON(=1)・OFF(=0)
        // 16進対応
        private const arrFlg:Array = [
            {code:"",flg:[0,0,0,0,0,0,0]},
            {code:"-",flg:[0,0,0,0,0,0,1]},
            {code:"0",flg:[1,1,1,1,1,1,0]},
            {code:"1",flg:[0,1,1,0,0,0,0]},
            {code:"2",flg:[1,1,0,1,1,0,1]},
            {code:"3",flg:[1,1,1,1,0,0,1]},
            {code:"4",flg:[0,1,1,0,0,1,1]},
            {code:"5",flg:[1,0,1,1,0,1,1]},
            {code:"6",flg:[1,0,1,1,1,1,1]},
            {code:"7",flg:[1,1,1,0,0,0,0]},
            {code:"8",flg:[1,1,1,1,1,1,1]},
            {code:"9",flg:[1,1,1,1,0,1,1]},
            {code:"A",flg:[1,1,1,0,1,1,1]},
            {code:"B",flg:[0,0,1,1,1,1,1]},
            {code:"C",flg:[1,0,0,1,1,1,0]},
            {code:"D",flg:[0,1,1,1,1,0,1]},
            {code:"E",flg:[1,0,0,1,1,1,1]},
            {code:"F",flg:[1,0,0,0,1,1,1]},
        ];
        private const numD0:Number = 25.0;
        private var numDD:Number;   //数字幅
        private var numAng:Number;  //数字の傾き
        private var strCod:String;  //表示中の数字(文字)
        //デジタル数字
        // sCod:数字(文字)"","-","0"-"9","A"-"F"
        // nX,nY:位置
        // nSiz:数字幅
        // nAng:数字の傾き
        public function clsLedNum(sCod:String , nX:Number, nY:Number, 
                    nSiz:Number = 25.0, nAng:Number = 10 ) {
            strCod = sCod.toUpperCase();
                    :
区切り文字":"も クラス「clsLedKugiri」で「clsLedNum」と同じように持ちます。

経過時間は「getTimer();」関数を利用してミリ秒単位で求めます。
ミリ秒を以下のような関数で表示文字列("00:00:00:00")に変換しています。
この関数は履歴用の関数ですが、「デジタル数字」表示用の変換も同じように行っています。
        //履歴用の時間文字列作成
        // intTime:時間
        // 戻り値:履歴用の時間文字列("00:00:00:00")
        private function fncTextTimeFormat(intTime:int):String {
            var s:String = "";
            s += (int(intTime / (1000 * 60 * 60 * 10)) % 10).toString();
            s += (int(intTime / (1000 * 60 * 60 )) % 10).toString();
            s += ":";
            s += (int(intTime / (1000 * 60 * 10 )) % 10).toString();
            s += (int(intTime / (1000 * 60 )) % 10).toString();
            s += ":";
            s += (int(intTime / (1000 * 10 )) % 10).toString();
            s += (int(intTime / (1000 )) % 10).toString();
            s += ":";
            s += (int(intTime / (100 )) % 10).toString();
            s += (int((intTime+5) / (10 )) % 10).toString();
            return s;
        }

プログラミング工房