科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道基础软件详细介绍手机游戏中的声音处理(2)

详细介绍手机游戏中的声音处理(2)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文给出了s40、V300型号中手机游戏中的声音处理的源程序代码,供大家参考!

作者:易振欧 来源:Csdn博客 2007年9月1日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在V300中,

1)

public class EMSound

{

public String type;

public byte[] data;

public EMSound(byte[] data, String type)

{

this.type = type;

this.data = data;

}

}



2)

import javax.microedition.media.Player;

import javax.microedition.media.PlayerListener;

import javax.microedition.media.Manager;

import javax.microedition.media.Control.*;

3)

//Sound soundPlayer;

PlayerListener soundListener = new EMSoundListener();

Player soundPlayer;

EMSound currentSound = null;

boolean soundPlaying = false;

boolean soundEnable = true;

class EMSoundListener

implements PlayerListener {

public void playerUpdate(Player player, String event, Object eventData)

{ //soundStateChanged(int event)

if (event == PlayerListener.STOPPED) {

soundPlaying = false;

}

if (event == PlayerListener.STARTED) {

soundPlaying = true;

}

}

}

public EMSound loadSound(String resfile, int resID) {

EMSound sound;

try {

InputStream is = getClass().getResourceAsStream(resfile + "/" + resID +

".mid");

int len = (int) is.skip(10000);

is.close();

is = getClass().getResourceAsStream(resfile + "/" + resID + ".mid");

byte[] barr = new byte[len];

is.read(barr);

is.close();

sound = new EMSound(barr, "audio/midi");

}

catch (Exception ex) {

sound = null;

}

return sound;

}

public void playSound(EMSound sound, int count) {

if (!soundEnable) {

return;

}

try {

if (soundPlaying) {

stopSound();

}

if (soundPlayer == null) {

soundPlayer = Manager.createPlayer(new ByteArrayInputStream(sound.data),

sound.type);

soundPlayer.addPlayerListener(soundListener);

currentSound = null;

}

if (sound != currentSound) {

soundPlayer.close();

soundPlayer = Manager.createPlayer(new ByteArrayInputStream(sound.data),

sound.type);

currentSound = sound;

}

soundPlayer.start();

}

catch (Exception ex) {

soundPlaying = false;

System.out.println(ex.toString());

}

}

public void stopSound() {

if (!soundEnable) {

return;

}

if (soundPlayer != null) {

try {

soundPlayer.stop();

}

catch (Exception e) {

System.out.print(e.toString());

}

}

}

public boolean isSoundPlaying() {

return soundPlaying;

}

public boolean isSoundEnable() {

return soundEnable;

}

3.读取mid文件

1)

import javax.microedition.media.*;

2)

Player player;

void initSound() {

try {

player = Manager.createPlayer(getStream("/sound/b_main.mid"),

"audio/midi");

player.realize();

player.setLoopCount(100000);

}

catch (Exception e) {

e.printStackTrace();

}

}

3)

//在程序中对声音的控制

m_playSound = (byte) (1 - m_playSound);

if (m_playSound == 1) {

try {

player.start();

}

catch (Exception e) {}

}

if (m_playSound == 0) {

try {

player.stop();

}

catch (Exception e) {}

}

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章