ar.js 中的事件监听器

2024-04-24

我正在开发一个涉及 ar.js 的项目,该项目显示 3D 对象和文本,以在移动设备和笔记本电脑上教孩子们字母表。我试图添加一个事件侦听器作为额外的内容,以使孩子们进行更多互动。我的目标是单击/触摸显示的模型,它将放大或改变颜色或旋转。附件中找到我的代码。希望你能解决我的问题。

HTML 代码

<!DOCTYPE html>
<html>
    <head>
<script src = "https://aframe.io/releases/1.0.3/aframe.min.js"></script>   
        <script src = "https://cdn.rawgit.com/jeromeetienne/AR.js/1.6.0/aframe/build/aframe-ar.js"></script> 
        <script src = "event.js"></script>
        <script src="https://rawgit.com/donmccurdy/aframe-extras/master/dist/aframe-extras.loaders.min.js"></script>
     </head>   
    <body>
<a-scene embedded arjs = 'sourceType: webcam; debugUIEnabled:false;'>
<a-assets>
                <a-asset-item id = "apple" src = "apple/scene.gltf"></a-asset-item>
        </a-assets>
 <a-marker id = "appleM" type = "pattern" url = "Asset/pattern-apple.patt"
        markerhandler emitevents = "true" cursor="rayOrigin: mouse">

            <a-entity id = "animatedApple" gltf-model = "#apple" position = "0 -1 0" scale = ".05, .05, .05"></a-entity>

            <a-text value="A for Apple"  color = "purple" position = "-1.3 1 0" scale = '2, 2, 2'></a-text>
</a-marker>
<a-entity camera></a-entity>
      </a-scene>
    </body>
</html>

event.js(事件处理程序的文件)

init: function() {
        const animatedMarker = document.querySelector('#appleM');
        const aEntity = document.querySelector('#animatedApple');

        // every click, we make our model grow in size :)
        animatedMarker.addEventListener('click', function(ev, target){
            const intersectedElement = ev && ev.detail && ev.detail.intersectedEl;
            if (aEntity && intersectedElement === aEntity) {
                const scale = aEntity.getAttribute('scale');
                Object.keys(scale).forEach((key) => scale[key] = scale[key] + 1);
                aEntity.setAttribute('scale', scale);
            }
        });
}});


我认为主要问题是a-frame version 1.0.X。由于某种原因addEventListerner('click')如果我使用它,将无法工作。

下面是我的代码,您单击您的模型,它应该会增加比例。注意:有一个关于点击事件不在预期位置 https://github.com/jeromeetienne/AR.js/issues/584.

<!DOCTYPE html>
<html>
<head>
    <script src="https://aframe.io/releases/0.9.2/aframe.min.js"></script>
    <script src="https://cdn.rawgit.com/jeromeetienne/AR.js/1.7.2/aframe/build/aframe-ar.js"></script>
    <!-- IDK Why If I Use This, The addEventListener('click') won't work-->
    <!--     <script src = "https://aframe.io/releases/1.0.3/aframe.min.js"></script>    -->
    <!--     <script src = "https://cdn.rawgit.com/jeromeetienne/AR.js/1.6.0/aframe/build/aframe-ar.js"></script>  -->
    <script>

        AFRAME.registerComponent('button', {
            init: function() {

                const gltf = document.querySelector('#animatedApple');
                var x = gltf.getAttribute('scale').x;
                var y = gltf.getAttribute('scale').y;
                var z = gltf.getAttribute('scale').z;

                // every click, we make our model grow in size :)
                gltf.addEventListener('click', function(ev, target){
                    console.log(gltf.getAttribute('scale'));
                    gltf.setAttribute('scale', x + " " + y + " "+ z);
                    x += 0.1;
                    y += 0.1;
                    z += 0.1;
                });
            }
        });
    </script>
    <script src="https://rawgit.com/donmccurdy/aframe-extras/master/dist/aframe-extras.loaders.min.js"></script>
</head>   
<body>
    <a-scene embedded arjs = 'sourceType: webcam; debugUIEnabled:false;'>
    <a-assets>
        <a-asset-item id = "apple" src = "apple/scene.gltf"></a-asset-item> <!-- change to your assets -->
    </a-assets>
    <a-marker id = "appleM" preset="hiro" emitevents="true" button> <!-- change to your marker, i use default hiro.jpg -->
        <a-entity cursor="rayOrigin: mouse" raycaster="objects: .clickable; useWorldCoordinates: true;"></a-entity> <!-- important for addEventListener('click'). Notice the '.clickable'-->
        <a-entity class="clickable" id ="animatedApple" gltf-model = "#apple" position = "0 0 0" rotation="270 0 0" scale = "0.5 0.5 0.5"></a-entity> <!-- Notice the '.clickable'-->

        <a-text id="aText" value="A for Apple"  color = "purple" position = "0 0 0" rotation="270 0 0" scale = "2 2 2"></a-text>
    </a-marker>
    <a-entity camera></a-entity>
    </a-scene>
</body>
</html>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ar.js 中的事件监听器 的相关文章

  • 使用 Node.js 构建网站的最佳实践

    这个问题的答案是社区努力 help privileges edit community wiki 编辑现有答案以改进这篇文章 目前不接受新的答案或互动 我想知道如何使用 Node js 从头开始 开发一个网站 我明白我怎么能possibly
  • 如何使用 Playwright 使用选择器查找框架 (iframe)

    我有一个小问题 无法找到使用 Microsoft Playwright 框架的答案 根据您可以使用以下代码获取 iframe const frame page frame frame login 但是如何使用选择器来查找 iframe 并与
  • 通过 JavaScript 获取表单名称

    我有一个简单的问题 但我在网上找不到好的解决方案 我有这个 HTML 代码
  • 如何在React Native Android中获取响应头?

    您好 我想在获取 POST 请求后获取响应标头 我尝试调试看看里面有什么response with console log response 我可以从以下位置获取响应机构responseData但我不知道如何获取标题 我想同时获得标题和正文
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • 如何使用 Scrapy 从网站获取所有纯文本?

    我希望在 HTML 呈现后 可以从网站上看到所有文本 我正在使用 Scrapy 框架使用 Python 工作 和xpath body text 我能够获取它 但是带有 HTML 标签 而且我只想要文本 有什么解决办法吗 最简单的选择是ext
  • 如何使用 Greasemonkey 监视静态 HTML 页面的更改?使用哈希?

    我希望我的 Greasemonkey 脚本仅在其访问的静态页面具有与以前完全相同的内容时运行 现在我可以设置一个包含该页面哈希的变量 我正在寻找一种动态散列页面的方法 以便我可以将我的散列与生成的散列进行比较 关于如何即时实现散列的任何想法
  • javascript 选择自定义光标 (svg)

    我正在动态地将光标更改为悬停时的本地 svg element on mouseover function this css cursor url svgs pointer svg 9 30 auto 工作正常 但我想选择该 svg 来操纵其
  • React autoFocus 将光标设置为输入值的开头

    我有一个受控输入 最初显示一个值 我已将该输入设置为自动聚焦 但当我希望它出现在末尾时 光标出现在输入的开头 我知道这可能是因为自动对焦是在值之前添加的 但我不能 100 确定 在输入字段末尾完成光标初始化的最佳方法是什么 var Test
  • JavaScript RegEx:不同的结果:使用字符串和使用正则表达式“文字”构建模式?

    使用 RegExp 文字与字符串之间有什么区别吗 http jsfiddle net yMMrk http jsfiddle net yMMrk String prototype lastIndexOf function pattern p
  • 如何在模态打开时防止主体滚动

    我在用着W3schools 模态脚本 https www w3schools com howto tryit asp filename tryhow css modal我想添加一个功能 防止模型打开时整个主体滚动 我根据我的需要对原始脚本做
  • 如何正确取消引用然后删除 JavaScript 对象?

    我想知道从内存中完全取消引用 JavaScript 对象的正确方法 确保删除时不会在内存中悬空 并且垃圾收集器会删除该对象 当我看这个问题时在 JavaScript 中删除对象 https stackoverflow com questio
  • 使用 Google 日历源时如何禁用 FullCalendar 中的活动链接?

    我正在使用 FullCalendar 库从 Google 日历加载日历中的事件 不幸的是 事件添加到日历后 它们是可点击的 当您点击该活动时 您会自动重定向到 Google 日历页面以查看该特定活动 或者如果您有足够的访问权限 则可以直接对
  • Vaadin 12 将对象传递给 JavaScript 函数:无法对类进行编码

    Vaadin 12 Kotlin 项目 In my myPage html我有JavaScript myObject redirectToCheckout sessionId 1111 2222 所以我需要调用javaScript函数red
  • 使用 Javascript 设置 cookie [重复]

    这个问题在这里已经有答案了 我正在尝试构建我的第一个移动应用程序 它需要连接到我的 mysql 数据库并使用 json 返回数据 这很好 目前我有一个登录系统 一旦确定用户名和密码存在 它就会返回一条成功消息 对于下一步 我想在我的页面上使
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用
  • 使用 CSS 折叠和展开元素

    我正在尝试构建一个页面 加载时仅可见标题 并且 当用户单击标题时 每个标题下方的表格会在隐藏和显示状态之间切换 我的限制是只能在 CSS 中执行此操作 这是我到目前为止想到的 https jsfiddle net Argoron c1ypx
  • Highcharts jQuery 渲染问题 - 所有浏览器

    我在尝试使用构建堆积柱形图时遇到了一个奇怪的问题高图表 http www highcharts com 当图表呈现时 在您调整浏览器大小之前 不会显示列无论如何 导致图表重绘 我认为 图表的其余部分显示 轴 标题等 但不显示列本身 我在 I
  • 测量窗口偏移

    有没有一种方法可以测量 jQuery 中窗口的偏移量 以便我可以比较 固定 元素和相对定位元素的位置 我需要能够知道窗口滚动了多远 以便我可以使用该图来计算固定元素的高度 相对于视口顶部 和相对对象的高度 相对于顶部 之间的差异文件的内容
  • 禁用允许文本选择的

    残疾人可以吗

随机推荐

  • ToProperty 和 BindTo - 无需订阅即可获取初始值

    我在 NET 4 5 中使用 RXUI 6 和 WPF 当绑定到的 ViewModel 属性由一个支持时 我一直无法获取提供给我的视图的初始值ObservableAsPropertyHelper 根据文档 https github com
  • 如何在远程计算机上调试 war 文件?

    如果我有一个 jboss 服务器在另一台机器上运行 并且我将我的 war 文件 scp 到该机器 我该如何调试 war 我会使用什么命令 如何在我的终端中执行此操作 在远程计算机上使用调试参数运行 jboss Xdebug Xrunjdwp
  • 将 Excel 行输出到一系列文本文件

    在 Excel 中 我在 A 列中有一个文章名称列表 在 B 列中有一个免责声明 现在 对于 A 列中的每篇文章 我想创建一个文本文件 A 是文件的标题 B 是文件的标题 免责声明是文件的内容 这可能吗 我的想法是 我有数百个这样的东西 我
  • 如何 .gitignore 文件夹中的所有文件/文件夹,但不忽略文件夹本身? [复制]

    这个问题在这里已经有答案了 我想将一个空白文件夹签入我的 Git 存储库 实际上 我需要忽略文件夹中的所有文件和文件夹 但不是文件夹本身 我怎样才能做到这一点 我应该在我的 gitignore file 对于那些想知道为什么我要这样做的人
  • 使用这种语法的原因是什么 (0, _.Em)();

    在研究 google plusone 脚本时 我多次看到以下语法 0 Em 假设 Em是一个函数 上面的语句将导致调用该函数 这是非常明显的 另一方面 如果它是未定义的 结果岂不是与简单地执行相同 Em 任何人都可以阐明使用这种语法背后的想
  • 2018 年模块内测试/模拟功能的最新技术是什么?

    我有一个用于学习测试的模块 如下所示 api js import axios from axios const BASE URL https jsonplaceholder typicode com const URI USERS user
  • Google 地图 iOS SDK 和故事板

    我希望有人能解释如何开始使用 Google 地图和 Xcode 故事板 我找不到任何有关如何实际操作的信息 我只需要一个例子或采取的步骤 有这个http www youtube com watch v r3H8dFG0UCY http ww
  • PyCrypto 可以检查文件是否已经 AES 加密?

    from Crypto Cipher import AES def encrypt file key in filename out filename None chunksize 64 1024 Encrypts a file using
  • Fusion Tables 层 URL 请求限制(2048 个字符)

    我正在使用 Google 地图突出显示一些国家 并使用 Fusion Tables 来获取几何图形 您可以在此处查看一个示例 http jsfiddle net 4mtyu 689 http jsfiddle net 4mtyu 689 v
  • 使用 netcat 提供包含图像的 HTTP 响应

    我正在尝试使用 netcat 编写一个小型 HTTP 服务器 对于纯文本文件 这工作正常 但当我尝试发送图片时 浏览器仅显示损坏图像的图标 我所做的就是提取所请求文件的 mime 类型和大小 并将其发送给客户端 我的示例图片的请求标头如下所
  • 从回调中递归调用函数会导致堆栈溢出吗?

    我想在事件触发后调用一个函数 然后在同一个回调中再次调用该函数 这是为了在函数完成时创建一种事件侦听器 当你看到代码时你就会知道我想做什么 use strict var page require webpage create var sys
  • 我可以将多个线程分配给 OpenMP 中的代码段吗?

    我正在寻找一种方法来并行执行代码部分 每个部分使用多个线程 例如 如果我有 16 个线程和两个任务 我希望每个线程有 8 个线程同时执行这两个任务 OpenMP 有多种构造 section task 并行执行一般代码 但它们是单线程的 在我
  • mypy 在参数化泛型中 isinstance 和 issubclass 从 python 3.5 到 3.6 的差异

    在我从 python 3 5 升级到 python 3 6 之前 这是有效的 import typing issubclass list typing List int returns True isinstance 1 2 3 typin
  • 将未转义文本从字段添加到 postgres 中的正则表达式的正确方法?

    将字段中的文字文本值添加到 postgres 中的正则表达式的正确方法是什么 例如 如果不进行转义 some field 可能包含无效的正则表达式语法 where some text m some field M 最简单的方法是使用正则表达
  • 找不到模块:错误:无法使用 TypeScript 定义文件解析“openlayers”

    在使用 TypeScript 的 Visual Studio 2017 React 应用程序中 有一个使用 OpenLayers v4 6 5 的组件 Map tsx package json 文件加载 types openlayers 和
  • Perl 代码的多线程

    我需要知道如何为以下代码实现多线程 我需要每秒调用此脚本 但睡眠计时器会在 2 秒后处理它 总共脚本每 3 秒调用一次 但我需要每秒调用它 任何人都可以为我提供解决方案或为我指出正确的方向 usr bin perl use warnings
  • ProgressDialog 未在 UIThread 中显示

    我正在使用 google api lib 创建地图 因为地图小部件需要很长时间才能加载 所以我尝试添加加载通知 但没有显示 不过 我可以在常规线程中显示进度对话框 为什么这个对话框没有显示 public void onCreate Bund
  • 是否可以扩展 woocommerce 产品休息端点?

    有没有办法扩展 woocommerce Rest api 中的产品对象 wp json wc v3 products 以非破坏性的方式 因此使用该端点的插件不会中断 我目前尝试创建自己的休息端点来复制该对象 但现在缺少大量数据 我也尝试过类
  • 如何使用 Amazon API 轻松恢复购买?

    我正在尝试像 iOS 一样恢复购买 但我不知道如何使用 Amazon API 轻松恢复 IAP 权利购买 如果我向PurchasingManager 它返回一个PurchaseResponse 但是那个PurchaseResponse如果已
  • ar.js 中的事件监听器

    我正在开发一个涉及 ar js 的项目 该项目显示 3D 对象和文本 以在移动设备和笔记本电脑上教孩子们字母表 我试图添加一个事件侦听器作为额外的内容 以使孩子们进行更多互动 我的目标是单击 触摸显示的模型 它将放大或改变颜色或旋转 附件中