快速业务通道

手机游戏中的声音处理详解 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19

手机游戏中的声音处理详解

时间:2011-02-07

本文是在同一个游戏中移植在不同机型时所做的对声音的处理,考虑到性能的要求,对每种类型的手机做了一定的要求。

s40中的声音处理:

1)import com.nokia.mid.sound.*;

2)Sound soundPlayer; void initSound(){ soundPlayer = new Sound(b_main,1); if(m_playSound == 1) }

3)byte[] b_main = ;

4)static int m_playSound = 1;

5)在程序中对声音的控制m_playSound = (byte)(1 - m_playSound); if(m_playSound == 1) catch(Exception e){} } if(m_playSound == 0) catch(Exception e){} }

使用ott文件在nokia 40或60中。

1)定义数据结构

public class EMSound { public int type; public byte[] data; public EMSound(byte[] data, int type) { this.type = type; this.data = data; } }

2)import com.nokia.mid.ui.*; import com.nokia.mid.sound.*;

手机游戏中的声音处理详解(2)

时间:2011-02-07

3)

Sound soundPlayer; SoundListener soundListener = new EMSoundListener(); EMSound currentSound = null; boolean soundPlaying = false; boolean soundEnable = true; class EMSoundListener implements SoundListener { public void soundStateChanged(Sound sound, int event) { switch (event) { case Sound.SOUND_STOPPED: soundPlaying = false; break; case Sound.SOUND_PLAYING: soundPlaying = true; } } } public EMSound loadSound(String resfile, int resID) { EMSound sound; try { InputStream is = getClass().getResourceAsStream(resfile + "/" + resID + ".ott"); int len = (int) is.skip(10000); is.close(); is = getClass().getResourceAsStream(resfile + "/" + resID + ".ott"); byte[] barr = new byte[len]; is.read(barr); is.close(); sound = new EMSound(barr, Sound.FORMAT_TONE); } catch (Exception ex) { sound = null; } return sound; } public void playSound(EMSound sound, int count) { if (!soundEnable) try { //colico if (soundPlaying) if (soundPlayer == null) { soundPlayer = new Sound(sound.data, sound.type); soundPlayer.setSoundListener(soundListener); currentSound = null; } if (sound != currentSound) { soundPlayer.release(); soundPlayer.init(sound.data, sound.type); currentSound = sound; } soundPlayer.play(count); } catch (Exception ex) { soundPlaying = false; } } Sound[] soundPlayers; public void playSound( EMSound sound[], int loc) { if (!soundEnable) { return; } try { if (soundPlaying) stopSound(); if (soundPlayers == null) { soundPlayers = new Sound[sound.length]; System.out.println("Sounds == null"); for (int i=0; i<sound.length ; i++ ){ soundPlayers[i] = new Sound( sound[i].data, sound[i].type ); soundPlayers[i].setSoundListener( soundListener ); soundPlayers[i].init(sound[i].data, sound[i].type); } } long now = System.currentTimeMillis(); soundPlayers[loc].play(1); System.out.println("playing Sounds"); System.out.println("playing Sounds time"+(System.currentTimeMillis()-now) ); } catch(Exception ex) { soundPlaying = false; } } public void stopSound() { if (!soundEnable) if (soundPlayer != null) { //colico soundPlayer.stop(); } } public boolean isSoundPlaying() { return soundPlaying; } public boo

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号