【发布时间】:2019-06-06 06:43:03
【问题描述】:
我正在尝试使光线投射器仅在实体可见时起作用。我被告知要尝试编写一个脚本以使其正常工作,所以我继续这样做。 所有实体和子实体,我都可以通过点击进行交互,并且我的大部分事件都是通过点击触发的,这使得某些实体变得不可见:
<script id="city" type="text/html">
<a-entity class="city"
geometry="primitive: plane; height: 0.2; width: 0.5"
data-raycastable
material="color: black"
text="value: ${city_name}; color: white; align: center; wrapCount: 10; font: exo2bold"
event-set__mouseenter="scale: 1.5 1.5 1"
event-set__mouseleave="scale: 1 1 1"
event-set__1="_event: click; _target: #image-360; _delay: 300; material.src: ${src}"
event-set__2="_event: click; _target: #models; _delay: 300; visible: false"
event-set__3="_event: click; _target: #cities; _delay: 300; visible: true"
event-set__4="_event: click; _target: #show_button; _delay: 300; visible: true"
event-set__5="_event: click; _target: ${map}; _delay: 300; visible: true"
proxy-event="event: click; to: #image-360; as: fade"
sound="on: click; src: #click-sound"></a-entity>
</script>
您在此处看到的 data-raycastable 参数正在运行此此处的脚本:
AFRAME.registerComponent('data-raycastable', {
init: function () {
var self = this;
var el = this.el;
var data = this.data;
this.eventHandlerFn = function () {
if (el.object3D.visible = true){
el.setAttribute('data-raycastable', '');
}
else {
el.removeAttribute('data-raycastable')
}
}
update: function() {
el.addEventListener('click', this.eventHandlerFn);
}
}
}
})
现在,我想知道为什么我的这个脚本不起作用。我密切关注 A-frame 文档,试图使其工作,但它没有。光标按钮如下所示:
<a-entity id="camera" camera look-controls>
<a-cursor
id="cursor"
material="color: black; shader: flat"
position="0 0 -4.5"
geometry="primitive: ring; radiusInner: 0.15; radiusOuter: 0.2"
animation__click="property: scale; startEvents: click; from: 0.1 0.1 0.1; to: 1 1 1; dur: 150"
animation__fusing="property: fusing; startEvents: fusing; from: 1 1 1; to: 0.1 0.1 0.1; dur: 1500"
event-set__mouseenter="_event: mouseenter; color: springgreen"
event-set__mouseleave="_event: mouseleave; color: black"
raycaster="objects: [data-raycastable], .link, .model">
</a-cursor>
</a-entity>
有人可以引导我朝着正确的方向前进吗?
【问题讨论】:
-
分享一个链接,指向人们可以查看的完整可运行示例。故障会做glitch.com/~aframe
-
到目前为止,您将 HTML 放在脚本标签中,而它应该放在 中。您的实体应该在
标记中。以故障为起点:glitch.com/~aframe -
glitch.com/edit/#!/… 你好,先生
-
谢谢。那里有很多东西(多个 html 文件)。很难看出意图和在哪里看。到目前为止,您将 JS 嵌入到没有脚本标签的 HTML 中,多个
应该只有一个,使用脚本标签的模板似乎不正确......我建议从工作场景开始并保持简单人们可以帮助你...glitch.com/~aframe -
嘿,伙计,很抱歉造成负担,但我很可能在您查看它时附加了它。如果您可以再查看此链接glitch.com/edit/#!/…,那将非常有帮助。对于如何使我的不可见组件不可点击/不可投射,我非常迷茫。我对此也很陌生
标签: javascript html three.js aframe