目次 - API(機能別) - イベント処理 - SDL_MouseWheelEvent

SDL_MouseWheelEvent

マウスホイールイベントの構造体

フィールド

Uint32typeSDL_MOUSEWHEEL
Uint32timestampイベントのタイムスタンプ
Uint32windowIDフォーカスのあるウィンドウ (可能なら)
Uint32whichマウスインスタンスID, またはSDL_TOUCH_MOUSEID (詳細を参照すること)
Sint32x水平方向のスクロール量. 正が右で, 負が左
Sint32y垂直方向のスクロール量. 正が奥で, 負が手前
Uint32directionSDL_MOUSEWHEEL_NORMALまたはSDL_MOUSEWHEEL_FLIPPED (SDL 2.0.4以降)

サンプルコード

SDL_Event event;
while( SDL_PollEvent( &event ) )
{
    if(event.type == SDL_MOUSEWHEEL)
    {
        if(event.wheel.y > 0) // 上へスクロール
        {
             // 引き上げる動作のコードをここに書く!
        }
        else if(event.wheel.y < 0) // 下へスクロール
        {
             // 押し下げる動作のコードをここに書く!
        }

        if(event.wheel.x > 0) // 右へスクロール
        {
             // ...
        }
        else if(event.wheel.x < 0) // 左へスクロール
        {
             // ...
        }
    }
    else if(event.type == SDL_SDL_MOUSEBUTTONDOWN)
    {
        // ... マウスクリックを処理する
    }

    // ... その他のイベントを処理する ...
}

詳細

SDL_MouseWheelEventSDL_Eventのメンバで, SDL_MOUSEWHEELが報告されたときに使われる. eventのwheelフィールドからアクセスできる.

SDL_MOUSEWHEELはユーザがマウスホイールを動かすと発生する.

左側に動かすとxが負の値になり, 右側に動かすとxが正の値になる. 下側(戻る方向)に動かすとyが負の値になり, 上側(進む方向)に動かすとyが正の値になる.

whichは, 本物のマウスではなくタッチ入力デバイスのときSDL_TOUCH_MOUSEIDとなる. アプリケーションが既にSDL_TouchFingerEventを扱っているならば, このイベントは無視したほうがよい.

SDLはマウスホイールのスクロールの方向を全ての環境で正しく扱えるわけではない(SDL_MOUSEWHEEL_NORMAL). directionがSDL_MOUSEWHEEL_FLIPPEDのとき, xとyの値がそれぞれ逆になる. -1を掛けると元に戻る.

関連項目(列挙体)

SDL_EventType

関連項目(構造体)

SDL_Event
SDL_MouseButtonEvent
SDL_MouseMotionEvent

SDL Wikiへのリンク

SDL_MouseWheelEvent - SDL Wiki