A-frame 添加一个 <a-cursor> 带有实体的 onclick 事件
A-frame add an<a-cursor> onclick event with an entity
我一直在处理一个虚拟现实场景,我想知道如何向我的场景添加一个 <a-cursor>
并在我的代码底部使用 <a-entity>
创建一个 onclick 事件。我希望这样当我用我的 <a-cursor>
在 <a-entity>
上单击时,应该会出现一个名为 myFunction()
的函数。我怎样才能做到这一点?我的fiddle:fiddle
要将 <a-cursor>
添加到场景中,您需要首先将其作为 <a-camera>
的子项放置在场景中。
<a-scene update-html>
<a-camera>
<a-cursor></a-cursor>
</a-camera>
它应该显示为一个小圆环。对于 A-Frame,我会像这样创建一个组件:
<title>A-Frame HTML Shader - Dynamic</title>
<script src="https://aframe.io/releases/0.5.0/aframe.min.js"></script>
<script src="https://unpkg.com/aframe-html-shader@0.2.0/dist/aframe-html-shader.min.js"></script>
<script>
AFRAME.registerComponent("click-log", {
init: function() {
this.myFunction = function() {
console.log("hi");
};
this.el.addEventListener("click", this.myFunction);
},
remove: function() {
this.el.removeEventListener("click", this.myFunction);
}
});
</script>
并将其与其他脚本一起放在我的文件的头部。然后,像这样将其添加到框中:
<a-entity id="lettersEntity" click-log...
每当我们的光标放在附加实体上并单击时,这将向控制台写入“hi”。组件对于保持模块化很有用,所以如果我们以后想添加另一个框,我们可以点击并记录,我们也只需向其中添加点击日志。我们还可以向点击日志添加更多功能,以触发不同的事件侦听器。 Init 将在创建时添加我们的事件侦听器,remove 将清理它,这样如果我们稍后删除它附加的实体,我们就没有剩余的事件侦听器。
如果您有兴趣将鼠标用作光标,A-Frame v0.6.1 及更高版本支持 <a-scene cursor="rayOrigin: mouse">
,这比原语光标更易于使用。
This series 也可能有帮助,因为该视频还专门介绍了比我更好的组件和事件侦听器。例如,它展示了如何在单击时更改 A 帧图元的颜色等操作。
我一直在处理一个虚拟现实场景,我想知道如何向我的场景添加一个 <a-cursor>
并在我的代码底部使用 <a-entity>
创建一个 onclick 事件。我希望这样当我用我的 <a-cursor>
在 <a-entity>
上单击时,应该会出现一个名为 myFunction()
的函数。我怎样才能做到这一点?我的fiddle:fiddle
要将 <a-cursor>
添加到场景中,您需要首先将其作为 <a-camera>
的子项放置在场景中。
<a-scene update-html>
<a-camera>
<a-cursor></a-cursor>
</a-camera>
它应该显示为一个小圆环。对于 A-Frame,我会像这样创建一个组件:
<title>A-Frame HTML Shader - Dynamic</title>
<script src="https://aframe.io/releases/0.5.0/aframe.min.js"></script>
<script src="https://unpkg.com/aframe-html-shader@0.2.0/dist/aframe-html-shader.min.js"></script>
<script>
AFRAME.registerComponent("click-log", {
init: function() {
this.myFunction = function() {
console.log("hi");
};
this.el.addEventListener("click", this.myFunction);
},
remove: function() {
this.el.removeEventListener("click", this.myFunction);
}
});
</script>
并将其与其他脚本一起放在我的文件的头部。然后,像这样将其添加到框中:
<a-entity id="lettersEntity" click-log...
每当我们的光标放在附加实体上并单击时,这将向控制台写入“hi”。组件对于保持模块化很有用,所以如果我们以后想添加另一个框,我们可以点击并记录,我们也只需向其中添加点击日志。我们还可以向点击日志添加更多功能,以触发不同的事件侦听器。 Init 将在创建时添加我们的事件侦听器,remove 将清理它,这样如果我们稍后删除它附加的实体,我们就没有剩余的事件侦听器。
如果您有兴趣将鼠标用作光标,A-Frame v0.6.1 及更高版本支持 <a-scene cursor="rayOrigin: mouse">
,这比原语光标更易于使用。
This series 也可能有帮助,因为该视频还专门介绍了比我更好的组件和事件侦听器。例如,它展示了如何在单击时更改 A 帧图元的颜色等操作。