我正在尝试使用接收到的值动态创建图像。但是以某种方式在设置imgObj(下面的代码)的position属性时出现以下错误
xpos, ypos
和zpos
包含字符串浮动值,例如xpos = "-0.2", ypos="-0.1", zpos="0.2"
var imgObj = document.createElement("a-image");
imgObj.setAttribute("src",'url(' + $event.src + ')');
//imgObj.setAttribute("position",{x:0,y:0,z:0})
imgObj.setAttribute('position',{x:xpos, y:ypos, z:zpos});
任何想法或建议都会有所帮助...谢谢
答案 0 :(得分:0)
如果您不使用框架,那将是TypeScript的正确行为,因为在仅DOM / HTML的世界中,将对象作为setAttribute
的值会得到意外的结果。
要告知TypeScript aframe所增加的额外功能,您可以安装aframe类型:
npm install -D @types/aframe
当属性为
时,这将添加表示setAttribute
可以带x,y,z数字的对象的类型。
引用https://unpkg.com/@types/aframe@0.8.0/index.d.ts:
export interface Coordinate {
x: number;
y: number;
z: number;
}
然后在文件中降低
setAttribute(type: 'position' | 'rotation' | 'scale', value: Coordinate): void;
因此,看起来应该这样做。
最后的想法值得注意的是,不建议将setAttribute
用于此目的,如其文档中所示:
https://aframe.io/docs/0.8.0/components/position.html
出于性能和人体工程学的考虑,我们建议直接通过three.js Object3D .position Vector3与.setAttribute来更新位置。
此方法更容易,因为我们可以访问所有Vector3实用程序,并且通过跳过.setAttribute开销并且不需要创建对象来设置旋转度,就可以更快:
答案 1 :(得分:-1)
我猜解决方案是不使用Typescript。它不希望DOM方法被覆盖。