كيفية إزالة عوامل تصفية الأحداث عند استخدام filterEvents()؟

StackOverflow https://stackoverflow.com//questions/21035298

  •  21-12-2019
  •  | 
  •  

سؤال

مرحبًا، أريد استخدام 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).

في الاحدث سكالافكس 1.0.0-M8-SNAPSHOT طريقة filterEvent إرجاع الاشتراك كما هو متوقع.(يرى سكالافكس العدد 115)

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top