0

我目前正在使用http://ifttt.com从 SoundCloud 获取我的公共收藏夹并将它们发布到我的 Wordpress 网站 ( http://diversesounds.co.uk )。

IFTTT 在我的网站上创建了一个包含以下内容的帖子;

<div class="trackUrl" id="(IFTTT then grabs the Track URL and places it here)">

然后我有以下JS块;

<script src="//connect.soundcloud.com/sdk.js"></script>
<script>

<?php

if(have_posts()): while (have_posts()) : the_post(); ?>

<?php

// Exploding the content to get track url from Div ID
$theContent = get_the_content();
$explode = explode('"', $theContent);
$trackUrl = $explode[3];

?>

SC.oEmbed(
    "<?php echo $trackUrl; ?>",
    {
        color: "494e72",
        show_comments: false
    },
    document.getElementById("<?php echo $trackUrl; ?>")
);

<?php endwhile; endif; ?>

上面的代码完美运行,但我想做的是在完成第一个手动播放的曲目后自动播放下一首曲目。

4

2 回答 2

1

您可以为 onMediaEnd 事件添加一个侦听器并尝试使用它播放下一首曲目:

soundcloud.addEventListener('onMediaEnd', function(player, data) {

    // find the next player here and use the API method api_play()

});

文档:http: //developers.soundcloud.com/docs/widget#widget-events

不过,您可能需要更换 embed 方法。他们的 JS 包装器在 GitHub 上

https://github.com/soundcloud/Widget-JS-API

于 2013-07-31T13:31:21.863 回答
0

请参阅HTML5 Widget API 文档

您可以将事件处理程序附加到FINISH事件。但是,我的建议是使用不同的方法并使用Audio5JSSoundCloud 自己的 JS SDKkilkeith/soundcloud-soundmanager-player。然后,您可以自己构建 UI 并使用播放器播放所有音乐。

不同之处在于,每个小部件都是一个相当复杂的单页 JS 应用程序,并非真正用于您尝试使用它的目的。

升级版。示例流程(只是在我脑海中):

collect references to all widget iframes by DOM class
store them in array `widgets`
initialise API wrapper with first element of that array `SC.Widget(widgets[0])`
attach event handler `finishHandler` to `FINISH` event
`finishHandler` needs to 
  initialise API wrapper `SC.Widget(widgets[1])` and start playback with this new widget 
  attach the same `finishHandler` to `FINISH` event of the newly initialised widget
  shift first widget from the array `widgets.shift()`

这可能太简单和幼稚了。但也许它仍然会帮助你。

于 2013-07-31T16:31:15.820 回答