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を返します。