Aframe自定义组件,schema中的自定义属性导致错误
Aframe custom component, custom property in schema results in error
我想在我的模式中有两个自定义属性,如果它们没有定义,或者如果它们的值低于 0.0,则它们有一个回退值
这是架构:
schema: {
url: { type: 'string'},
key: { type: 'string'},
intensity: {
// default is -100 to trigger fallback
default: -100,
parse: function (value) {
if (value >= 0.0) {
return value
}
return -100
}
}
}
给我带来问题的 属性 是强度 属性。
如果在a-entity
中定义
<a-entity io3d-data3d="key: mykey; lightMapIntensity: 1.0" shadow="receive: true"></a-entity>
组件正确使用了该值,但是当我打开 a-frame 3d 编辑器并单击实体时 - 我收到此错误:
如果 a-entity
中未设置属性,不会 发生这种情况。
我是不是在使用自定义属性时做错了什么?
有没有办法定义默认值为 undefined 或 null 的可选属性?
自定义 属性 类型:
https://aframe.io/docs/0.6.0/core/component.html#custom-property-type
好的,所以我注意到我的模式试图将我的 属性 解析为字符串。
如果您不定义类型,我猜这是后备方案?
lightMapIntensity: {
// default is -100 to trigger fallback to value specified in data3d file
type:'float',
default:-100.0,
parse: function (value) {
if (parseFloat(value) >= 0.0) {
return parseFloat(value)
}
return -100.0 // = fallback to value from data3d file
}
}
至少我没有错误了。
也许有人有更好的答案。
a 帧检查器尝试使用 toFixed(decimalPlaces)
函数对值进行四舍五入。
组件中传递的值是字符串,据我所知,toFixed()
不适用于字符串,至少在我的实验中不是,在 documentation.
一个简单的解决方案是return一个解析值:
if (value >= 0.0) {
return parseFloat(value);
}
虽然在比较字符串和浮点数时,它会做一些额外的解析,您可能希望在检查之前解析值:
value = parseFloat(value);
if (value >= 0.0) {
return value);
}
我想在我的模式中有两个自定义属性,如果它们没有定义,或者如果它们的值低于 0.0,则它们有一个回退值
这是架构:
schema: {
url: { type: 'string'},
key: { type: 'string'},
intensity: {
// default is -100 to trigger fallback
default: -100,
parse: function (value) {
if (value >= 0.0) {
return value
}
return -100
}
}
}
给我带来问题的 属性 是强度 属性。 如果在a-entity
中定义<a-entity io3d-data3d="key: mykey; lightMapIntensity: 1.0" shadow="receive: true"></a-entity>
组件正确使用了该值,但是当我打开 a-frame 3d 编辑器并单击实体时 - 我收到此错误:
如果 a-entity
中未设置属性,不会 发生这种情况。
我是不是在使用自定义属性时做错了什么? 有没有办法定义默认值为 undefined 或 null 的可选属性?
自定义 属性 类型:
https://aframe.io/docs/0.6.0/core/component.html#custom-property-type
好的,所以我注意到我的模式试图将我的 属性 解析为字符串。 如果您不定义类型,我猜这是后备方案?
lightMapIntensity: {
// default is -100 to trigger fallback to value specified in data3d file
type:'float',
default:-100.0,
parse: function (value) {
if (parseFloat(value) >= 0.0) {
return parseFloat(value)
}
return -100.0 // = fallback to value from data3d file
}
}
至少我没有错误了。
也许有人有更好的答案。
a 帧检查器尝试使用 toFixed(decimalPlaces)
函数对值进行四舍五入。
组件中传递的值是字符串,据我所知,toFixed()
不适用于字符串,至少在我的实验中不是,在 documentation.
一个简单的解决方案是return一个解析值:
if (value >= 0.0) {
return parseFloat(value);
}
虽然在比较字符串和浮点数时,它会做一些额外的解析,您可能希望在检查之前解析值:
value = parseFloat(value);
if (value >= 0.0) {
return value);
}