私のアプリケーションでカスタムイベントを追跡するためにSDL User Eventsを使用したいと思います。私の問題は、SDL_UserEvent構造体が1つのintと2つのvoidポインタしか提供しないことです。独自のSDLイベント構造体を作成するのは安全ですか?
私は次のような構造を持つイベント持っていることを好むだろうtypedef struct{ Uint8 type; int code; void *data1; void *data2; } SDL_UserEvent;
:私は、私はMAPイベントを処理したいとき、構造体をreinterpret_castは、私ならば、追加の処理をすることなく、メッセージを捨てることができ
typedef struct{ Uint8 type; /* Set to SDL_USEREVENT + MAP */ int code; /* Set to MAP_COLLISION */ Uint8 tile_x; Uint8 tile_y; Uint8 tile_type; } UserEvent_MapCollision;
をしないでください。私のイベントハンドラは、このテクニックを使って簡略化されます(mallocを必要とせず、この構造体を解放してイベントにアタッチする必要はありません)。
sizeof(UserEvent_MapCollision) <= sizeof(SDL_Event)
が(ビルド時に)チェックされ、SDLイベントキューはプッシュされたイベントを何らかの形で変更しない限り、これは機能しますか?
...より良いイベントクラスを使用してください。 http://drrobsjournal.blogspot.co.uk/ – Robinson