Flash ActionScript ダブルクリックその1
Flashではマウスクリックをイベントとしてキャッチことができます。
ただし、ダブルクリックを受け取るというイベントが用意されていません(ActionScript3.0では新たに加わるようです)。
つい先日アップしたFlash素材image10ではダブルクリックと普通のクリックで動作を変えています。
その仕組みについてお話いたします。
まず、ダブルクリックのイベントキャッチを実現する際、最初に思いつくのは、以下のようなアルゴリズムです。
1.クリック時に現在時間を取得する
2.クリック時、取得済みの時間と現在時間との差異によって条件分岐する
たとえば、差異が100ms未満ならダブルクリック、100ms以上なら普通のクリックと判断する。
スクリプトは以下のようになります。
//スクリプトここから(ダブルクリック検知)
var duration:Number=100;//ダブルクリック時間定数msec
var countN:Number=0;//時間取得
clickA.onPress=clickSD;//clickAはクリックを検出したいインスタンス名
//クリック検知用の関数。
function clickSD():Void{
if(getTimer()-countN<duration){
//ダブルクリック処理
}
else{
//一回だけのクリック処理
}
countN=getTimer();
}
//スクリプトここまで(ダブルクリック検知)
これで確かにダブルクリックを検知できますが、一つ欠点がございます。
それは「ダブルクリックの処理をする前に必ず普通のクリックの処理を行ってしまう」というものです。
ということで、その欠点を解消するスクリプトを考えました。配布した素材には解消後のスクリプトを使用しています。
そのスクリプトについてはまた近日中に掲載します。
質問がありましたら質問掲示板にどうぞ。素材のスクリプトについての質問も技術的な指摘もお待ちしています。