2016-02-19 28 views
0

我试图在on-render屏幕功能上使用简单标签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它确实工作。

这是什么造成的?它似乎很随意(我在第一个例子中评估的标签无论如何都被完全忽略了!那么为什么我必须通过它呢?我不知道发生了什么)。

P.S.在这种情况下,在每一帧上创建标签都是故意的,我知道我可以从我在on-show中制作的标签中进行设置,但我试图让它更具动感。我还试图在render!之后放置一个Thread/sleep以确保在清除&之间有一个可见的时间窗口。

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

回答

0

结账播放CLJ的defscreen-doc,特别是:

所有功能进行屏幕地图和实体向量作为参数,并 回归实体在任何所需的更改末尾列出。如果 函数返回零,则实体列表不会更改。

你既不返回nil,也不是(任意改变)entities,但有一个字符串的向量。

我认为这是无法运行的代码的原因 - 虽然没有经过测试。

您对“自己的数据”有何打算?

+0

我试图拥有的实体是具有一个元素的向量,它是我游戏状态的地图。我想用来自状态的文本和'render!'来制作一个标签。这是我为我的'clear!'颜色和我的贴图绘制完成的,除了那个标签外,所有东西都被渲染了。 – MasterMastic