//////////////////////////////////////////////////////////////////////////////// // // 指定MCにダブルクリック通知機能を実装するクラス // //////////////////////////////////////////////////////////////////////////////// //****************************************************************************// // // クラス宣言 // //****************************************************************************// class DoubleClick{ //////////////////////////////////////////////////////////////////////////// // // 変数・定数定義 // //////////////////////////////////////////////////////////////////////////// //************************************************************************// // // 通知用メソッド // //************************************************************************// public var one :Function; //シングルクリック時に実行される処理 public var double:Function; //ダブルクリック成功時に実行される処理 //************************************************************************// // // 処理関連 // //************************************************************************// private var targetMC:MovieClip; private var empMC :MovieClip; private var INTERVAL:Number = 500;//ダブルクリック間隔( ミリ秒 ) //////////////////////////////////////////////////////////////////////////// // // public // //////////////////////////////////////////////////////////////////////////// //************************************************************************// // // コンストラクタ // //************************************************************************// public function DoubleClick( targetMC:MovieClip ){ //フィールド設定 this.targetMC = targetMC; //クリックされた場合の処理定義 this.targetMC[ "scope" ] = this; this.targetMC.onPress = this.click; } //************************************************************************// // // 対象MCがクリックされた場合の処理定義 // //************************************************************************// private function click():Void{ //パス設定 this = this[ "scope" ]; var scope:DoubleClick = this; //シングルクリックされたことを通知 this.one( { mc:this.targetMC } ); //ダブルクリック時の処理定義 this.targetMC.onPress = function(){ scope.end(); scope.double( { mc:scope.targetMC } ); //ダブルクリック成功を通知 }; //空MC作成 this.empMC = this.targetMC.createEmptyMovieClip( "empMC", this.targetMC.getNextHighestDepth() ); //タイマー開始 var firstTime:Number = getTimer(); this.empMC.onEnterFrame = function(){ //指定時刻を経過した場合 : 破棄処理 if( getTimer() - firstTime >= scope.INTERVAL ){ scope.end(); } }; } //************************************************************************// // // 破棄処理 // //************************************************************************// private function end():Void{ //targetMCクリック時の処理 書き換え this.targetMC.onPress = this.click; //ループ処理終了 delete this.empMC.onEnterFrame; this.empMC.removeMovieClip(); } }