使用重置功能后,圆圈不会绘制

时间:2015-09-26 14:52:07

标签: function events sfml

以下代码旨在根据右/左点击增加和减少圆的半径。

两个小故障 -

1.如果我按下&拖动我的鼠标。

2.如果我使用重置按钮然后拖动鼠标,那么圆圈就会消失。

我在哪里做错了。我确定这两个问题都有相同的原因。

$%1$18s

1 个答案:

答案 0 :(得分:1)

你已经陈述了你不喜欢的东西,但你没有详细说明你的程序应该做什么。无论如何,我会解决你的问题:

  1. 您使用“isButtonPressed”功能,该按钮被按下的每一帧都被调用。因此,如果您的应用程序以每秒30-60帧的速度运行,那么您的“radiusincrementer()”函数将被称为每秒30-60次。测试single button clickscontinuous button clicks(不是多个,只是按住按钮)是不同的。
  2. 当你进行圆圈重置时,你没有重置变量“p”。
  3. 删除(或暂时注释掉)所有3个测试按钮按下的if语句并用以下内容替换它们:(然后回来告诉我这是否是你要找的)

            if (event.type == sf::Event::MouseButtonPressed)
            {
                if (event.mouseButton.button == sf::Mouse::Left)
                {
                    // Reset the circle by pressing within bounds of rectangle
                    if ((event.mouseButton.x >= 0 && event.mouseButton.x <= 20) &&
                        (event.mouseButton.y >= 400 && event.mouseButton.y <= 420))
                    {
                        p = 10;
                        resetter(circle);
                    }
                    // Left clicked somewhere besides the rectangle, so enlarge the circle
                    else
                    {
                        p *= 2;
                        radiusincrementer(circle, p);
                    }
                }
                // Right clicked anywhere, so make the circle smaller
                if (event.mouseButton.button == sf::Mouse::Right)
                {
                    p /= 2;
                    radiusincrementer(circle, p);
                }
            }