2013-07-09 41 views
0

我在SDL遊戲上實現了自定義光標。當它在屏幕上移動時,我可以儘可能遠離右邊和底部。但光標不會超出指示燈或頂部牆。我正在使用SDL_GetMouseState並將當前的xy值傳遞給它。SDL - 使用矩形x和y小於零的光標

如何管理,使表面移動到的位置(-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); 
} 
+0

你的問題是? – 2013-07-09 12:49:56

+0

對不起,我在創建帖子時沒有將最後一行復制到編輯器。 –

+0

只需用視頻表面的負偏移量對其進行blit處理即可。 – 2013-07-09 15:24:48

回答

1

SDL沒有檢測到鼠標移動的窗外,所以你不能有負鼠標座標。

要模擬可以移動到屏幕外的鼠標,請始終將鼠標保持在中心位置並存儲它的相對運動。相對運動被轉換爲虛擬鼠標,現在可以在任何地方移動,並由精靈表示。