タッチイベントの処理

タッチイベントが発生すると、_Canvas/_Canvas3D クラスを継承したクラスの _processEvent:: メソッドが呼び出されます。このメソッドの中で、イベントのタイプとパラメータを識別してください。_processEvent:: メソッドの記述例は次のようになります。

- (void)_processEvent:(int)type :(int)param
{
    switch( type )
    {
    case TOUCH_DOWN_EVENT:
        // タッチされた
        break;
    case TOUCH_MOVE_EVENT:
        // ムーブした
        break;
    case TOUCH_UP_EVENT:
        // タッチが離された
        break;
    }
}

イベントのタイプは、TOUCH_DOWN_EVENTTOUCH_MOVE_EVENTTOUCH_UP_EVENT の3種類で、パラメータは、タッチIDです。

タッチイベントXY値は、_Canvas/_Canvas3D クラスの getTouchX:getTouchY: メソッドで取得できます。

レイアウトタッチイベントの処理

setLayout: メソッドでレイアウトを適用している場合、レイアウトタッチイベントが発生するようになり、_Canvas/_Canvas3D クラスを継承したクラスの _processEvent:: メソッドが呼び出されます。_processEvent:: メソッドの記述例は次のようになります。

- (void)_processEvent:(int)type :(int)param
{
    switch( type )
    {
    case LAYOUT_DOWN_EVENT:
        // レイアウトがタッチされた
        break;
    case LAYOUT_UP_EVENT:
        // レイアウトのタッチが離された
        break;
    }
}

イベントのタイプは、LAYOUT_DOWN_EVENTLAYOUT_UP_EVENT の2種類で、パラメータは、レイアウトIDです。

タッチされているレイアウトの判別

イベント検知以外に、タッチされているレイアウトを判別する方法があります。_Canvas/_Canvas3D クラスの getLayoutState メソッドを使用する方法です。使用例を示します。

int layout = [self getLayoutState];

if( (layout & (1 << 2)) != 0 )
{
    // レイアウトIDが 2 のレイアウトが押されている
}