KLTouchについて

KLib

KLibについては、まずこちらの記事を参照ください。



割り込みイベントではないタッチ判定

iOSプログラミングの際、タッチはイベントで発生するので

イベントを受け取って都度判定をするなんて事がありますが、

KLibでは、メインループで各フレームごとにタッチイベントがあったかで判別をします。

具体例

例えば、ある範囲がタッチされたかをチェックしたい場合、

if( KLTouch_IsStart( x, y, width, height ) ){
    // 範囲内をタッチした
}

とする事でx,yから幅width、高さheightの範囲内でタッチがあれば

真判定となります。

同様に

if( KLTouch_IsMove( x, y, width, height ) ){
    // 範囲内を移動した指がある
}

if( KLTouch_IsEnd( x, y, width, height ) ){
    // 範囲内に離した指がある
}

でスワイプや離した判定をする事が可能です。

KLTouch_Is○○は範囲内に該当した指があればその指IDを返しています。

該当しなければ0を返すのでif文で判定できます。

指情報の詳細を得る

ある指のタッチが始まった座標や移動方向を知りたい場合、

u32 fingerid = KLTouch_IsStart(x,y,width,height);

のようにしてまず指IDを保持します。

次に、そのIDを使用してKLFingerオブジェクトを取得します。

if( fingerid){
    KLFinger* pFinger = KLTouch_GetFinger(fingerid);
    KLLog("Touch startx:%d, Y:%d\n", pFinger->startx, pFinger->starty );
}

指情報オブジェクトから、

  • タッチ開始点(startx,starty)
  • 移動中の座標(movex.movey)
  • 離した際の座標(endx,endy)
  • 移動した方向と距離(power.dir, power.dist)

などが取得できます。

条件に当てはまる指IDをすべて取得

KLTouch_IsStartなどは、条件にひとつでも当てはまる指があれば

はじめに当てはまる指IDを返します。

しかし、条件に当てはまるすべての指IDが欲しい場合もあります。

そんな時には、

u32* pFingerList = KLTouch_IsStartAll(x,y,width,height);

のようにAllを末尾に加えた関数をコールしてください。

当てはまる指ID配列のポインタを返します。

当てはまるものがある場合、終端は0になっています。[1234,5678,9101,0]など

当てはまるものがなければNULLを返します。