我正在使用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
答案 0 :(得分:0)
好的,多亏了@lurker的建议,我已经解决了。在花了一些时间思考@lurker的建议之后,我意识到一旦程序重置,它将从clicked
再次开始时开始。所以我必须做的是让ButtonClicked
检查一个返回1
或0
或true
或false
的函数,点击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