如何跟踪RxSwift短时事件?

时间:2018-07-09 10:07:43

标签: ios rx-swift

我很难理解RxSwift的方法论。

我将展示一个虚构的示例,该示例实际上与我的现实世界问题无关,也许人们可以为我解决问题。

想象一个向导在他的《魔法书》中有十二个法术位的巫师。 这些咒语中的大多数都处于阻挡状态,例如火球发射后,我必须等待它被击中或吹出。但是,敌方巫师可以压制玛格琳琳的抛光法术军团,然后我需要将其关闭。

向导书本身是一段C ++代码,它提供:

  • 咒语结束时的回调
  • stopSpell(int bookSlot)调用
  • castSpell(int bookSlot)调用
  • configureSpell((void *)self,callBackType playerEventCallback)//其中,callBackType是定义回调函数的typedef

基本上,我想存储一个布尔legionOfSigmarinesRunning来知道该咒语是否正在运行,并根据回调对其进行修改,但还要记住该咒语使用哪个咒语槽。

我发现我应该使用BehaviorRelay<Int>来记住咒语插槽,并使用BehaviorRelay<bool>来判断咒语是否在运行。


我不知道如何模拟缺少拼字槽的情况,改为使用BehaviorRelay<Int>?来禁止,这听起来很奇怪,但会抑制对布尔值的需求。

我在初始化过程中迷失了:我应该使用以下形式的调用来设置BehaviorRelay变量:

  

让mySpellSlot = 0

     

myRelay = BehaviorRelay(mySpellSlot)

每次巫师施放咒语?我应该将其定义为:

  

let invalidSpellSlot = -1

     

myRelay = BehaviorRelay(invalidSpellSlot)

然后在我启动一个新咒语时调用onNext(newSlotValue),如果该咒语被驱散了,newSlotValue可以为-1?

我要完全做错吗?

我只关心孤独的抛光法术,因此,我将永远知道myRelay是该法术,而不是另一个法术,在这方面,我将无视其他回调。

0 个答案:

没有答案