容量2GB!アクセス解析&動画ファイルも可能な無料ブログ。アフィリエイト完全対応。
  最新画像一覧   /    おもしろブログが満載! シャッフル ブログ  /     無料登録  

効果音再生

  1. 2010/08/22(日) 14:46:27|
  2. android|
  3. トラックバック:11|
  4. コメント:38
作成中のゲームアプリから
効果音の再生で再利用できそうなモジュールを取り出してみたよ。
HashMapにキーと効果音を登録して、キーを使って再生できる。

play(String[] keys)を作ったのは、
ゲームでエサを取ったときの効果音が鳴らないことがあるため。
連続でエサを取ると1つ目のエサを取った時は再生されても、
2つ目を取った時はすでにエサ取得音が再生中のため再生されない。

それを回避するため、同じ効果音を複数登録しておき、
1つ目が再生中であれば、2つ目を再生。
2つ目が再生中であれば、3つ目を再生とする。

使用例
private String[] FOODKEYS={"food1","food2","food3","food4"};

//効果音登録
SoundMap.put(FOODKEYS[0],context, R.raw.food);
SoundMap.put(FOODKEYS[1],context, R.raw.food);
SoundMap.put(FOODKEYS[2],context, R.raw.food);
SoundMap.put(FOODKEYS[3],context, R.raw.food);

//効果音再生
SoundMap.play(FOODKEYS);



import java.util.HashMap;
import android.content.Context;
import android.media.MediaPlayer;

/**
* 効果音の登録と再生
* @author inoue
*
*/
public class SoundMap {

static private HashMap _soundMap=new HashMap();
static private boolean _soundOn=true;

/**
* 効果音登録
* @param key
* @param context
* @param resid
*/
static public void put(String key,Context context,int resid){
MediaPlayer mp=MediaPlayer.create(context, resid);
put(key,mp);
}

/**
* 効果音登録
* @param key
* @param mp 効果音
*/
static public void put(String key, MediaPlayer mp){
_soundMap.put(key, mp);
}

/**
* 指定されたキーに登録されている効果音の再生
* 再生に失敗した場合、後に続くキーを使う。
* @param keys
* @return 再生の成否
*/
static public boolean play(String[] keys){
if(!isSoundOn())return false;
for(String key:keys){
if(play(key))return true;
}
return false;
}

/**
* 指定されたキーに登録されている効果音の再生
* @param key
* @return 再生の成否
*/
static public boolean play(String key){
if(!isSoundOn())return false;
MediaPlayer mp=_soundMap.get(key);
if(mp!=null){
if(!mp.isPlaying()){
mp.start();
return true;
}
}
return false;
}

static public void soundOn(){
_soundOn=true;
}
static public void soundOff(){
_soundOn=false;
}
static public boolean isSoundOn(){
return _soundOn;
}

}


就職しました

  1. 2010/08/05(木) 21:48:50|
  2. その他|
  3. トラックバック:18|
  4. コメント:0
派遣SEとして採用されました。
こっちのandroidアプリ開発はあまり時間が割けなくなります。

設計書なんて今まで書いたことない。
ガリガリとコーディングしてるのが楽しいんだけどな。

ひまを見つけてゲーム完成させるよ。

DTIブログって?