此处将为大家介绍关于使用javax.sound.sampled.Clip播放,循环播放和停止游戏中的多种声音。意外错误的详细内容,此外,我们还将为您介绍关于flash控制声音的播放和停止、html5a
此处将为大家介绍关于使用javax.sound.sampled.Clip播放,循环播放和停止游戏中的多种声音。意外错误的详细内容,此外,我们还将为您介绍关于flash 控制声音的播放和停止、html5 audio 音乐自动播放,循环播放等、javascript – SoundCloud API:使用oEmbed指定播放曲目的开始和停止时间、javascript – Soundcloud自定义播放器暂停播放器的有用信息。
本文目录一览:- 使用javax.sound.sampled.Clip播放,循环播放和停止游戏中的多种声音。意外错误
- flash 控制声音的播放和停止
- html5 audio 音乐自动播放,循环播放等
- javascript – SoundCloud API:使用oEmbed指定播放曲目的开始和停止时间
- javascript – Soundcloud自定义播放器暂停播放器
使用javax.sound.sampled.Clip播放,循环播放和停止游戏中的多种声音。意外错误
我正在尝试在游戏中一次播放两个波形声音(背景音乐和效果)。我首先使用Java中的另一个音频处理程序构造了这段代码,该处理程序将处理声音的播放,停止和循环。这种构造只会播放背景音乐或效果,但一次只能播放一次。我环顾互联网,并被告知使用javax.sound.sampled.Clip处理声音,因此重用了相同的构造(播放,停止,循环),但将其切换为使用javax.sound.sampled.Clip。现在我完全迷路了。从到目前为止的内容来看,我已经完成了所有正确的操作,并且在eclipse编辑器中没有出现任何错误,但是当我运行它时,我遇到了两个错误之一。在Eclipse中(在Linux上运行),抛出LineUnavailableException。在Eclipse中(在Windows
7上运行),我在此代码的loop()部分中获得了java.lang.NullPointerException。如果您可以告诉我我做错了什么,或者向我指出一些相关的文档,我将不胜感激。我假设我的代码可以处理异常,但是我不确定。如果您发现其他任何令人毛骨悚然的代码失误,请让我知道我正在努力成为最好的程序员,并真的感谢建设性的批评。感谢您的时间。
import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import javax.sound.sampled.AudioInputStream; import javax.sound.sampled.AudioSystem; import javax.sound.sampled.Clip; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.UnsupportedAudioFileException; /** * Handles play, pause, and looping of sounds for the game. * @author Tyler Thomas * */ public class Sound { private Clip myClip; public Sound(String fileName) { try { File file = new File(fileName); if (file.exists()) { Clip myClip = AudioSystem.getClip(); AudioInputStream ais = AudioSystem.getAudioInputStream(file.toURI().toURL()); myClip.open(ais); } else { throw new RuntimeException("Sound: file not found: " + fileName); } } catch (MalformedURLException e) { throw new RuntimeException("Sound: Malformed URL: " + e); } catch (UnsupportedAudioFileException e) { throw new RuntimeException("Sound: Unsupported Audio File: " + e); } catch (IOException e) { throw new RuntimeException("Sound: Input/Output Error: " + e); } catch (LineUnavailableException e) { throw new RuntimeException("Sound: Line Unavailable: " + e); } } public void play(){ myClip.setFramePosition(0); // Must always rewind! myClip.loop(0); myClip.start(); } public void loop(){ myClip.loop(Clip.LOOP_CONTINUOUSLY); } public void stop(){ myClip.stop(); } }
答案1
小编典典我能够使代码正常工作,现在对Clips有了更好的了解。该页面对我帮助最大的页面是http://www3.ntu.edu.sg/home/ehchua/programming/java/J8c_PlayingSound.html,它分解了所有内容,并帮助我查看了哪里出错了。这是我的最终工作代码。和以前一样,如果您看到任何可怕的错误或逻辑或样式方面的问题,请告诉我。
import java.io.File;import java.io.IOException;import java.net.MalformedURLException;import javax.sound.sampled.AudioInputStream;import javax.sound.sampled.AudioSystem;import javax.sound.sampled.Clip;import javax.sound.sampled.LineUnavailableException;import javax.sound.sampled.UnsupportedAudioFileException;/** * Handles playing, stoping, and looping of sounds for the game. * @author Tyler Thomas * */public class Sound { private Clip clip; public Sound(String fileName) { // specify the sound to play // (assuming the sound can be played by the audio system) // from a wave File try { File file = new File(fileName); if (file.exists()) { AudioInputStream sound = AudioSystem.getAudioInputStream(file); // load the sound into memory (a Clip) clip = AudioSystem.getClip(); clip.open(sound); } else { throw new RuntimeException("Sound: file not found: " + fileName); } } catch (MalformedURLException e) { e.printStackTrace(); throw new RuntimeException("Sound: Malformed URL: " + e); } catch (UnsupportedAudioFileException e) { e.printStackTrace(); throw new RuntimeException("Sound: Unsupported Audio File: " + e); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException("Sound: Input/Output Error: " + e); } catch (LineUnavailableException e) { e.printStackTrace(); throw new RuntimeException("Sound: Line Unavailable Exception Error: " + e); } // play, stop, loop the sound clip } public void play(){ clip.setFramePosition(0); // Must always rewind! clip.start(); } public void loop(){ clip.loop(Clip.LOOP_CONTINUOUSLY); } public void stop(){ clip.stop(); } }
flash 控制声音的播放和停止
START 在库中找到你要用的声音,单击右键找到链接单击左键打开,勾选为ActionScript导出和在第一帧导出,设置识标符为music,确定退出. 再在第一帧加入下面代码: mySound = new Sound(); mySound.attachSound("music"); mySound.start(0,100); 这里做下说名: mySound.start(0,100); 中第一个0是秒偏移量,就是从0秒开使播放的意思 第二个100是播放100遍的意思. STOP mySound.stop("music");
html5 audio 音乐自动播放,循环播放等
audio播放音乐
<audio id="audio" src="images/openspeech.mp3"preload="auto" controls loop hidden="true"/>
这段代码是:可做背景音乐
页面加载加载音乐但是不播放
通过调用这段代码:
var myAuto = document.getElementById('audio'); myAuto.play();
音乐播放。
其它属性解释:
- preload: 如果出现该属性,则音频在页面加载时进行加载,并预备播放。如果使用 "autoplay",则忽略该属性。
- autoplay: 如果出现该属性,则音频在就绪后马上播放。代码:autoplay="autoplay" ,也可以用:autoplay="true"
- controls: 如果出现该属性,则向用户显示控件,比如播放按钮。
- loop: 如果出现该属性,则每当音频结束时重新开始播放。
- hidden: 隐藏播放界面
javascript – SoundCloud API:使用oEmbed指定播放曲目的开始和停止时间
scope.playTrack = function(track) { SC.oEmbed(track.permalink_url,{ auto_play: true }) .then(function(oEmbed) { scope.soundCloudWidget = $sce.trustAsHtml(oEmbed.html); scope.$apply(); }); };
将小部件绑定到视图:
<div ng-bind-html="soundCloudWidget"></div >
这是按预期工作的.我的问题是我想用这种方式流式传输一个轨道但是有一个指定的开始和停止时间.我做了一些研究,发现一个看似相关的StackOverflow question/answer提到了一个可以:
将#t = 12s附加到声音的URL以在第12秒开始
这在构建如下URL的URL时起作用:
https://soundcloud.com/griz/summer-97-ft-muzzy-bearr#t=54s
但是,对于start =’54s’,我想做这样的事情
scope.playTrackSection = function(track,start) { SC.oEmbed(track.permalink_url,{ auto_play: true,t: start }) .then(function(oEmbed) { scope.soundCloudWidget = $sce.trustAsHtml(oEmbed.html); scope.$apply(); }); };
要么
scope.playTrackSection = function(track,start) { var url = track.permalink_url + "#t=" + start; SC.oEmbed(track.permalink_url,{ auto_play: true }) .then(function(oEmbed) { scope.soundCloudWidget = $sce.trustAsHtml(oEmbed.html); scope.$apply(); }); };
但无济于事.有没有办法在这种类型的上下文中指定开始时间?
奖励积分:此外是否有任何可能的方法来指定流媒体歌曲应停止播放的持续时间或时间?
解决方法
In order to access the JavaScript object which provides the SoundCloud Widget API,add 07001 to your html page.
This script exposes the
SC.Widget(/*iframeElement|iframeElementID*/)
function to the global scope. It allows you to control the widget from the parent page (the page the widget is inserted into). SC.Widget accepts the reference to the iframe element or its id.
所以在添加这个脚本后,我能够做到这样的事情:
scope.playTrackSection = function(track,startTime,endTime) { SC.oEmbed(track.permalink_url,{ auto_play: true }) .then(function(oEmbed) { scope.soundCloudWidget = $sce.trustAsHtml(oEmbed.html); scope.$apply(); scope.iframe = document.getElementById('soundcloud_widget').querySelector('iframe'); scope.widget = SC.Widget(scope.iframe); scope.widget.seekTo(startTime); scope.widget.bind('playProgress',function(needle) { if (needle.currentPosition >= endTime) { scope.widget.pause(); } }); }); };
用html:
<div id="soundcloud_widget" ng-bind-html="soundCloudWidget"></div>
知道scope.widget.bind(‘xxxx’,….)可用于绑定到Widget API的几个Event types也很有用.因此,如果您希望在用户暂停,播放,完成,搜索等时发生某些事情,您可以加入这些事件.
javascript – Soundcloud自定义播放器暂停播放器
你如何暂停Soundcloud自定义播放器(http://developers.soundcloud.com/docs/custom-player)?我有一个带音频播放器的大单页.当用户导航到页面的不同部分时,URL中的哈希值会发生变化.当哈希值发生变化时,如何暂停Soundcloud自定义播放器?
我试过$(“.sc-player”).暂停()但它并不总是有用.我正在寻找它在桌面和移动设备上工作.桌面使用隐藏的SWF文件,而移动设备使用音频元素.
任何帮助表示赞赏!
解决方法:
$('.sc-player.playing a.sc-pause').click();
我们今天的关于使用javax.sound.sampled.Clip播放,循环播放和停止游戏中的多种声音。意外错误的分享就到这里,谢谢您的阅读,如果想了解更多关于flash 控制声音的播放和停止、html5 audio 音乐自动播放,循环播放等、javascript – SoundCloud API:使用oEmbed指定播放曲目的开始和停止时间、javascript – Soundcloud自定义播放器暂停播放器的相关信息,可以在本站进行搜索。
本文标签: