代码之家  ›  专栏  ›  技术社区  ›  Niraj

帧状态组件-将数据从状态传递到组件

  •  0
  • Niraj  · 技术社区  · 7 年前

    我正在使用一个框架状态组件来构建一个游戏,并通过状态变量跟踪游戏级别和播放/暂停状态。

    我希望了解如何将状态数据传递给具有属性的组件。

    这是我的状态-

    AFRAME.registerState({
      initialState: {
        score: 0
      },
     handlers: {
        gamePaused: function(state) {
          state.gamePaused = true;
        },
        gameStarted: function(state, event) {
         state.gamePaused = false;            
         state.level = event.source;     
        }
      }
    });
    

    el.emit('gameStarted', {source: levelnumber}, true);
    

    这是我的html

    <a-entity bind__model-subset="target: #orca; gamelevel: level"></a-entity>
    

    组件“模型子集”最初仅接受“目标”属性。我在其中包含了gamelevel属性,以便可以将状态变量级别传递给该组件。此后,我修改了模型子集组件,将gamelevel属性包含在模式中,如下所示-

    AFRAME.registerComponent('model-subset', {
      schema: {
        target: { default: '', type: 'selector' },
        gamelevel: { type: 'number'}
      },
      init: function() {
        var data = this.data;
        var el = this.el;
        console.log("model-subset level is ", data.gamelevel); //this component does not get executed
      }
    })
    

    但是,它会出错,并且不会执行组件代码。您能给我一个示例,说明如何将状态数据传递给架构中已经有一些属性的不同组件吗?

    1 回复  |  直到 7 年前
        1
  •  1
  •   ngokevin    7 年前

    在一个 bind__ 组件时,只传递状态属性,而不传递任何实际值。实际值包含在组件定义本身中。所以行动吧 target: #orca 深入 model-subset 因为那只是一个值。

    <a-entity bind__model-subset="gamelevel: level" model-subset="target: #orca"></a-entity>