如何在Elm中的画布形状上添加onClick事件处理程序?

米莎·莫罗什科(Misha Moroshko)

是否可以向其中添加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);

在榆树中有可能做类似的事情吗?

示例将不胜感激。

Ohanhi

在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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将 onClick 事件处理程序添加到画布元素(弧)?

来自分类Dev

如何在.clone元素上添加事件处理程序

来自分类Dev

如何在MVC中为DropDownList添加事件处理程序

来自分类Dev

如何在PowerShell中添加事件动作处理程序

来自分类Dev

如何在事件js中的array.map上的事件onclick上添加功能

来自分类Dev

如何在Qt Creator中为按钮定义OnClick事件处理程序?

来自分类Dev

如何在部分文字上添加OnClick事件?

来自分类Dev

如何在Vue循环的第一项中添加事件处理程序?

来自分类Dev

如何在Javascript事件处理程序中延迟向DOM添加元素

来自分类Dev

如何在Minecraft Forge的阻止杆中添加事件处理程序?

来自分类Dev

如何在事件处理程序中获取事件名称

来自分类Dev

如何在Flex中的画布上添加垂直滚动?

来自分类Dev

如何在Flex中的画布上添加垂直滚动?

来自分类Dev

如何在Android中的画布文本上添加透明背景?

来自分类Dev

如何在fabricjs中从画布上删除添加的模板?

来自分类Dev

如何在事件处理程序上更改 React 中的特定组件

来自分类Dev

如何在cakephp提交按钮中添加onclick事件?

来自分类Dev

如何在Javascript变量中添加onClick事件

来自分类Dev

如何在Chrome扩展程序中的按钮上添加点击事件?

来自分类Dev

为什么我不能使用onClick事件处理程序在lazarus中将形状绘制到表单上?

来自分类Dev

如何在mouseover事件处理程序中创建click事件处理程序?

来自分类Dev

如何在Facebook应用程序中添加画布和安全画布URL

来自分类Dev

如何在Facebook应用程序中添加画布和安全的画布URL

来自分类Dev

如何在每个画布上添加图像?

来自分类Dev

如何在织物画布上添加图像?

来自分类Dev

在构造函数中绑定函数时,如何在ES6 React中向事件处理程序添加参数

来自分类Dev

如何在VB6中将事件处理程序添加到索引控件中?

来自分类Dev

如何在形状上处理鼠标?

来自分类Dev

如何在lambda方法中解开lambda事件处理程序?

Related 相关文章

  1. 1

    如何将 onClick 事件处理程序添加到画布元素(弧)?

  2. 2

    如何在.clone元素上添加事件处理程序

  3. 3

    如何在MVC中为DropDownList添加事件处理程序

  4. 4

    如何在PowerShell中添加事件动作处理程序

  5. 5

    如何在事件js中的array.map上的事件onclick上添加功能

  6. 6

    如何在Qt Creator中为按钮定义OnClick事件处理程序?

  7. 7

    如何在部分文字上添加OnClick事件?

  8. 8

    如何在Vue循环的第一项中添加事件处理程序?

  9. 9

    如何在Javascript事件处理程序中延迟向DOM添加元素

  10. 10

    如何在Minecraft Forge的阻止杆中添加事件处理程序?

  11. 11

    如何在事件处理程序中获取事件名称

  12. 12

    如何在Flex中的画布上添加垂直滚动?

  13. 13

    如何在Flex中的画布上添加垂直滚动?

  14. 14

    如何在Android中的画布文本上添加透明背景?

  15. 15

    如何在fabricjs中从画布上删除添加的模板?

  16. 16

    如何在事件处理程序上更改 React 中的特定组件

  17. 17

    如何在cakephp提交按钮中添加onclick事件?

  18. 18

    如何在Javascript变量中添加onClick事件

  19. 19

    如何在Chrome扩展程序中的按钮上添加点击事件?

  20. 20

    为什么我不能使用onClick事件处理程序在lazarus中将形状绘制到表单上?

  21. 21

    如何在mouseover事件处理程序中创建click事件处理程序?

  22. 22

    如何在Facebook应用程序中添加画布和安全画布URL

  23. 23

    如何在Facebook应用程序中添加画布和安全的画布URL

  24. 24

    如何在每个画布上添加图像?

  25. 25

    如何在织物画布上添加图像?

  26. 26

    在构造函数中绑定函数时,如何在ES6 React中向事件处理程序添加参数

  27. 27

    如何在VB6中将事件处理程序添加到索引控件中?

  28. 28

    如何在形状上处理鼠标?

  29. 29

    如何在lambda方法中解开lambda事件处理程序?

热门标签

归档