我对RXJS还是个新手.我想要实现的是,当用户按下空格键(或任何其他)键并用鼠标拖动元素时,拖动HtmlElement.
因此,拖动的开始是由空格-DOWN_LeftClick或LeftClick_SPACE-DOWN触发的.两者都被接受,以方便使用. 通过松开空格键(KeyUp事件)或鼠标单击(MouseUp事件)来触发拖动的结束,以最先发生的那个为准.
实现的 idea 是有一个‘DragStart’可观察到的和一个‘Dragend’可观察到的,我可以订阅. 我有4个与事件对应的观察点,首先按特定的键(空格)和鼠标键(左键)过滤:
spaceDown$ = fromEvent<KeyboardEvent>(document, "keydown").pipe( filter(key => key.code === 'Space'))
spaceUp$ = fromEvent<KeyboardEvent>(document, "keyup").pipe( filter( key => key.code === 'Space'))
个
mouseDown$ = fromEvent<MouseEvent>(document, "mousedown").pipe( filter( mouse => mouse.button == 0))
个
mouseUp$ = fromEvent<MouseEvent>(document, "mouseup").pipe( filter( mouse => mouse.button == 0))
个
我正在努力解决的是如何在RXJS中实现所需的行为.我试过用‘comineLatest’,‘with LatestFrom’,‘merge’不同的流,但它们都没有我想要的效果.
你有什么办法解决这个问题吗?