Pascal - 如果语句内部重复直到循环

时间:2018-05-27 10:17:25

标签: pascal swingame

我正在使用SwinGame库创建一个切换按钮。现在我正在努力实际切换它。这一点看起来像这样:

class TabSettingsScreen extends React.Component {

  static navigationOptions = ({navigation}) => ({
    title: 'Settings'
  })

  render() {
    return (... );
  }

}

基本上我打算这样做,如果用户通过var clr: Color; clicked: Boolean; boolcheck: String; begin OpenGraphicsWindow('Toggle button test', windowsWidth, windowsHeight); clr := ColorWhite; clicked := true; boolcheck := 'true'; repeat ClearScreen(clr); ProcessEvents(); //Play button and Pause button if (ButtonClicked(buttonX-buttonRadius, buttonY-buttonRadius, buttonRadius*2, buttonRadius*2) = true) and (clicked = true) then begin clr := ColorRed; clicked := false; boolcheck := 'false'; DrawAButton(); end else if (ButtonClicked(buttonX-buttonRadius, buttonY-buttonRadius, buttonRadius*2, buttonRadius*2) = true) and (clicked = false) then begin clr := ColorBlue; clicked := true; boolcheck := 'true'; DrawADifferentButton(); end; DrawText(echo, ColorBlack, 'arial.ttf', 14, 55, 55); RefreshScreen(); until WindowCloseRequested(); end; (SwinGame函数)点击窗口的这个区域,并且点击的变量为false,那么背景颜色将为红色,如果没有则蓝色。但由于某种原因,我只能将其改为红色,蓝色根本没有出现。我通过创建一个ButtonClicked()变量进行了一些故障排除,我看到变量一直被置于真,我确实看到它变为假,只有一秒钟然后回到真实......但我没有将boolcheck变量初始定义放在循环中,那么为什么它不会保持为假?

编辑:这是clicked函数的定义

ButtonClicked

1 个答案:

答案 0 :(得分:0)

好的,多亏了@lurker的建议,我已经解决了。在花了一些时间思考@lurker的建议之后,我意识到一旦程序重置,它将从clicked再次开始时开始。所以我必须做的是让ButtonClicked检查一个返回10truefalse的函数,点击Main() 1}}。这样clicked将始终更新,并且不会在点击始终为0的情况下重置该过程。

function Toggle(clicked): Integer;
if ButtonClicked(buttonX-buttonRadius, buttonY-buttonRadius, buttonRadius*2, buttonRadius*2) then 
    if (clicked := true) then
        begin
            clr := ColorRed;
            result := false;
            DrawAButton();
        end
else
    begin
        clr := ColorBlue;
        result := true;
        DrawADifferentButton();
end;

then in `Main()` I would call it as follow:
//Stuffs
begin
    clicked := true;
    repeat
        clicked := Toggle(clicked);
    //Other stuffs