Webデザインの勉強と製作 | あかとんぼ

フェリカテクニカルアカデミーの学習をベースに、Webについての勉強と製作の過程をまとめています。

[Flash]⑩ダブルクリック判定

  • ダブルクリックでアニメの判定
  • 解説
    • getTImer関数

ダブルクリックでアニメの判定

  • ダブルクリックすると「フォルダが開く」「書類が飛び出す」アニメを実行
  • 開いている時ダブルクリックすると「フォルダが閉じる」アニメを実行

f:id:akatonbo_web:20150530055909p:plain

流れ
  1. 「書類が飛び出す」シンボル(document)を作成
  2. 「フォルダが開閉する」シンボル(folder)を作成
  3. それぞれにアニメ開始位置のラベルを設定
  4. シーンに1,2を配置
  5. シーンにスクリプトを記述:
var folder: MovieClip;
var document: MovieClip;
/* ダブルクリックの間隔定数 */
var CLICK_INTERVAL: Number = 300;
/* フォルダー開閉判定  */
var forderOpened:Boolean = false;
/* 直前にマウスが押された時間を記録 */
var prevTime:Number = -CLICK_INTERVAL;

/* フォルダ上でreleaseしたとき */
folder.onRelease = checkDoubleClick;

/* ダブルクリックの判定関数 */
function checkDoubleClick():Void
{
     /*指定間隔以内ならdoubleClick判定*/
     if( getTimer() - prevTime < CLICK_INTERVAL )
     {
          doubleClickFolder();
          prevTime = 0;
     }
     else
     {
          prevTime = getTimer();    
     }
}

function doubleClickFolder():Void
{
     /* フォルダが開いているならclose */
     if( folderOpened )
     {
          folder.gotoAndStop("close");
          document.gotoAndStop( 1 );
     }
     else
     {
          folder.gotoAndStop("open");
          document.play();
     }
     /* フォルダー開閉判定のトグル */
     folderOpened = !folderOpened;
}
解説
  • 1回めのクリック時刻を「prevTime」に格納
  • 2回目のクリック時刻を「getTimer()」で知る
  • 「getTimer() - prevTime」→「経過時間 - 前のクリック時刻」で間隔を測定
getTImer関数
  • swfファイルの再生が始まってから経過した時間をミリ秒で取得
  • グローバル関数、どのクラスにも属さない