999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Java ME手機游戲中的聲音處理方式分析

2010-01-01 00:00:00馬杰,王賢君
電腦知識與技術 2010年3期

摘要:該文主要介紹了手機游戲中聲音處理的作用、特點和游戲中聲音處理的方式。根據不同的聲音類型,提出了兩種聲音處理的方式,并分別對其進行了實現和對比分析,最終得出結論(各自的適用范圍)。

關鍵詞:Java ME;線程;聲音處理

中圖分類號:TP311文獻標識碼:A文章編號:1009-3044(2010)03-707-02

The Analysis of Audio Processing Mode in Mobile Games on Java ME Framework

MA Jie1, WANG Xian-jun2

(1.Hainnan College of Software Technology, Qionghai 571400, China)

Abstract: This article discusses the audio processing mode in mobile games by means of its function and characteristics. According to different condition, proposes two methods for audio processing and give the scope of application for each method by comparative analysis and the realization of an example.

Key words: Java ME; Thread; Audio processing

1 概述

游戲被稱為第九藝術,它可以為玩家提供絢爛多彩的感官體驗。這種體驗不僅來自于游戲豐富的劇情、華麗的場景,貼切且富有感染力的音效也起著不可替代的重要的作用。當前,手機游戲已成為新時代游戲產業發展的弄潮兒,由于手機硬件及手機軟件規模的限制,如何在手機游戲中高效、合理地處理音效,將直接關系到一款游戲的成敗。

2 游戲中聲音處理的作用

游戲中成功的聲音可以最直接的影響到玩家的情緒,有利于玩家對游戲的深層體驗。在溫馨的場景中舒緩而浪漫的背景音樂能引導玩家放松心情產生幸福感,在激烈的戰斗場景中快節奏的背景音樂更能調動玩家的參與激情;子彈發射的音效使得玩家的操作能得到直接的反映,子彈擊中各種物體發出不同的音效能使得游戲場景更真實,從而增加玩家的代入感。

游戲中成功的聲音不僅取決于音樂本身,在程序中合理的聲音處理方式也起著至關重要的作用。聲音的播放方式選擇,聲音的加載、播放、時間控制、循環控制、音量控制,由于聲音文件帶來的內存管理問題等都直接影響到游戲的體驗感和游戲性能。

3 手機游戲中聲音的特點

相比于桌面游戲,由于手機的內存小、處理器性能有限、供電持續時間短、支持的音頻格式較少,所以手機游戲對于音頻和音頻處理有較多限制。聲音文件的格式必須被目標手機支持,在不影響游戲質量前提下聲音文件要盡可能精簡。在處理聲音文件時,應合理分配內存空間,由于游戲往往是多線程的,音頻處理不恰當會導致音樂與游戲動作不一致的分離感或游戲突然停頓的不流暢感,嚴重影響游戲性能。

手機游戲中的聲音主要可以分為兩種:一種是持續的背景音樂,另一種是非持續的音效。由于聲音的不同,用來處理聲音的方式也不盡相同。

4 手機游戲聲音處理方式

4.1 在主循環中直接播放聲音

此方式是指在游戲的主循環中直接創建播放器播放聲音文件,當需要更換聲音時,需要首先清理聲音設備后才能載入新的聲音。其處理過程為:首先確定要播放的聲音素材,通過URI獲取資源,然后通過Manager創建相應格式的Player()接口的實例,接著設定播放器狀態,獲取播放信息和播放設備,便可以開始播放聲音。此時,聲音設備被獨占,如果需要跟換聲音,就必須先通過播放器實例的close()方法關閉當前播放器,接著清除播放器對象,然后再打開新的播放器。以下就是在一款空間冒險游戲中,兩段背景音樂處理的相關代碼:

public void loadMusic(){ //加載音樂并創建播放器的方法

try{

InputStream is=getClass().getResourceAsStream(\"/\"+filename); //從資源中獲取聲音

player=Manager.createPlayer(is,format); //創建播放器

}catch(IOException ex) //拋出異常

{……}

}public void play(){ //播放聲音的方法

if(player!=1){

try{

player.realize();

player.prefetch();

player.start();

}catch(MediaException ex){

System.out.println(\"can't play audio\");

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

}}}

public void replay(){

//重新播放聲音。此方法是在播放完其他聲音后,再次播放此聲音時使用

close(); //關閉播放器

loadResource(); //重新加載聲音,創建播放器

play(); //播放聲音

}

public void close(){ //關閉播放器的方法

if(player!=1){

player.close();

player=1;

}}

……

兩種背景音樂切換播放的示例代碼:

Music_Control myplayer1 =new Music_Control(\"Music1.mid\",\"audio/midi\");

Music_Control myplayer2 =new Music_Control(\"Music2.mid\",\"audio/midi\");

//此處構造兩個對象

Myplayer1. loadMusic(); //裝載音樂

Myplayer1.play(); //播放聲音

……//其他操作

Myplayer1.close(); //由于場景變化,更換聲音。因為聲音設備獨占的問題,必須關閉上一個聲音,才能播放。

Myplayer2. replay(); //此處直接調用replay()方法進行另一個背景聲音的播放,這樣對于垃圾回收,資源的載入,關閉等問題,都可以直接處理。

4.2 在主循環中啟動單獨的線程播放聲音

游戲編碼的一個重要特點就是多線程,在游戲中不同的線程用來實現游戲主循環、網絡連接、數據訪問以及聲音處理等功能,線程的應用使得游戲在主循環執行的同時可以完成并行的其它工作,從而使游戲成為一個完善的整體。游戲中啟動單獨的線程播放聲音過程如下:首先創建線程類,一般通過實現Runnable接口來創建,接著生成線程的實例,在線程的run()方法里調用上文中的replay()方法來實現資源加載、聲音播放、垃圾回收等功能。在需要播放聲音時,直接啟動線程就可以實現聲音播放的功能。播放其它聲音時只需重新創建線程對象并啟動即可。

同樣是空間冒險游戲,此處處理背景音樂和子彈射擊音效,代碼如下:

public class Music_Control implements Runnable{//實現Runnable接口

……

public void run(){ //實現run方法

replay(); //只調用replay方法即可

}public void threadPlay(){ //使用線程播放

new Thread(this).start(); //啟動線程并開始播放

}}

使用線程的方式播放背景音樂和射擊音效的代碼如下:

Music_Control myplayer1=new Music_Control (\"Mymusic.mid\",\"audio/midi\");

Music_Control myplayer2=new Music_Control(\"Sound.mid\",\"audio/midi\");

Myplayer1.threadPlay();//播放背景音樂

Myplayer2.threadPlay();//啟動線程對象播放子彈射擊音效

5 兩種處理方式對比

經過對代碼實際測試可以看出:在主循環中直接播放聲音不會出現聲音的延遲現象,聲音會與游戲同步運行,但經過測試發現有時會出現游戲停頓的現象,這樣會使玩家感覺游戲不流暢,影響玩家對游戲的代入感。在主循環中啟動單獨的線程播放聲音,不會出現游戲停頓的現象,但有時會出現聲音的延遲現象,若是非背景音樂類的音效出現延遲會讓玩家感覺聲音不同步,從而影響游戲體驗。此外,使用線程播放的方式,如果不是連續的音效,可能會產生大量線程,這樣不僅會占用大量內存,而且會導致垃圾回收次數過多,使游戲運行變慢。

所以在實際使用時,要根據具體要播放的聲音類型和實際設備的情況來選擇合適的方式,才能使得聲音的播放效果更好。一般來說較為簡短的音效適合在主循環中直接播放,這種情況下游戲不會出現停頓,能流暢運行;在主循環中啟動單獨的線程播放聲音的方式則尤為適合播放較長的背景音樂,這樣,聲音在播放中不會出現延遲現象,使聲音的播放更顯自然。

6 結束語

本文主要介紹了JAVA ME手機游戲中聲音的作用、特點及進行聲音處理的過程和兩種具體的實現方式,并對這兩種方式進行了實現和對比分析。在實際開發中應該根據應用的需要來選擇采用在主循環中直接播放聲音的方式還是啟動單獨的線程播放聲音的方式,從而使得游戲性能最優化。

參考文獻:

[1] 王曉.J2ME程序開發實用案例從入門到精通[M]. 北京:清華大學出版社,2007.

[2] 考夫(美),潘穎,王磊.J2ME開發大全[M]. 北京:清華大學出版社,2004.

[3] 陳旭東,徐保民,張紅勛.J2ME應用教程[M]. 北京:清華大學出版社,北京交通大學出版社,2007.

[4] 李振鵬,龔劍.J2ME手機游戲開發技術詳解[M]. 北京:清華大學出版社,2007.

[5] [美]Michael Morrison.J2ME手機游戲編程入門[M]. 李強 譯. 北京:人民郵電出版社,2005.

主站蜘蛛池模板: 国产男女免费完整版视频| 婷婷激情五月网| 成人夜夜嗨| www亚洲天堂| 在线色国产| 国产人成午夜免费看| 91国语视频| 亚洲成av人无码综合在线观看| 久久天天躁狠狠躁夜夜2020一| 国产欧美综合在线观看第七页| 色婷婷在线影院| 伊人久久久久久久久久| 国产高潮流白浆视频| 啪啪免费视频一区二区| 国产福利小视频在线播放观看| 午夜性刺激在线观看免费| 天堂成人av| 好吊妞欧美视频免费| 亚洲精品桃花岛av在线| 一本大道香蕉中文日本不卡高清二区| 亚洲日本中文综合在线| 99热这里只有精品国产99| 婷五月综合| 91人妻在线视频| 亚洲欧洲美色一区二区三区| 91探花在线观看国产最新| 国产乱码精品一区二区三区中文| 亚洲国产91人成在线| 国产在线视频导航| 91日本在线观看亚洲精品| 亚洲女人在线| 伊人久久综在合线亚洲2019| 91久久夜色精品国产网站| 露脸真实国语乱在线观看| 2019年国产精品自拍不卡| 国产簧片免费在线播放| 久久中文电影| 亚洲av成人无码网站在线观看| 草草线在成年免费视频2| 欧美一级特黄aaaaaa在线看片| 婷婷综合亚洲| 国产香蕉一区二区在线网站| 精品久久久久久成人AV| 精品无码国产自产野外拍在线| 国产精品刺激对白在线| 国产精品深爱在线| 99中文字幕亚洲一区二区| 久久超级碰| 亚洲精品va| 精品视频一区在线观看| 国产靠逼视频| 久久精品女人天堂aaa| 国产鲁鲁视频在线观看| 在线国产毛片| 国产精品性| 国产91久久久久久| 欧美精品在线免费| av在线无码浏览| 在线国产欧美| 一区二区理伦视频| 视频二区中文无码| 亚洲香蕉久久| 亚洲AV电影不卡在线观看| 国产综合色在线视频播放线视| 婷婷六月激情综合一区| 欧美日韩国产高清一区二区三区| 久久精品丝袜| 人妻中文字幕无码久久一区| 欧洲成人在线观看| 在线色国产| 2020精品极品国产色在线观看| 人妻无码AⅤ中文字| 欧美69视频在线| 亚洲第一成年网| 日本亚洲欧美在线| igao国产精品| 亚洲中文无码h在线观看| 国产免费福利网站| 91小视频在线观看| 国产午夜精品鲁丝片| 国产h视频在线观看视频| 动漫精品中文字幕无码|