我正在使用RxScala构建游戏。我希望在用户死亡时制作动画,之后我想将用户返回到游戏的开始位置。
我有一个热的Observable positionObservable,每次用户移动时都会发出用户的位置。 要找出用户何时死亡,我可以使用以下代码:
positionObservable.filter(isDead)
使用函数die(points)
我可以启动动画让用户死掉。此函数返回一个新的Observable,它在动画完成时发出。
我在考虑将这两个链接到:
val gameLostObservable = positionObservable.filter(isDead).flatMap(points =>die(points))
但是当没有订阅者时,die函数将永远不会运行,并且当有多个订阅者时,它将运行多次。我还读到不鼓励在变压器功能中做副作用。
将原始positionObservable转换为在动画完成时发出的新Observable的最佳方法是什么?