日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

javafx2_JavaFX 2 GameTutorial第5部分

發布時間:2023/12/3 java 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 javafx2_JavaFX 2 GameTutorial第5部分 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

javafx2

介紹

這是與JavaFX 2 Game Tutorial相關的六部分系列的第五部分。 我知道自從我寫關于游戲的博客以來已經有很長時間了,但希望您仍然與我在一起。 如果您想回顧一下,請閱讀第1部分第2 部分第3 部分第4 部分 ,以了解我們從哪里結束。 如果您是最新的,那就開始吧! 在此博客文章中,我們將聲音整合到我們的游戲中。

圖1:JavaFX Sound FX

有許多元素可以使游戲變得異常有趣,例如動畫效果,碰撞,AI和輸入。 但是, 聲音是游戲最重要的要素之一。 當游戲將聲音效果和音樂融合在一起時,玩家將變得高度沉迷(嗯……就像沒有意識到自己即將看到太陽升起一樣)。 在開始詳細介紹之前,讓我先介紹一些家用電腦PC游戲中使用的聲音的背景歷史。 如果您想跳過歷史并開始做生意,請跳至“聲音管理器服務”部分。 聲音管理器服務負責維護游戲期間使用的聲音資產。 如果您真的急躁并且不關心實現細節,請跳至“ JavaFX Sound Demo”。 重要說明: 在啟動演示之前,請記住閱讀要求。

歷史

如果您想今天了解,則必須昨天進行搜索。 ?珍珠巴克

早在我長大的那一天,我就知道Apple []計算機可以播放聲音。 Apple []的揚聲器只能產生簡單的音調(8位單聲道聲音)。 當我第一次發出聲音(瑪麗有只小羊羔)時,我完全感到驚訝。 如果您對使用Applesoft Basic的peek和poke命令編寫音樂的機器代碼感興趣,請訪問8位Sound and Fury 。 即使8位看起??來非常簡單(因為值太少),但事實并非如此。 在為游戲創建音效時,最難管理的事情之一是音調的時間或持續時間,以及(以近乎同時的)方式在屏幕上飛舞的精靈。 在90年代,英特爾x86架構(PC)統治期間,最流行的聲卡被稱為Creative Technologies生產的Sound Blaster 16 。 最棒的是,這款聲卡在玩游戲時非常出色,因為它是具有芯片組的獨立卡,能夠以立體聲(兩個通道)播放Midi聲音和音樂。 聲卡與CD ROM播放器捆綁在一起,可以播放音樂CD。 Sound Blaster的另一個很酷的功能是其15針MIDI /操縱桿多端口,可以連接游戲輸入設備。 如今(將來),聲卡能夠支持環繞聲(3D音頻效果),各種聲音格式,錄制,各種音樂格式,MIDI和混合。 多任務處理使現代計算機能夠在并行軌道上(同時)播放聲音/音樂。

接下來,我們將創建聲音管理器服務,該服務將添加到游戲引擎框架庫( JFXGen )中。

聲音管理員服務

GameWorld類包含諸如精靈管理器和(最近)對SoundManager (單例)實例的引用之類的服務。 聲音管理器服務負責管理游戲的所有聲音效果。 此服務允許開發人員使用loadSoundEffects()方法加載聲音剪輯( AudioClip )。 加載聲音效果后,可以使用映射到聲音的唯一ID(字符串)來檢索每個音頻剪輯。 最后一個方法是shutdown()方法。 退出應用程序時,stop方法將調用GameWorldshutdown()方法,該方法進而調用SoundManager對象的shutdown來清理所有資源。 SoundManager實例具有一個線程池,該線程池可以正常關閉。

注意:為簡潔起見,我設計了SoundManager類,以便在游戲過程中播放簡單的音頻片段,盡管不是音樂。 如果要添加音樂,請參考MediaMediaPlayer API上的JavaDoc。

下面顯示的是SoundManager類圖:

圖2:聲音管理器的類圖

以下是SoundManager類的源代碼:

package carlfx.gameengine;import javafx.scene.media.AudioClip;import java.net.URL; import java.util.HashMap; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors;/*** Responsible for loading sound media to be played using an id or key.* Contains all sounds for use later. *</pre> <pre> * User: cdea*/ public class SoundManager {ExecutorService soundPool = Executors.newFixedThreadPool(2);Map<String, AudioClip> soundEffectsMap = new HashMap<>();/*** Constructor to create a simple thread pool.** @param numberOfThreads - number of threads to use media players in the map.*/public SoundManager(int numberOfThreads) {soundPool = Executors.newFixedThreadPool(numberOfThreads);}/*** Load a sound into a map to later be played based on the id.** @param id - The identifier for a sound.* @param url - The url location of the media or audio resource. Usually in src/main/resources directory.*/public void loadSoundEffects(String id, URL url) {AudioClip sound = new AudioClip(url.toExternalForm());soundEffectsMap.put(id, sound);}/*** Lookup a name resource to play sound based on the id.** @param id identifier for a sound to be played.*/public void playSound(final String id) {Runnable soundPlay = new Runnable() {@Overridepublic void run() {soundEffectsMap.get(id).play();}};soundPool.execute(soundPlay);}/*** Stop all threads and media players.*/public void shutdown() {soundPool.shutdown();}}

如何在JavaFX中播放聲音效果?

在JavaFX 2中,您可以使用AudioClip API以較小的開銷有效地播放小型聲音文件。 該API允許重復播放聲音。 一個例子是玩家射擊武器(按下鼠標左鍵),使激光發出““”的聲音。 說到演示游戲中的激光,我使用了FreeSound.org網站上的免費聲音文件,該文件具有知識共享許可。 由于該文件是wav文件格式,因此它大于所需的大小。 因此,我決定將文件轉換為mp3聲音格式。 我覺得減小文件大小(較小的占用空間)以加快加載速度非常重要。 將文件轉換為mp3聲音格式時,我使用了Sony的Sound Forge軟件。 下面顯示的是播放小型聲音文件的代碼段:

AudioClip sound = new AudioClip('laser.mp3');sound.play();

如何在JavaFX中播放音樂?

盡管SoundManager (我的實現)不播放音樂,但添加功能很容易。 以下代碼段顯示了如何使用MediaMediaPlayer API加載要播放的MP3文件:

Media media = new Media('hymetojoy.mp3');MediaPlayer player = MediaPlayerBuilder.create().media(media).onReady( new Runnable() {@Overridepublic void run() {player.play();}).build();

JavaFX聲音演示

要求

  • Java 7或更高版本
  • JavaFX 2.1或更高版本
  • Windows XP或更高版本(應該很快可用于Linux / MacOS)

一個簡單的小行星類型游戲,名為“ The Expanse”。

說明:

  • 右鍵單擊(在Windows上)以飛船。
  • 鼠標左鍵單擊(Windows鼠標左鍵)開火。
  • 按鍵'2? 變成大型導彈。 (藍色圓形彈丸)
  • 其他按鍵默認為較小的導彈。 (紅色圓形彈丸)
  • 按下空格鍵將切換力場,以保護飛船免受敵人和小行星的傷害。

單擊下面的啟動按鈕以啟動演示:

有用的鏈接

  • Apple] [規格: http : //apple2history.org/history/ah03/
  • 蘋果機上的8位] [: http : //eightbitsoundandfury.ld8.org/programming.html
  • 聲霸卡: http : //en.wikipedia.org/wiki/Sound_Blaster
  • JFXGen: https : //github.com/carldea/JFXGen
  • JavaFX的AudioClip API: http : //docs.oracle.com/javafx/2/api/javafx/scene/media/AudioClip.html
  • 索尼Sound Forge: http : //www.sonycreativesoftware.com/soundforgesoftware
  • Freesound.org: http://www.freesound.org
  • 來自Freesound.org的激光聲音: http ://www.freesound.org/people/THE_bizniss/sounds/39459/
  • 知識共享許可證: http : //creativecommons.org/licenses/sampling+/1.0/
  • 媒體API: http : //docs.oracle.com/javafx/2/api/javafx/scene/media/Media.html
  • MediaPlayer API: http : //docs.oracle.com/javafx/2/api/javafx/scene/media/MediaPlayer.html

參考:來自我們的JCG合作伙伴 Carl Dea的JavaFX 2 GameTutorial第5部分 ,位于Carl's FX Blog博客上。


翻譯自: https://www.javacodegeeks.com/2012/08/javafx-2-gametutorial-part-5.html

javafx2

總結

以上是生活随笔為你收集整理的javafx2_JavaFX 2 GameTutorial第5部分的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。