【问题标题】:How to make array length equal to music duration [duplicate]如何使数组长度等于音乐持续时间[重复]
【发布时间】:2021-01-03 16:55:49
【问题描述】:

我正在使用 Angular 8 和 Typescript

问题:我想要一个与音频标签的音乐源具有相同长度的数组,以启用与轨道中预期位置同步的 cmets。类似于 soundcloud。

技术方法:

我有一个音频标签,里面有一个音频文件。我可以使用this.audioplayer.duration 访问这个持续时间

现在我有一个数组,public comments = [],我希望它的长度与轨道持续时间相同

<div *ngFor="let comment of comments">
  </div>

同步它们,我试过了

 ngAfterViewInit() {
this.comments.length= this.audioplayer.duration  }

但我得到了无效的数组长度。有没有办法让这个工作?

【问题讨论】:

  • 我倾向于将这个问题作为另一个问题的副本来结束,除非你能阐明它们之间的有意义的区别。
  • 这个问题专门针对角度问题,其他线程很笼统,不适合我的问题
  • 新数组(持续时间)
  • 一般答案确实回答了您的具体问题,对吧? this.comments = new Array(this.audioplayer.duration)this.comments = Array.from({length: this.audioplayer.duration}) 或那里的任何其他建议。具体来说,其他答案不合适吗?
  • duration 属性返回一个双精度浮点值,这意味着您的持续时间可以是189.21,应该四舍五入为整数。

标签: javascript arrays angular typescript audio-player


【解决方案1】:

即使您将数组设置为相同的音乐持续时间,您也不会得到您想要的东西。因为正如您所见,SoundCloud 音乐栏 UI 中存在固定数量的不同高度的栏。

但是,如果您想知道如何以角度获取音频持续时间,您需要做的就是制作该音频标签的@ViewChild(),然后在ngAfterViewInit() 中获取音频持续时间,如下所示:

this.bars = new Array(this.audioplayer.duration);

【讨论】:

    【解决方案2】:

    您需要使用正确数量的元素初始化数组:

    comments = new Array(this.audioplayer.duration);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-01
      • 2019-11-24
      • 1970-01-01
      • 2018-06-27
      • 1970-01-01
      • 2016-07-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多