是否可以向其中添加onClick事件处理程序Graphics.Collage.square
?
我想知道点击的相对位置。
在Javascript中,我可以执行以下操作:
var canvas = document.getElementById('canvas');
var canvasPosition = {
x: canvas.offsetLeft,
y: canvas.offsetTop
};
canvas.addEventListener('click', function(event) {
console.log(event.x - canvasPosition.x, event.y - canvasPosition.y);
}, false);
在榆树中有可能做类似的事情吗?
示例将不胜感激。
在Elm中,使用“画布”渲染,您应该使用Mouse.clicks
信号并对信号的变化做出反应。这是一个如何运行的示例:
import Graphics.Element exposing (Element, show)
import Mouse
clicks : Signal (Int, Int)
clicks =
Signal.sampleOn Mouse.clicks Mouse.position
main : Signal Element
main =
Signal.map show clicks
从本质上讲,Mouse.clicks
我们感兴趣的是实际的“事件”,因此无论何时发生,我们都对Mouse.position
信号进行“采样”以获得点击位置。
Signal.sampleOn
每当第一个参数信号发生变化(此处为鼠标单击)时,就会产生一个信号,该信号将用第二个参数信号的值(此处为鼠标位置)更新。
现在,为了显示结果,我们还将位置映射到中的show
函数main
。
您也可以将此代码粘贴到http://elm-lang.org/try,进行编译,然后尝试单击右侧以查看其工作原理。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句