Timer + Aframe:如何将 setTimeOut 用于 Aframe.registercomponent("...")

Posted

技术标签:

【中文标题】Timer + Aframe:如何将 setTimeOut 用于 Aframe.registercomponent("...")【英文标题】:Timer + Aframe : How to use setTimeOut for Aframe.registercomponent("...") 【发布时间】:2019-04-12 09:39:18 【问题描述】:

我知道这是一个初学者的问题,但我在使用 html / javascript 时遇到了一些麻烦。 我了解了 setTimeout(函数,时间),并且知道如何通过创建函数来使用它。 但是,我想知道是否可以将此 setTimeOut 用于 Aframe.registercomponent 我的其他脚本?我没有找到任何东西,我所有的尝试都失败了。

例如对于“音频分析仪波形”:

AFRAME.registerComponent('audioanalyser-waveform', 
  dependencies: ['audioanalyser'],

  schema: 
    maxHeight: default: 0.2,
    multiplier: default: .01,
    radius: default: 1,
  ,

  init: function () 
    this.colors = [];
    this.geometry;
    this.levels = [];
    this.noisePos = 0;
    this.rings = [];
  ,


  update: function () 
    setTimeout(Color, 4000);
    var data = this.data;
    var el = this.el;
    var i; 
    ...
    ...

这个在我的 wave.js 脚本中 我知道我可以在 index.html 中使用标签调用它:

      <a-entity id="analyser"
        audioanalyser="src: #song"
        audioanalyser-waveform="radius: 1"
        rotation="210 0 0"
        position="0 100 -150"
      ></a-entity>

如果我能补充一下,那就太简单了:

 <script> setTimeout(audioanalyser-waveform, 4000); </script>

但它不是那样工作的,我不知道如何设置 Aframe.registercomponent 的开始/停止来选择它的播放秒数。

你能帮帮我吗...

脉冲星,

【问题讨论】:

【参考方案1】:

你想完成什么?你能有一个在 4000 毫秒后设置 audioanalyser-waveform 的组件吗?

  <a-entity id="analyser"
    audioanalyser="src: #song"
    rotation="210 0 0"
    position="0 100 -150"
    your-component
  ></a-entity>

组件代码:

AFRAME.registerComponent('your-component', 
  ...
  init: function () 
    setTimeout(() => 
      this.el.setAttribute('audioanalyser-waveform', radius: 1);
    , 4000)
  
  ...
);

【讨论】:

我尝试创建一个“动画音乐视频”,我的视频必须与音乐相匹配。是的,它正在工作!谢谢!!嗯...是否可以在 8000 毫秒后停止我的组件例如?(谢谢) 使用setTimeout 可能不是与音乐同步的最佳方式,但您可以使用this.el.removeAttribute('audioanalyser-waveform') 或在您的组件中定义方法start / stop,您可以调用:this.el.components['audioanalyser-waveform'].start() 对不起,昨天没看到你的回答。我很难编写这些方法启动/停止,这就是为什么我更喜欢 setTimeout 哈哈 :^) 非常感谢您的帮助,它正在工作!晚上好迭戈!

以上是关于Timer + Aframe:如何将 setTimeOut 用于 Aframe.registercomponent("...")的主要内容,如果未能解决你的问题,请参考以下文章

settimer 怎么用

c++中timer函数怎么用?

settime计时器和POSIX timer函数

settime计时器和POSIX timer函数

C语言 timer函数 和time函数

MFC里SetTimer怎么使用