我怎样才能转到我以前的 Fl::window?

Posted

技术标签:

【中文标题】我怎样才能转到我以前的 Fl::window?【英文标题】:How can I go to my previous Fl::window? 【发布时间】:2014-04-06 19:13:26 【问题描述】:

好的,所以我正在使用 FLTK 制作游戏。我有一个函数可以打印一个启动屏幕,它是我用“播放”和“规则”按钮制作的 Fl::window 的子类。当用户单击“规则”时,它会打印另一个带有“后退”按钮和规则的 Fl::window 子类(显然)。我的问题是首先弄清楚当用户按下时如何显示原始启动画面。我知道我可以创建第二个相同的启动屏幕,当按下按钮时会弹出,但这意味着用户只能从“规则”和“返回”一次。我希望它是一个循环,以便用户可以按他/她想要的次数多次按“规则”-->“返回”-->“规则”-->“返回”。那有意义吗?有什么想法吗?

【问题讨论】:

【参考方案1】:

通常每个 gui 都可以表示为嵌套状态机。如果您进入另一个屏幕(状态),您会破坏实际显示的小部件或窗口并创建一个新的。如果有一个按钮可以将您“返回”到第一个状态,您只需执行相同的操作:销毁实际的小部件或屏幕并再次创建第一个。是否非常简单:-)

如果您进入 SM 的更深层次结构,您将创建一个新的小部件,覆盖您已经存在的更高状态的小部件。离开此子状态将删除此级别的所有小部件。更改子状态的级别只会破坏子状态的小部件并在同一级别创建新的小部件。

在 C++ 中,用类来表示状态机非常容易。进入一个状态会创建一个类的实例,离开它会破坏代表它的实例。

使用 c++11,您可以在联合上使用“new at”运算符,该联合“包含”您在应用程序级别中拥有的所有状态。联合保证,您已经保留了足够的内存,并且您根本不需要使用 new/delete,这在没有 MMU 的小型系统上可能是一个问题。我希望如果您使用的是 fltk,那么您的系统很小:-)

对于 C++03,你不能在联合中使用非平凡的类,所以 c++11 在这里是一个真正的简化!

玩得开心!

【讨论】:

以上是关于我怎样才能转到我以前的 Fl::window?的主要内容,如果未能解决你的问题,请参考以下文章

我怎样才能有条件的 .htaccess 块?

我怎样才能从 kafka 主题接收数据到我的 Streaming Structured DataFrame?

我有使用路由的导航。每次当我转到其他页面并返回时,我都会丢失所有变量值。我怎样才能解决这个问题?

我怎样才能让苦艾酒和 Dataloader 一起工作?

所有网络通知已完全停止。我怎样才能解决这个问题?

我怎样才能根据日期用一个按钮查看sql中的所有记录?