0

我在我的 SDL 游戏上实现了一个自定义光标。在屏幕上移动它时,我可以向右和底部移动到任意位置。但光标不会超出 ledt 或顶墙。我正在使用SDL_GetMouseState并将电流xy值传递给它。

我如何设法让表面移动到该位置(-5, 0)

这是一些代码:

typedef struct {
    SDL_Surface *image;
    SDL_Rect frame;
} Cursor;



void moveCursor(Cursor *cursor) {

    Sint16 *x = &cursor->frame.x;
    Sint16 *y = &cursor->frame.y;

    Uint16 cursorWidth = cursor->frame.w;
    Uint16 cursorHeight = cursor->frame.h;

    SDL_GetMouseState((int *)x, (int *)y); 

    cursor->frame.w = cursorWidth;
    cursor->frame.h = cursorHeight;

    SDL_Rect temporaryFrame = cursor->frame;

    SDL_BlitSurface(cursor->image, NULL, bufferSurface.surface, &temporaryFrame);
}
4

1 回答 1

1

SDL 不会检测到其窗口外的鼠标移动,因此您不能使用负鼠标坐标。

要模拟可以在屏幕外移动的鼠标,请始终保持鼠标居中并存储它的相对运动。相对运动被转换为您的虚拟鼠标,该鼠标现在可以在任何地方移动并由精灵表示。

于 2013-07-09T16:09:48.803 回答