我有一个天真的游戏循环实现
let gameLoop gamestate =
let rec innerLoop prev gamestate =
let now = getTicks()
let delta = now - prev
gamestate
|> readInput delta
|> update delta
|> render delta
|> innerLoop delta
innerLoop 0L gamestate
Run Code Online (Sandbox Code Playgroud)
此实现抛出stackoverflowexception.在我看来,这应该是尾递归.我可以像这样做一个工作
let gameLoop gamestate =
let rec innerLoop prev gamestate =
let now = getTicks()
let delta = now - prev
let newState = gamestate
|> readInput delta
|> update delta
|> render delta
innerLoop now newState
innerLoop 0L gamestate
Run Code Online (Sandbox Code Playgroud)
所以我的问题是为什么第一个代码示例抛出stackoverflow异常.
所以我知道我可以做到这一点
<Path Grid.Column="0" Width="16" Height="16" Fill="{DynamicResource WindowForegroundBrush}" Stretch="Uniform">
<Path.Data>
<GeometryGroup >
<Geometry>some geometry data1</Geometry>
<Geometry>some geometry data2</Geometry>
<Geometry>some geometry data3</Geometry>
</GeometryGroup>
</Path.Data>
</Path>
Run Code Online (Sandbox Code Playgroud)
但现在我想将几何数据 1、2 和 3 移动到资源字典中
---resource dictionary---
<Geometry x:Key="data1">some geometry data1</Geometry>
<Geometry x:Key="data2">some geometry data2</Geometry>
<Geometry x:Key="data2">some geometry data3</Geometry>
---resource dictionary end---
<Path Grid.Column="0" Width="16" Height="16" Fill="{DynamicResource WindowForegroundBrush}" Stretch="Uniform">
<Path.Data>
<GeometryGroup >
</GeometryGroup>
</Path.Data>
</Path>
Run Code Online (Sandbox Code Playgroud)
如何将我的资源中的几何图形添加到我的几何图形组?我可以做某种绑定或造型吗?
我更喜欢 xaml 唯一的解决方案,但欢迎所有解决方案。
希望这是有道理的。