0

我正在尝试在 Smalltalk 中创建一个 Dominion 游戏,但我无法按照我想要的方式获得 GUI 的布局。

目前,我将此作为构建 GUI 的代码:

open: game
| builder content |
builder := UITheme builder.
content := builder
    newColumn:
    {(builder
        newListFor: game
            list: #supplyStrings
            selected: nil
            changeSelected: nil
            getEnabled: nil
            help: 'Supply') .
        (builder newRow: (game players collect: [ :p | self morphForPlayer: p usingBuilder: builder ]))}.

gui := (content openInWindowLabeled: 'DominionGame') extent: 1024 @ 768

(原谅可怜的 Smalltalk 风格,我已经使用 Smalltalk 一个星期了)。

我得到了我想要的基本概念:一个窗口,顶部对所有玩家通用,底部分为每个玩家的部分。

我遇到的问题是顶部太大,占据了大约一半的窗口,我不知道如何解决这个问题。

我尝试将“vsizing:#shrinkWrap”添加到#supplyStrings 列表的构建器中,但这使它太小,迫使内容使用滚动条;我尝试在该变形中添加“范围:1024@200”,但没有看到任何效果。

所以我有两个问题:

1) 如何对使用 UITheme builder 构建的对象进行更好的布局控制?2) 我在哪里可以找到有关如何使用 Pharo 进行 UI 设计的文档?如果我知道 TFM 对 R 的意义,我会喜欢 RTFM!

4

1 回答 1

1

您可以在 Pharo 中构建不同抽象级别的 UI。有Glamour,您可以在其中根据演示文稿、窗格和端口来描述 UI。它对于构建专门的模型浏览器最有用。对于构建游戏,它似乎不是最合适的。然后是Spec,旨在重用可组合的小部件。那可能很合适。今年夏天有一个 GSoC 项目来构建一个 Spec UIPainter,因此您可以很好地了解如何布局 UI。PolyMorph 基本上是 Morphic 之上的一个抽象层,提供不同的皮肤 (UIThemes)。下面是Morphic。直接在 Morphic 中构建的一个优势是有一个出色的游戏构建示例:Laser Game(需要稍作改动才能在 Pharo 中使用)。

于 2013-09-14T22:34:37.310 回答