filterEvents() が使用されている場合にイベント フィルターを削除するにはどうすればよいですか?
質問
こんにちは、rxscala と scalafx を一緒に使用したいので、マウス イベントを再パッケージ化するためにこれを行いました。
def mouseEvents: Observable[MouseEvent] = Observable.create(observer => {
stage.filterEvent(MouseEvent.Any)((event: MouseEvent) => {
observer.onNext(event)
event.consume
})
Subscription { ??? }
})
問題はその内部にあることです Subscription { ??? }
ブロックで登録したイベントフィルターを削除したい filterEvent()
でもそれを見てみるとわかります filterEvent()
イベントフィルターへの参照が保持されないため、使用できません stage.removeEventFilter()
. 。見えません removeFilterEvent()
どちらとも同等なので、イベントフィルターは次を使用してどのように登録されますか filterEvent()
削除されましたか?
回避策は使用しないことだと思います filterEvent()
代わりにjavafxを使用してください addEventFilter()
しかし、構文はさらに悪くなります。
解決
現在使用できるのは、 addEventFilter(eventType, eventHandler)
そして removeEventFilter(eventType, eventHandler)
.
最近では ScalaFX 1.0.0-M8-スナップショット 方法 filterEvent
期待どおりにサブスクリプションを返します。(見る ScalaFX 第 115 号)
所属していません StackOverflow