0
我想要做的是: 我有一个精灵。这个精灵有3个纹理。第一个纹理,我们称之为“未访问”,是最初的一个。现在,当我点击精灵时,它应该将纹理改为“点击”,这意味着精灵被点击了。这个纹理应该保留,直到我点击屏幕上的其他地方。当我这样做时,纹理应该变成第三个“已访问”。如果我点击精灵再次就应该改变其质地为“点击” ...SFML 2.1 - 检测单击鼠标并更改纹理
所以,我应该在这里被称为“ClickDetected”一个布尔函数及其代码应该这样做:
if (event.type == Event::MouseButtonReleased && event.mouseButton.button == Left)
if (mouse_over_sprite)
return true;
对不对?好的,那么,我有一个类节点。这个类有一个方法“点击”:
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";
}
但是这不起作用。当我点击精灵纹理更改为“点击”。当我释放鼠标按钮时,“clicked”纹理保持不变......但是当我将鼠标纹理更改为“visited”时。它应该保持“点击”,直到我点击其他地方。我试图在这里使用while循环,但它不起作用。我能做什么?
发布伪代码时很难发现编码错误。你能发布你的真实代码吗? – nvoigt
嘿,谢谢你的回答,但我已经找到了错误并修复了它:) – mentor93
你介意写一个简短的答案并接受它,所以这个问题被标记为已解决? – Lukas