从 AFrame 中的 js 动态发出事件
Dynamically emit event from js in AFrame
差不多就是标题。我希望能够从 Javascript 脚本中调用 emit。这是我的设置(为简洁起见进行了编辑):
<a-video
animation__begin="property: scale; to: 20 20 20; dur: 200; startEvents: startplay"
animation__rewind="property: scale; to: 1 1 1; dur: 200; startEvents: endplay"
src="#myvid" id="avideo"
onclick="this.emit('startplay'); playvideo('myvid');"></a-video> <!-- this.emit works, but calling the defined emit function won't work -->
<a-image src="#pause"
onclick="pausevideo('myvid'); /*works: document.getElementById('v-cadrage').emit('endplay')*/ emit(this, 'avideo', 'endplay')"></a-image> <!-- emit() doesn't work here -->
..
<script>
function emit(from, id, eventname) {
document.getElementById(id).emit.bind(from)(eventname);
}
</script>
emit
函数 有效 当从控制台调用时。但是,当从内联 javascript 调用时,我无法让它工作。如果我内联重写整个 document.getElement...
代码,它也可以工作。我在没有 .bind()
"hack" 的情况下观察到相同的结果。
我错过了什么吗?我怎样才能让它发挥作用?你能重现这种情况吗?
谢谢
当您单击这样的元素时:
<a-box onclick="emit('something');"></a-box>
emit
正在当前范围内调用 - 即框。所以它有点像 document.querySelector("a-box").emit('something')
.
要使用您的函数,只需更改其名称即可。
顺便说一句,我真的建议将所有逻辑移动到 custom component. It should simplify managing events (like ) - 只是 node.emit(event-name)
.
差不多就是标题。我希望能够从 Javascript 脚本中调用 emit。这是我的设置(为简洁起见进行了编辑):
<a-video
animation__begin="property: scale; to: 20 20 20; dur: 200; startEvents: startplay"
animation__rewind="property: scale; to: 1 1 1; dur: 200; startEvents: endplay"
src="#myvid" id="avideo"
onclick="this.emit('startplay'); playvideo('myvid');"></a-video> <!-- this.emit works, but calling the defined emit function won't work -->
<a-image src="#pause"
onclick="pausevideo('myvid'); /*works: document.getElementById('v-cadrage').emit('endplay')*/ emit(this, 'avideo', 'endplay')"></a-image> <!-- emit() doesn't work here -->
..
<script>
function emit(from, id, eventname) {
document.getElementById(id).emit.bind(from)(eventname);
}
</script>
emit
函数 有效 当从控制台调用时。但是,当从内联 javascript 调用时,我无法让它工作。如果我内联重写整个 document.getElement...
代码,它也可以工作。我在没有 .bind()
"hack" 的情况下观察到相同的结果。
我错过了什么吗?我怎样才能让它发挥作用?你能重现这种情况吗?
谢谢
当您单击这样的元素时:
<a-box onclick="emit('something');"></a-box>
emit
正在当前范围内调用 - 即框。所以它有点像 document.querySelector("a-box").emit('something')
.
要使用您的函数,只需更改其名称即可。
顺便说一句,我真的建议将所有逻辑移动到 custom component. It should simplify managing events (like node.emit(event-name)
.