首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Android >

《Beginning Android Games》付出基本框架的实现(4)

2012-09-14 
《Beginning Android Games》给出基本框架的实现(4)最后的部分是剩下的关于音乐实现的部分,与最先给出的抽象

《Beginning Android Games》给出基本框架的实现(4)

最后的部分是剩下的关于音乐实现的部分,与最先给出的抽象接口/类对应,于音乐有关的三个类分别对应Audio,Music,Sound的具体实现,Audio是两者的统一管理,程序通过Audio来取得Music或Sound,下面是3者的具体实现

public class AndroidMusic implements Music, OnCompletionListener {MediaPlayer mediaPlayer;boolean isPrepared =false;public AndroidMusic(AssetFileDescriptor assetDescriptor){mediaPlayer=new MediaPlayer();try {mediaPlayer.setDataSource(assetDescriptor.getFileDescriptor(),assetDescriptor.getStartOffset(),assetDescriptor.getLength());mediaPlayer.prepare();isPrepared=true;mediaPlayer.setOnCompletionListener(this);} catch (Exception e) {throw new RuntimeException("Couldn't load music");}}@Overridepublic void dispose() {if(mediaPlayer.isPlaying()){mediaPlayer.stop();}mediaPlayer.release();}@Overridepublic boolean isLooping() {return mediaPlayer.isLooping();}@Overridepublic boolean isPlaying() {return mediaPlayer.isPlaying();}@Overridepublic boolean isStopped() {return !isPrepared;}@Overridepublic void pause() {}@Overridepublic void play() {if(mediaPlayer.isPlaying()){return;}try{synchronized (this) {if(!isPrepared){mediaPlayer.prepare();}mediaPlayer.start();}} catch (IllegalStateException e){e.printStackTrace();} catch (IOException e){e.printStackTrace();}}@Overridepublic void setLooping(boolean looping) {mediaPlayer.setLooping(looping);}@Overridepublic void setVolume(float volume) {mediaPlayer.setVolume(volume, volume);}@Overridepublic void stop() {mediaPlayer.stop();synchronized (this) {isPrepared=false;}}@Overridepublic void onCompletion(MediaPlayer arg0) {synchronized (this) {isPrepared=false;}}}
?

热点排行