Я пытаюсь получить координаты x и y мыши во время события перемещения колеса мыши на языке программирования Elm 0.19.
Я пытаюсь это с этим пакетом. Смотрите в разделе «Расширенное использование»:
https://package.elm -lang.org / пакеты / mpizenberg / вяз-указатель-события / 3.1.0 / Html-Events-Extra-Wheel
Сам пакет не описывает четкий пример, поэтому я искал пример в аналогичном пакете.
Смотрите пример в разделе «расширенное использование» на этой странице:
https://package.elm -lang.org / пакеты / mpizenberg / вяз-указатель-события / 3.1.0 / Html-Events-Extra-Mouse
Этот пример очень похож на то, что мне нужно, но я также не могу заставить это работать. Получите точно такую же проблему.
Вот мой код, адаптированный из примера к колесу мыши:
module WheelDecoder exposing(..)
import Html exposing (div, text)
import Html.Events.Extra.Wheel as Wheel
import Json.Decode as Decode
type alias WheelEventWithOffsetXY =
{ wheelEvent : Wheel.Event
, offsetXY : {x: Float, y: Float}
}
decodeWeelWithOffsetXY : Decode.Decoder WheelEventWithOffsetXY
decodeWeelWithOffsetXY =
Decode.map2 WheelEventWithOffsetXY
Wheel.eventDecoder
offsetXYDecoder
offsetXYDecoder : Decode.Decoder {x: Float, y: Float}
offsetXYDecoder =
Decode.map2 (\a b -> {x=a,y=b})
(Decode.field "offsetY" Decode.float)
(Decode.field "offsetY" Decode.float)
type Msg
= WheelOffsetXY {x: Float, y: Float}
view =
div
[ (onWheelOffsetXY (\wheelEvent -> WheelOffsetXY (wheelEvent.offsetXY))) ]
[ (text "mousewheel here") ]
onWheelOffsetXY : (WheelEventWithOffsetXY -> msg) -> Html.Attribute msg
onWheelOffsetXY tag =
let
options = { stopPropagation = True, preventDefault = True }
func = Decode.map tag decodeWeelWithOffsetXY
attribute = Wheel.onWithOptions options func
in
attribute
Когда я пытаюсь скомпилировать с помощью "elm make", я получаю следующую ошибку:
-- TYPE MISMATCH -------------------------------------- src/Map/WheelDecoder.elm
The 2nd argument to `onWithOptions` is not what I expect:
39| attribute = Wheel.onWithOptions options func
^^^^
This `func` value is a:
Decode.Decoder msg
But `onWithOptions` needs the 2nd argument to be:
Wheel.Event -> msg
Hint: I always figure out the argument types from left to right. If an argument
is acceptable, I assume it is “correct” and move on. So the problem may actually
be in one of the previous arguments!
Это сообщение об ошибке имеет смысл, поскольку я вижу, что существует несоответствие типов, но я понятия не имею, как его решить.