大家好,哪位能告诉我声音的问题如何解决,谢谢

bdwer 2005-03-24 10:07:13
1,我在NOKIA上的游戏开始是没次用到音乐就导入音乐文件,然后播放,很正常。就是有些慢,所以我就把游戏的声音一次全部导入,但是这次就出问题了,开始是有的音乐一直再播放不停(但是我设置它仅播一次),后来又出现没声音的情况。最后也不知怎么就有声音了,但是播1,2,3这样的可以,但是播放1,1,2,3,3这种时前后音乐不同时可以播放,但是1,1这种就第一次出声但是第二个就不播放了,用的是:com.nokia.mid.sound.Sound
代码如下: void sound(byte s)
{
if (isEffect || popup || GAME_MODE == 0 || GAME_MODE == 1 || GAME_MODE == 6 || GAME_MODE == 7 || GAME_MODE == 11 || GAME_MODE == 12 || GAME_MODE == 13 || GAME_MODE == 90 || GAME_MODE == 91 || GAME_MODE == 92 || GAME_MODE == 98)
{

}
else
{
if (s != 11)
{
return;
}

}

try {


/*if (player[s] != null)
{
// changeVolume(vol);
player[s].stop();
player[s].close();
player[s] = null;
}*/

if (snd)
{
if(s==14 ||s==1 ||s==3||s==11)
player[s].setLoopCount(-1);
else
player[s].setLoopCount(1);

player[s].start();
//System.out.println("music "+s+" is start");
tempsnd = s;
VolumeControl vc= (VolumeControl)player[s].getControl("VolumeControl");

if (vc != null) {
vc.setLevel(vol);
}
}

} catch (Exception ex) {}

}

//1:start 2:game 3:game over
void loadSound(int type){
try{
InputStream is = null;

//System.out.println("num : "+num);
player=new Player[15];


if (type==1){ //s1,5,6,14
//System.out.println("start: "+start);
is=getClass().getResourceAsStream("/s"+1+".mid");
player[1] = Manager.createPlayer(is, "audio/midi");
player[1].realize();
is=getClass().getResourceAsStream("/s"+5+".mid");
player[5] = Manager.createPlayer(is, "audio/midi");
player[5].realize();
is=getClass().getResourceAsStream("/s"+6+".mid");
player[6] = Manager.createPlayer(is, "audio/midi");
player[6].realize();
is=getClass().getResourceAsStream("/s"+14+".mid");
player[14] = Manager.createPlayer(is, "audio/midi");
player[14].realize();

for (int i=2;i<5 ;i++ )
{
player[i]=null;
}
for (int i=7;i<10 ;i++ )
{
player[i]= null;
}
for (int i=11;i<14 ;i++ )
{
player[i]= null;
}

//is.close();

}else if (type==2){ //s2
is=getClass().getResourceAsStream("/s"+2+".mid");
player[2] = Manager.createPlayer(is, "audio/midi");
player[2].realize();

player[1]=null;
for (int i=3;i<15 ;i++ )
{
player[i]= null;
}
//is.close();
}else if (type==3){
int a[]={3,4,5,6,7,8,9,11,12,13}; //s3,s4-s9,
for (int i=0;i<10 ;i++ ){
is=getClass().getResourceAsStream("/s"+a[i]+".mid");
//System.out.println("load"+a[i]);
int j =a[i];
player[j] = Manager.createPlayer(is, "audio/midi");
player[j].realize();
//is.close();
}


player[1]= null;
player[2]= null;
//player[14]= null;

}
//is.close();
is=null;
}
catch (Exception e){
//System.out.println("ex");
}
}
请问哪位能告诉我声音播放的详细过程,谢谢
...全文
124 点赞 收藏 6
写回复
6 条回复
bdwer 2005年04月04日
现在又出现新问题,我做MOTOV500平台时,声音总是慢半拍,不知是什么原因,在播放前我用
void playStop(byte s){
try{
//System.out.println("sound stop");
//System.out.println("pre------>"+player[currPlayer].getState());
//soundPlay.isPlaying=false;

if (currPlayer!=0){
int state=player[currPlayer].getState();

if(state==Player.STARTED){//400
player[currPlayer].stop();
player[currPlayer].deallocate();

/*
if (s!=currPlayer){
player[currPlayer].deallocate();
}*/
//player[currPlayer].prefetch();
player[currPlayer].realize();

//System.out.println("player[currPlayer].STARTED");

}else if(state==Player.PREFETCHED){//300
player[currPlayer].stop();

player[currPlayer].deallocate();
player[currPlayer].realize();
//System.out.println("player[currPlayer].PREFETCHED");
}else{//(200)REALIZED
//player[currPlayer].prefetch();
//player[currPlayer].stop();
//player[currPlayer].deallocate();
//player[currPlayer].realize();
//System.out.println("else");
}
}
//System.out.println("next------>"+player[currPlayer].getState());
}
catch (Exception e){
//System.out.println("stopEx");
}
}

回复 点赞
bdwer 2005年04月04日
谢谢大家
回复 点赞
prok 2005年04月04日
一般都是没次发
回复 点赞
thincterii 2005年04月01日
建议去看一下MIDP的白皮书,上面有详细解释
Player相当于一个带录音带的播放机,首先获得声音资源,剩下的就和使用DVD机差不多
回复 点赞
bdwer 2005年03月24日
谢谢,我试试吧
回复 点赞
zyqpyj 2005年03月24日
你试一试在播放下一首之前STOP()一下。
回复 点赞
发动态
发帖子
J2ME
创建于2007-09-28

1.1w+

社区成员

2.6w+

社区内容

Java J2ME
社区公告
暂无公告