Flash ActionScript ダブルクリックその2
2月5日のblogにて、ActionScript2.0でのダブルクリックについて書きました(3.0よりダブルクリックをイベントとして受け取れるようです)。
その際に書いたものは、ダブルクリックを検知する前に必ず、普通のクリックも検知してしまうというものでした。
今回紹介するのは、普通のクリックとダブルクリックを分けて検知するスクリプトの紹介です。
ある一定時間以内に二度クリックされた場合はダブルクリック、一度だった場合は普通のクリックと判断します。
クリック検出関数内にて、setInterval関数を使用し、ある一定時間後に別の関数を呼び出す定義をします。この際、クリック回数を1としておきます。
一定時間内に再度クリックがあった場合には、クリック回数を増やします。
setInterval関数にて呼び出しを定義された関数内で、クリック回数を元に処理を分岐します。
以下、そのスクリプトです。
//スクリプトここから(ダブルクリック検知2)
var duration:Number=100;//ダブルクリック時間定数msec
var clickN:Number=0;//クリック回数
clickA.onPress=clickSD;//clickAはクリックを検出したいインスタンス名
var intervalId:Number;
function clickSD2():Void{
if(clickN==1){
//一回だけのクリック処理
}
else if(clickN>1){
//ダブルクリック処理
}
clearInterval(intervalId);//間隔をクリアする
clickN=0;//クリック回数を0に戻す
}
function clickSD():Void{
//durationにて設定した時間後にclickSD2関数呼び出し
if(clickN==0)intervalId = setInterval(_root, "clickSD2", duration);
//クリック回数を増やす
clickN+=1;
}
//スクリプトここまで(ダブルクリック検知2)
もしももっと簡易なスクリプトがございましたら、ぜひ教えていただきたいです。
質問がありましたら質問掲示板にどうぞ。素材のスクリプトについての質問も技術的な指摘もお待ちしています。