0

我正在编写一个非常简单的教程,介绍如何使用 Tabrisjs 播放音频文件,这个简单的代码可以在 Playground 中进行测试。它可以工作,但只会播放一次音频文件,我必须重新加载它才能再次播放。如何让音频多次播放?


// simple example to play audio file

const {Button, ui} = require('tabris');
var my_media = new Media('http://static1.grsites.com/archive/sounds/cartoon/cartoon001.mp3');

let btnPlay = new Button({
  centerX: 0,  centerY: 0,
  text: 'Play sound',
  background: 'blue',
  textColor: 'white',
  font: '24px'
}).on("select", function() {
  my_media.play();
}).appendTo(ui.contentView);

参考: - 我正在尝试简化 tabrisjs.com 提供的示例

4

2 回答 2

1

这似乎做了我想做的一切——包括打断正在播放的声音。您可以在 tabrisjs.com 操场上进行测试。


// simple example to play audio file
// ref: https://github.com/apache/cordova-plugin-media#readme

const {Button, ui} = require('tabris');

const SOUND_1 = 'http://static1.grsites.com/archive/sounds/cartoon/cartoon001.mp3';
const SOUND_2 = 'http://static1.grsites.com/archive/sounds/cartoon/cartoon002.mp3';
const SOUND_3 = 'http://static1.grsites.com/archive/sounds/cartoon/cartoon003.mp3';

let btnPlay1 = new Button({
  centerX: 0,
  top: 100,
  text: 'Play sound 1',
  background: 'blue',
  textColor: 'white',
  font: '24px'
}).on('select', function() {
  playAudio(SOUND_1)
}).appendTo(ui.contentView);

let btnPlay2 = new Button({
  centerX: 0,
  top: 'prev() 10',
  text: 'Play sound 2',
  background: 'red',
  textColor: 'white',
  font: '24px'
}).on('select', function() {
  playAudio(SOUND_2)
}).appendTo(ui.contentView);

let btnPlay3 = new Button({
  centerX: 0,
  top: 'prev() 10',
  text: 'Play sound 3',
  background: 'green',
  textColor: 'white',
  font: '24px'
}).on('select', function() {
  playAudio(SOUND_3)
}).appendTo(ui.contentView);


function playAudio(url) {
  // Play the audio file at url
  var my_media = new Media(url,
    // success callback
    function() {
      console.log('playAudio(): ' + url + ' Audio Success');
    },
    // error callback
    function(err) {
      console.log('playAudio(): ' + url + 'Audio Error: ' + err);
    }
  );
  my_media.play();
}
于 2018-03-30T23:24:30.600 回答
0

我尝试了您的代码,它确实播放了不止一次,但是在第一次播放完成之前,该文件不会第二次播放。如果您希望它自行中断,即每次点击按钮时从头开始播放,您需要将select处理程序修改为:

my_media.stop();
my_media.play();

cordova-plugin-media 文档详细介绍了Media该类中可用的所有方法。

于 2018-03-30T19:52:48.837 回答