ダブルクリックとトリプルクリックで違う動作をさせたい場合は、連続クリックを検出したあと少し待ってから判断しないといけません。
でないと、トリプルクリックを 「ダブルクリック+クリック」か、または「ダブルクリック2回」と解釈してしまいます。
#define MAXCLICK 16
dim ctime,MAXCLICK
*@
stick keyin
if(keyin&256):gosub *ON_CLICKED
gosub *AFTER_CLICK
await 1
goto *@b
*ON_CLICKED
ci = ci+1 : if(ci>=MAXCLICK):ci=0
ctime(ci) = gettime(4)*3600000+gettime(5)*60000+gettime(6)*1000+gettime(7)
lastclick = ctime(ci)
clicked=0
repeat MAXCLICK-1:c = MAXCLICK-cnt-1
cp = ci-c + (ci<c)*MAXCLICK
c++
if(ctime(ci)-ctime(cp) < 200*c){
clicked=c
break
}
loop
return
*AFTER_CLICK
now = gettime(4)*3600000+gettime(5)*60000+gettime(6)*1000+gettime(7)
if(now-lastclick>400){
lastclick = 0x7fffffff
if(clicked>0){
dim ctime,MAXCLICK
goto *ON_X_CLICKED
}
}
return
*ON_X_CLICKED
mes ""+clicked+"回クリック."
return
これは極端ですが。