簡體   English   中英

SFML 2.1-檢測鼠標單擊並更改紋理

[英]SFML 2.1 - Detecting a single mouse click and changing a texture

我想做的是:我有一個精靈。 這個精靈有3個紋理。 我們將第一個紋理稱為“未訪問”,是第一個紋理。 現在,當我單擊精靈時,應該將其紋理更改為“ clicked”,這意味着該精靈已被單擊。 並且該紋理應保持不變,直到我單擊屏幕上的其他位置為止。 當我這樣做時,紋理應更改為第三個“已訪問”。 如果我再次單擊該精靈,它應該將其紋理更改為“單擊”。

因此,我這里應該有一個名為“ ClickDetected”的布爾函數,其代碼應執行以下操作:

if (event.type == Event::MouseButtonReleased && event.mouseButton.button == Left)
   if (mouse_over_sprite)
      return true;

對? OK,那么,我有一個Node類。 此類具有方法“ Clicked”:

bool Clicked {
   if (ClickDetected) { return true; }
}

我知道這可能是不必要的,但請暫時保留。 接下來,在此類的Update()方法中:

if (Clicked) { change_texture_to_"clicked"; if (!visited) visited=true; }
else {
   if (!visited) change_texture_to_"not-visited";
   if (visited) change_texture_to_"visited";
}

但這不應該怎么做。 當我單擊精靈時,紋理更改為“單擊”。 當我釋放鼠標按鈕時,“單擊的”紋理保持不變。但是當我移動鼠標時,紋理變為“已訪問”。 並且應該保持“單擊”狀態,直到我單擊其他位置為止。 我在這里嘗試使用while循環,但是沒有用。 我能做什么?

我已將此代碼放入Graph類(方法Update())來管理許多節點。 我做了一點修改,現在可以正常工作了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM