0

我正在尝试render!在屏幕上添加一个简单的标签on-render功能,但它不起作用。我得到的只是一个空白屏幕。

我花了一些时间,但我终于发现当我退回标签以外的其他东西时会发生这种情况。例如,这有效:

(defscreen main-screen
  :on-show
  (fn [screen entities]
    (update! screen :renderer (stage))
    [])

  :on-render
  (fn [screen _]
    (clear!)
    (render! screen [(label "Hello, world!" (color :white))])))

这没有(所有改变的是最后一行on-render):

(defscreen main-screen
  :on-show
  (fn [screen entities]
    (update! screen :renderer (stage))
    [])

  :on-render
  (fn [screen _]
    (clear!)
    (render! screen [(label "Hello, world!" (color :white))])
    ["I just wanna pass my own data here, ugh.."]))

为了进行测试,我将其替换为labeltexture确实有效。

这是什么原因造成的?看起来很随意(我在第一个示例中评估的标签无论如何都会被完全忽略!那么为什么我必须通过它?我不明白发生了什么)。

PS 在这种情况下,在每一帧上创建标签是有意的,我知道我可以从我制作的标签中设置它on-show,但我试图变得更有活力。我还尝试添加一个Thread/sleepafterrender!以确保在渲染和清除之间有一个可见的时间窗口。

我是一个完整的初学者我想知道为什么上述方法不起作用除了我该如何解决它?

4

1 回答 1

0

检查 play-clj 的defscreen-doc,特别是:

所有函数都将屏幕地图和实体向量作为参数,并 在最后返回实体列表以及任何所需的更改。如果函数返回 nil,则实体列表不会更改。

您既不返回nil也不返回 (可选更改) entities,而是带有字符串的向量。

我希望这就是代码无法运行的原因-尽管尚未对其进行测试。

您对“自己的数据”的意图是什么?

于 2016-02-19T13:36:10.047 回答