Aframe自定义组件,架构中的自定义属性导致错误

时间:2017-07-24 14:34:40

标签: javascript aframe archilogic

我希望在我的架构中有两个自定义属性,如果未定义它们,则它们具有回退值,或者它们的值低于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-frame error

如果未在a-entity中设置属性,则会发生。

使用自定义属性时我做错了吗? 有没有办法定义可选属性,将undefined或null作为默认值?

自定义属性类型:

https://aframe.io/docs/0.6.0/core/component.html#custom-property-type

2 个答案:

答案 0 :(得分:3)

a-frame检查员尝试使用toFixed(decimalPlaces)函数对值进行舍入。

组件中传递的值是字符串,据我所知,toFixed()不适用于字符串,至少不在我的实验中,也不在documentation中。

一个简单的解决方案是返回一个已解析的值:

if (value >= 0.0) {
  return parseFloat(value);
}

虽然在将字符串与浮点数进行比较时,它正在进行一些额外的解析,您可能需要在检查之前解析该值:

value = parseFloat(value);
if (value >= 0.0) {
  return value);    
}

答案 1 :(得分:0)

好的,所以我注意到我的架构试图将我的属性解析为字符串。 如果您没有定义类型,我想这是后备吗?

$notes = Note::search($request->lecturer_search)->where([
            ['course_id','=',$course_id],
            ['course_code_number', '=', $request->course_code_number_search]
        ])->orderBy('created_at','desc')->paginate(5);

至少我没有错误。

也许有人有更好的答案。