.flushToDom导出场景数据,出现“事件属性”数据问题

时间:2018-07-18 14:16:07

标签: javascript aframe

我正在编写用于将场景数据发送到服务器的脚本。 为了逃避属性解析,我使用

  

.flushToDom()

,这是一个问题。 他已经解析了某些属性的数据,例如字符串“ [Object object]”

enter image description here

好的。我有var存储场景的地方。我正在尝试手动更改事件数据:

 document.querySelector('a-scene').flushToDOM(true);
 var cursor = scene.getElementsByTagName('a-cursor')[0];

 //console: [object Object]
 console.log(cursor.getAttribute('event-set__1'));
 cursor.setAttribute('event-set__1','_event: mouseenter; color: springgreen');

 //console: undefined    
 console.log(cursor.getAttribute('event-set__1'));
 cursor.setAttribute('event-set__2','_event: mouseleave; color: black');

但是,它没有帮助。那么,如何在不激活事件的情况下设置事件数据?

  

彼得·亚当·米勒夫斯基(Adam Milewski)评论

之后更新

要保存属性数据,我们需要在.flushToDom()之前克隆节点, 然后我们可以修改属性。

var cursor = document.getElementsByTagName('a-cursor')[0];
var cursorClone = cursor.cloneNode(true);
var cursorParent = cursor.parentNode;

document.querySelector('a-scene').flushToDOM(true);

cursorClone.setAttribute("event-set__1", {"_event": "mouseenter", "material.color": "springgreen"});
cursorClone.setAttribute("event-set__2", {"_event": "mouseleave", "material.color": "black"});

cursorParent.removeChild(cursor);
cursorParent.appendChild(cursorClone);

1 个答案:

答案 0 :(得分:1)

代替

cursor.setAttribute('event-set__2','_event: mouseleave; color: black');

尝试

this.el.setAttribute("event-set__2", {
    "_event": "mouseenter",
    "material.color": "red"
})

应为working