EaselJS onclick 接管整个画布

2023-12-09

我正在使用 canvas 和 EaselJS 构建游戏,但是在 onclick 内执行任何删除窗口焦点的操作时会出现问题,即。提示、警报、窗口打开。

据我所知,它发生在 FireFox 和一些移动 Android 设备上。

我想我明白为什么会这样,但我不知道如何解决它(我不知道如何用一句话解释,所以这个问题的标题并不完全正确)

如果我在 onclick 中有一个警报,如下所示

_t.container.on('click', function(e) {
    alert('test');
    //end
    e.preventDefault();
    e.nativeEvent.preventDefault();
    return false; //all of these added when trying to find a work around
});

//如何重现问题

如果您单击目标,则会触发警报,将鼠标移动到任意位置(尽管仍在画布上),然后按 Enter 键关闭警报,然后无论鼠标位于何处,直到移动为止,单击都会触发相同的事件,并再次提醒......

这仅在移动设备上才是真正的问题,因为“鼠标”无法移动/触摸位置更新,因此屏幕上的下一次点击总是会触发第二次 onclick,而在桌面上,只有在关闭鼠标后没有移动鼠标时才会这样做。警报。

我认为这是 CreateJS 库本身的问题,因为任何有关单击事件和警报的示例都存在此问题。

我在想可能有一种方法可以强制createjs将mouseposition设置为0,0

这是一个可以找到问题的示例..

http://www.ajohnstone.com/test/hackday/CreateJS-EaselJS-b262a85/tutorials/Mouse%20Interaction/


显然存在错误或限制stage.js由于事实上,当鼠标按下时,舞台中的鼠标位置不会重新计算,而是仅在鼠标移动时重新计算(只有在窗口聚焦时才能检测到)。

我可以通过添加以下内容来修复它:

stage._handleMouseDown = function(e) {
    this._handlePointerDown(-1, e, e.pageX, e.pageY);
};

这个想法是超越标准_handleMouseDown将坐标传递给的函数_handlePointerDown以便重新计算位置。我不认为这种变化会影响性能(毕竟每个移动都已经完成了相同的计算,我们也将在单击时进行计算)。

示范

Update: 我建议的修复已经合并在库中,这个错误现在已经消失了(但一些在线演示仍然使用旧版本的库)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

EaselJS onclick 接管整个画布 的相关文章

  • dojo dijit.form.DateTextBox 约束不起作用,datetextbox

    嗨 我是 javascript 和 dojo 的新手 我正在尝试使用两个带有下拉日历的 dijit DateTextBox 来建立数据库查询的日期范围 一旦选择了开始日期或结束日期 我想限制可用的日期 以便不可能选择按时间顺序排列在开始日期
  • 使用 vscode 调试器调试 next.js

    我已经使用安装了一个项目创建下一个应用程序 https github com segmentio create next app 我需要使用我的编辑器 vscode 调试服务器端渲染 所以我访问过vscode recipes 如何调试 ne
  • 不和谐机器人 |不和谐.js |类型错误:无法读取未定义的属性“长度”

    我正在制作一个 Discord 机器人 并且正在使用 CodeLyon 的视频作为参考 该错误位于我的 message js 文件中 该文件包含以下内容 require dotenv config create cooldowns map
  • 为什么 JavaScript base-36 转换看起来不明确

    我目前正在编写一段使用 Base 36 编码的 JavaScript 我遇到了这个问题 parseInt welcomeback 36 toString 36 看来要回归了 welcomebacg 我在 Chrome 开发者控制台和 Nod
  • jquery.find() 可以只选择直接子项吗?

    我应该向 jQuery find 提供什么参数来选择元素子元素而不选择其他元素 我不能用 gt 引导选择器 而用 将选择所有后代 而不仅仅是直接子代 我知道 jQuery children 但这是一个库 因此用户能够提供自己的选择器 并且我
  • TypeError: props.render 不是一个函数(React hook 形式)

    我将方法作为我用react hook form制作的形式的道具传递 当从react hook form添加控制器时 它给了我 TypeError props render不是一个函数 我在网上找不到任何解决方案 因此感谢任何帮助 impor
  • Meteor:应用程序无法在 0.9.1.1 版本上运行

    出现类似错误 Error TypeError undefined is not a function evaluating Template create anonymous function iron dynamic template j
  • 使用 Angular 下载具有动态 src 的脚本

    Angular 提供了通过动态名称动态加载模板的方法ng include 该部分中的内联 JS 和 CSS 可以正常加载 但没有一个好的方法来下载带有动态 url 的脚本 我们需要下载脚本 相对于调用它们的 html 部分的路径 即我们有一
  • Jquery/Javascript 上传和下载文件,无需后端

    是否可以在没有后端服务器的情况下在 JavaScript 函数中下载和上传文件 我需要导出和导入由 JavaScript 函数生成的 XML 我想创建按钮 保存 xml 来保存文件 但我不知道是否可行 另一方面 我希望将 XML 文件直接上
  • 使用 KnockoutJs 映射插件进行递归模板化

    我正在尝试使用以下方法在树上进行递归模板化ko映射 插入 http knockoutjs com documentation plugins mapping html 但我无法渲染它 除非我定义separate每个级别的模板 在以下情况下
  • Javascript 数组到 VBScript

    我有一个使用 Javascript 构建的对象数组 我需要使用 VBScript 读取它 如下例所示 我找不到在 VbScript 代码中循环遍历数组的方法myArray object 这个例子是我的问题的简化 我无法更改页面的默认语言 这
  • 如何使用tampermonkey模拟react应用程序中的点击?

    我正在尝试使用 Tampermonkey 脚本模拟对 React 元素的点击 不幸的是 由于 React 有自己的影子 DOM 所以天真的方法使用document querySelector 不工作 我遇到了一些需要修改 React 组件本
  • 有没有办法阻止 prettier / prettier-now 将函数参数分解为新行

    当使用 prettier prettier now 在保存时进行格式化时 当一个函数包装另一个函数时 它会中断到一个新行 我想知道是否有办法阻止这种行为 例如 期望的输出 app get campgrounds id catchAsync
  • Javascript转换时区问题

    我在转换当前时区的日期时间时遇到问题 我从服务器收到此日期字符串 格式为 2015 10 09T08 00 00 这是中部时间 但是当我使用 GMT 5 中的 new Date strDate 转换此日期时间时 它返回给我的信息如下 这是不
  • Safari 支持 JavaScript window.onerror 吗?

    我有一个附加到 window onerror 的函数 window onerror function errorMsg url line window alert asdf 这在 firefox chrome 和 IE 中工作正常 但在 s
  • 将 MQTTNet 服务器与 MQTT.js 客户端结合使用

    我已经启动了一个 MQTT 服务器 就像this https github com chkr1011 MQTTnet tree master例子 该代码托管在 ASP Net Core 2 0 应用程序中 但我尝试过控制台应用程序 但没有成
  • 在 React.js 中编辑丰富的数据结构

    我正在尝试为数据结构创建一个简单的基于网格的编辑器 但我在使用 React js 时遇到了一些概念问题 他们的文档对此没有太大帮助 所以我希望这里有人可以提供帮助 首先 将状态从外部组件传输到内部组件的正确方法是什么 是否有可能将内部组件中
  • 使用 Ajax 请求作为源数据的 Jquery 自动完成搜索

    我想做的事 我想使用 jquery 自动完成函数创建一个输入文本字段 该函数从跨域curl 请求获取源数据 结果应该与此示例完全相同 CSS 在这里并不重要 http abload de img jquerydblf5 png http a
  • 导致回发到与弹出窗口不同的页面

    我有一个主页和一个详细信息页面 详细信息页面是从主页调用的 JavaScript 弹出窗口 当单击详细信息页面上的 保存 按钮时 我希望主页 刷新 是否有一种方法可以调用主页的回发 同时还可以从详细信息页面维护保存回发 Edit 使用win
  • fullCalendar 未显示正确的结束日期

    我正在看调试页面 http jsbin com wukofacaxu edit js outputFullCalendar 官方网站的 我想安排一个活动时间为 22 09 2015 至 30 09 2015 dd mm yyyy 但它只显示

随机推荐

  • Linq2db:查询对象层次结构的有效方法

    我使用 c 和 linq2db 并具有以下类 表层次结构 public class YearlyTemplate Column public int Id get set public List
  • C# 中的继承问题 - 是否可以重写内部方法?

    是否可以覆盖内部方法的行为 using System class TestClass public string Name get return this ProtectedMethod protected string Protected
  • Struts 2 覆盖资源消息键

    考虑一下这个
  • .apply 可以使用其他团体的信息吗?

    对于组中的每个元素 确定它是否存在于next组 按这些组出现的顺序 不一定是数字 对于最后一组 全部False Example df pd DataFrame group 0 1 1 0 2 val a b a c c grouped df
  • Android中使用ListView时发生内存泄漏

    我正在努力解决与 ListView 相关的内存泄漏问题 我创建了以下小程序来展示这种行为 我所做的是创建 2 个 LinearLayout 第一个有一个 Button 和一个 GListView 控件 GListView 的代码如下 但它只
  • 获取列中允许的最大长度,mysql

    我需要知道如何获取 mysql 中特定列的最大大小 该表是 turno CREATE TABLE turno idTurno tinyint 4 NOT NULL nombreTurno varchar 20 COLLATE utf8 sp
  • 获取未设置为对象实例的对象引用的空引用对象的类型

    自从我开始编程以来 这个问题一直困扰着我 不是 我的代码在哪里为空 而是有什么方法可以从异常中获取为空的对象的类型吗 如果做不到这一点 任何人都可以提供博客文章或 msdn 文章来解释 NET Framework 不 或不能 提供这些详细信
  • 数据库错误:“没有为一个或多个必需参数给出值。”

    我有一个数据网格 我应该将其列值插入到访问数据库中 但我有问题command ExecuteNonQuery 我的项目因为这个错误而没有完成 这是我的代码 for int i 0 i lt dataGridFactorRent Rows C
  • .NET Flag Enum 从值获取属性

    问候 StackOverflow 如果我有一个具有 Flag 属性的枚举类型以及该枚举类型中具有其自己的属性的值 我如何检索所有适当的属性 例如 Flags enum MyEnum EnumDisplayName Enum Value 1
  • 如何使用触发器输出作为复位信号的输入

    我在柜台里放了 3D 触发器 一旦达到 5 101 我想将 FF 复位输入设置为高 使用或门 复位为低电平有效 这几乎可以工作 但是 当我最初运行程序时 触发器的 Q 输出都是未知的 因此 最初 或门的复位输入为低电平 但是 因为一开始 Q
  • 通过 JSON-RPC 将 CREATERAWTRANSACTION 发布到 Bitcoin Core 时遇到问题

    我正在尝试通过以下方式发布到本地比特币完整节点json rpc但我从服务器收到错误 按照此处的文档进行操作 https bitcoincore org en doc 0 17 0 rpc rawtransactions createrawt
  • jQuery 复选框验证

    我使用下面的 jQuery 代码来验证表单 现在一切都很好 但我希望复选框验证使用 validator而不是其当前的alert 但是当我添加required required 对于复选框输入框 我会收到所有复选框的消息 而我只需要一个 re
  • 如何在保留所有箭头的同时消除 TreeView 中的线条

    我有一个 TreeView 我正在使用它来剥皮SetWindowsTheme pinvoke 但是我无法删除出现的树线 我不想画 主人 因为我相信这相当于用一辆 18 轮卡车来运送一份炸玉米饼 杀伤力太大 有什么干净 快速的方法可以消除树叉
  • java中的视频转换[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 Java 是否有任何框架或开源项目可以将视频从任何视频格式转换为任何视频格式 类似的东西Panda视频转换框架 你指的是JMF吗 Java媒体框架
  • 如何在弹出框内显示键盘?,ipad 密码锁定样式

    是否可以按照为 ipad 设置密码时显示的方式显示键盘 不幸的是没有 但我所做的复制是 使用界面生成器在我的密码视图中构建了一堆按钮 例如键盘 然后将每个按钮链接到一个可以更改文本字段的命令 IBAction button9 clicked
  • 如何在画布上填充图案并沿着形状弯曲?

    I have one image like this and I want to fill with pattern like this to make result like this I can fill the pattern usi
  • 如何解决 rstudio 中的“plot.new() 错误:图形边距太大”?

    我已阅读与此问题相关的所有帖子 但事实是 如果您有很多变量要绘制 则此问题仍然会发生 我的笔记本电脑分辨率是 1080p 我打开 rstudio 并运行以下脚本 a lt iris 1 4 gt a lt t a gt a lt as da
  • 正则表达式忽略重复匹配

    我有这样的字符串 var str When Home is on fire go and dance in fire 我想检查我的字符串是否有单词home and fire 为此 我使用了这个正则表达式 var words str matc
  • 托管到 iis 时无法访问打印机

    我在 MVC 中使用 rdlc 报告 在 Visual Studio 中运行时打印操作工作正常 但是当发布到同一台机器中设置的 iis 时 打印操作没有发生 但是当我将报告作为 pdf 返回时 报告会显示在那里 我可以使用 javascri
  • EaselJS onclick 接管整个画布

    我正在使用 canvas 和 EaselJS 构建游戏 但是在 onclick 内执行任何删除窗口焦点的操作时会出现问题 即 提示 警报 窗口打开 据我所知 它发生在 FireFox 和一些移动 Android 设备上 我想我明白为什么会这