我要设置 aframe-v0.5.0 <a-box>
位置和颜色,并在浏览器中渲染正确,但是当我使用box.getAtrribute(& #34; position&#34;),它返回&#34; undefined&#34;,然后我发现<a-box>
positon属性是在DOM中显示的空字符串(相同的缩放/旋转情况):
<a-box width="1" geometry="" height="1" depth="1" color="#0cf" material="" position="" rotation="" scale="" visible=""></a-box>
所以我切换回 aframe-v0.2.0 ,一切正常!
无法从谷歌获得任何答案,是否在aframe-v0.5.0中发生了变化?
以下是我的代码,aframe.js放在<head>
中,我的脚本放在<body>
。
var body = document.body;
var scene = document.createElement("a-scene");
var camera = document.createElement("a-entity");
camera.setAttribute("camera", "userHeight: 1.6");
camera.setAttribute("look-controls", "");
camera.setAttribute("wasd-controls", "");
var box = document.createElement("a-box");
box.setAttribute("width", 1);
box.setAttribute("height", 1);
box.setAttribute("depth", 1);
box.setAttribute("color", "#0cf");
box.setAttribute("position", "0 0 -5");
scene.appendChild(camera);
scene.appendChild(box);
body.appendChild(scene);
console.log( box.getAttribute("position") ) //"undefined"
答案 0 :(得分:1)
我不确定我是否正确,但在我看来,您尝试在将其正确放置在场景之前阅读该属性。当我在R.__
来电之前添加2s setTimeout()
时,它可以正常工作:
https://codepen.io/gftruj/pen/JJoENb
但是在阅读属性之前等待2秒是令人发指的!
是的,这就是为什么我建议将你的代码放在注册组件中。您可以在init()函数中添加任何js代码,并且您应确保所有内容都已正确加载。
例如,手动创建getAttribute()
元素,并将代码放入
<a-scene myCode>
答案 1 :(得分:1)
如果您打开浏览器的开发者工具,您会看到HTML属性值为空。
为了提高性能,A-Frame不会更新HTML以保存字符串化操作。如果需要同步到DOM,请使用调试组件或.flushToDOM方法。