使用 addEventListener 添加带有参数的回调

2023-12-06

我正在使用画布创建拖放系统。

      canvas.addEventListener('mousedown', function () {
          window.initialClickX = mouse.x;
          window.initialClickY = mouse.y;
          window.initialBallX = ball.x;
          window.initialBallY = ball.y;
          canvas.addEventListener('mousemove', onMouseMove, false);
      }, false);

     function onMouseMove(){
        ball.x = mouse.x + window.initialBallX - window.initialClickX;
        ball.y = mouse.y + window.initialBallY - window.initialClickY;
        draw();
     }

当我单击时,我需要存储初始鼠标位置和初始球位置的值,以便我可以正确拖动球。

上面的代码工作得很好,但我认为所有全局变量看起来都很混乱。我希望 onMouseMove 能够接受参数initialClickX、initialClickY、initialBallX 和initialBallY。但是如何将这些参数添加到回调函数中呢?

或者如果有更好的方法请告诉我,谢谢。


尝试使用包装函数来做到这一点。

canvas.addEventListener('mousedown', function () {
      var initialClickX = mouse.x;
      var initialClickY = mouse.y;
      var initialBallX = ball.x;
      var initialBallY = ball.y;

      canvas.addEventListener('mousemove', function() {
          onMouseMove(initialClickX, initialClickY, mouse.x, mouse.y, initialBallX, initialBallY)
      }, false);

}, false);

function onMouseMove(initialClickX, initialClickY, mouseX, mouseY, initialBallX, initialBallY){
    ball.x = mouseX + initialBallX - initialClickX;
    ball.y = mouseY + initialBallY - initialClickY;
    draw();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 addEventListener 添加带有参数的回调 的相关文章

随机推荐

  • 如果 value 中的 a 值等于 R 中的上一行,则删除整行

    我是 R 编程新手 需要帮助根据单列的值删除整行 如果单列中的值等于前一行的值 我想删除该行 以下是我的数据 x id x timestamp x count 71 1 1435114605 61 72 1 1435114606 61 73
  • WordPress自定义文件在页面上传

    我目前正在使用此代码进行 PHP 文件上传 直接在 WordPress 页面上找到
  • 徽标/图像未显示在shinyapps.io 上

    我的徽标正在显示本地 R 闪亮 但是当我将应用程序部署到闪亮应用程序io 在这里检查应用程序 标志显示一张空白图片 有人可以帮我吗 The blank logo My code library dplyr library shiny lib
  • Highcharts 多线图

    这是我的小提琴 http jsfiddle net a4UQf Code function container highcharts title text Monthly Average Temperature x 20 center su
  • 在 Django 中序列化外键对象

    我一直致力于在 Django 中开发一些 RESTful 服务 以便与 Flash 和 Android 应用程序一起使用 开发服务接口非常简单 但我在序列化具有外键和多对多关系的对象时遇到了问题 我有一个这样的模型 class Artifa
  • python脚本杀死并启动自身

    我想在一小时内达到指定时间时启动 python 脚本的新实例并杀死当前实例 python 脚本使用 crontab 在启动时自动启动 无限 while 循环读取数据 如果在第 59 秒 30 和第 59 秒 59 之间有数据传入 则文件将关
  • PyRhO 似乎在安装时破坏了我的其他库

    我正在运行 Ubuntu 18 10 和 Python 3 6 并且已经使用这台笔记本电脑和常见的 Python 库 numpy scipy matplotlib 几个月了 没有任何问题 我用了 pip3 install pyrho 安装P
  • Phalcon 和 nginx - 框架仅运行 indexController

    我正在使用 Phalcon 和 Nginx 但遇到了问题 当我去http myapp dev segmentationPhalcon 应该运行 SegmentationController 及其 indexAction 方法 但相反 Pha
  • 使用 Pandas 进行数据分组

    我有一个数据框 Name Subset Type System A00 IU00 A OP A A00 IT00 PP A B01 IT 01A PP B B01 IU OP B B03 IM 09 B LP A B03 IM03A OP
  • .net core 依赖注入发生“无法找到包“enc.dll”的编译库位置”错误

    我正在使用 asp net core mvc 构建一个网站 对于登录 我添加了 enc dll 文件的依赖项 该文件只是加密 解密用户信息 我用 enc dll 文件创建了一个 Seeder 类 该类具有密钥属性并使用密钥进行加密 解密 然
  • 关于多表数据库设计问题的评论

    我有桌子 Articles Recipes Notifications Photos 我需要实现 用户评论 功能 如Facebook 我应该制作表格吗 ArticleComments RecipesComments等1 n关系 或者创建一个
  • 为什么我的 ObservableCollection 序列化不起作用?

    我正在尝试序列化和反序列化这个 ObservableCollection public class DataCollection ObservableCollection
  • 使用 jQuery-UI 的文件输入按钮样式

    我正在使用 jQuery UI 我注意到 输入文件 按钮
  • AIR 将服务器托管的 swf 加载到同一沙箱中

    我正在开发一个 AIR 应用程序 需要加载一个 swf 始终来自本地主机 它将访问其父级中的一些方法 反之亦然 不过 我并不关心在桌面应用程序中打开巨大的安全漏洞 我一直在到处寻找 但每次实施都遇到困难 我当前的设置加载到 swf 中并播放
  • R bnlearn Grow-Shrink结构学习返回无向图

    Nagarajan 等人 书 R 中的贝叶斯网络 奥莱利 2013 年 第 14 页 35 说 当我获取 R bnlearn 包的标记数据集并要求通过编写使用增长 收缩实现来学习结构时 library bnlearn data marks
  • 如何在 LIBGDX 游戏中完全禁用多窗口支持

    我在渲染线程中分配了很多内存 并且我已经traced多窗口支持的原因很奇怪 因为我有我的手机禁用了此功能 我已将以下内容添加到 AndroidManifest 基于this 应用程序标记内的代码 但运气不好 我仍然得到不需要的内存分配 仅当
  • JSON.stringify 大对象优化

    我想使用以下方法将大型 JSON 对象转换为字符串JSON stringify 但由于对象的大小 我得到了一个错误 lt Last few GCs gt 20817 0x2cc2830 295727 ms Scavenge 1335 8 1
  • XmlElement 的 Xml 签名无法验证

    我提前为相当长的代码块表示歉意 但这是我可以生成的最小的可编译示例 我已经省略了原始代码中的所有错误检查 我正在使用 Visual Studio 2012 和 NET 4 5 尽管这对于 4 5 来说并不是什么新鲜事 但它应该适用于任何版本
  • Linux bash:多变量赋值

    Linux bash 中是否存在类似于 PHP 中的以下代码的内容 list var1 var2 var3 function that returns a three element array 即 您在一个句子中为 3 个不同的变量分配了
  • 使用 addEventListener 添加带有参数的回调

    我正在使用画布创建拖放系统 canvas addEventListener mousedown function window initialClickX mouse x window initialClickY mouse y windo