2013-07-07 47 views
0

因此,我目前正在開發我的第一個遊戲(和C++應用程序)作爲業餘愛好,但我遇到了一個問題,我不知道如何解決它。當然讚賞任何幫助。點擊/按鍵時鼠標位置發生變化?

我的問題是:

每當我點擊,或者按鍵盤上的一個鍵,鼠標座標跳轉到真奇怪值,然後恢復正常一秒鐘後。這打亂了我的矢量計算的子彈軌跡等

例子:http://puu.sh/3xjFq.jpg

正如你可以在我的控制檯窗口中,Y座標從正確的值(628)跳至(-858993460),然後到(65536),再到正確的值。我使用的檢索鼠標

代碼座標:

cout << "X: " << event.mouseMove.x << " Y: " << event.mouseMove.y << endl; 

這也是我使用檢索計算鼠標座標相同的代碼。

我猜我的問題的來源是SFML本身,以及它的工作方式。什麼是檢索鼠標座標的替代方法?

請注意,我對這件事(上週開始)仍然非常非常期待,所以儘量讓所有事情儘可能簡單。

任何幫助表示讚賞,謝謝!

+0

這是打印鼠標座標的代碼。所有的代碼檢索座標在哪裏? –

回答

3

事件存儲在SFML中的聯合中。如果你不知道工會是如何工作的,你一定要讀一下它(wikipedia)。總之,不同的變量在內存中共享相同的空間。這在使用錯誤的類型解釋它們時顯然給了你奇怪的價值。

當你寫:會員xy

event.mouseMove.x/y 

值僅如果你正在尋找的事件是sf::Event::MouseMoved有效。如果要在按下按鈕時檢查鼠標的座標(即,類型爲sf::Event::MouseButtonPressed的事件),則必須使用

event.mouseButton.x/y 
+0

event.mouseButton.x和event.mouseButton.y不是有效的SFML代碼。 – user2558804

+0

@ user2558804這是,請查看本教程:http://www.sfml-dev.org/tutorials/2.0/window-events.php –

+0

啊,我想我現在明白了。但是我怎麼處理Key Press?如果不採用SFML使用的聯合方法,是不是有另一種獲得鼠標位置的方法? – user2558804

相關問題