Major Softwares

  INDEX PAGE

  1. 簡介
  2. Java, Android和LibGDX好書推介
  3. Java, Android和LibGDX要學的知識
  4. 用Windows寫Java程式
  5. 用Eclipse寫Java程式
  6. 用Eclipse寫Android程式
  7. 用Eclipse寫LibGDX程式
  8. Standard Java Naming Conventions
  9. System.out.println()的用法和意思
  10. Where is main() method in Android?

LibGDX - Splash & Menu Screen

  1. LibGDX: World, Texture, Background, Camera, Viewport, Screen & OpenGL
  2. LibGDX: Texture, TextureRegion, SpriteBatch & Sprite
  3. UML(Unified Modeling Language): Class Diagram
  4. Type Casting, Upcasting & Downcasting
  5. @Override的用法和意思
  6. LibGDX: Scene2d & Graphical User Interface(GUI)
  7. LibGDX: Splash Screen
  8. LibGDX: Texture Packer
  9. LibGDX: BitmapFonts, JSON & Skin
  10. Android: R.java File
  11. Android: onClick事件的5種實現方式
  12. LibGDX: Game Menu Screen
  13. LibGDX: Advanced Game Menu Screen (using Abstract Screen)
  14. LibGDX: Disposable Interface
  15. Java & LibGDX: super keyword
  16. LibGDX: Advanced Game Menu Screen (using AssetManager)
  17. Java: Array, Arrays, List, ArrayList & LibGDX: Array
  18. LibGDX: File I/O (Preferences)
  19. LibGDX: Game Level Selection Screen
  20. LibGDX: Advanced Game Level Selection Screen (using AssetManager)

LibGDX - Tiled 2D Platform Game

  1. LibGDX: Lifecylce (Render() Method)
  2. LibGDX: Delta Time
  3. LibGDX: Animation & Spritesheet
  4. LibGDX: Keyboard, Mouse & Touch Screen Control
  5. Input Control (Polling VS Event Driven Input)
  6. LibGDX: Tiled (Background and Foreground)
  7. LibGDX: Jumping Action
  8. LibGDX: Tiled (Collision Detection)
  9. LibGDX: Tiled (Bullet Class)
  10. LibGDX: Audio (Sound & Music)
  11. LibGDX: Tiled (Scrollable Background with Camera & HUD)
  12. LibGDX: WorldController & WorldRenderer Class

LibGDX/Java - Card Game No.1 - Blackjack

  1. LibGDX: Install & Setup Android Studio IDE
  2. LibGDX: Use Android Studio to Run Java Hello World
  3. LibGDX: Use Android Studio to Run LibGDX Hello World
  4. Adobe Illustrator: Basic Components Part 1
  5. Adobe Illustrator: Basic Components Part 2
  6. Adobe Illustrator: BlackJack Table & Cards
  7. LibGDX: Blackjack Animation
  8. LibGDX: Interpolation
  9. Java: toString() Method
  10. Java: Blackjack Shuffle Methods
  11. LibGDX: Blackjack Shuffle Method
  12. Java: Blackjack Card Game

LibGDX - Others

  1. Making and Displaying App Icon
  2. LibGDX: Displaying Traditional and Simplified Chinese Characters
  3. LibGDX: Handling Different Screen Resolutions

Unity Game Engine & C#

  1. Visual Studio: C# Hello World
  2. Unity: C# Hello World
  3. Unity: Handling Different Screen Resolutions
  4. Unity: Life Cycle
  5. Unity: StartCoroutine, StopCoroutine, IEnumerator & Yield
  6. Unity: Splash Screen
  7. Unity: Fonts, Traditional and Simplified Chinese Characters
  8. Unity: GameObject, Class Object, new & Instantiate
  9. Unity: Start Screen with Glowing Animated Button
  10. Unity: C# Get & Set Modifier
  11. Unity: Delegates & Events
  12. Unity: File I/O, Read & Write Text File & PlayerPrefs
  13. Unity: Game Level Selection Screen
  14. Unity: Game Menu Screen & ScreenManager
  15. Unity: Encrypt and Decrypt Text File
  16. Unity: Options Menu Screen
  17. Unity: Convert Numbers Image to Custom Font

Unity - Card Game No.1 - Blackjack

  1. Unity: Blackjack Card Game - Part 1 (Full Game)
  2. Unity: Blackjack Card Game - Part 2
  3. Unity: Blackjack Card Game - Part 3
  4. Unity: Blackjack Card Game - Part 4
  5. Unity: Blackjack Card Game - Part 5
  6. Unity: Blackjack Card Game - Part 6
  7. Unity: Blackjack Card Game - Part 7

以下是預告-Coming soon!


Secret Weapon No.1

  1. Unity: Card Game No.2

Advanced Programming

  1. Unity: GPS Programming
  2. Unity: User Login System
  3. Unity: Augmented Reality (AR)

Secret Weapon No.2

  1. Unity: GPS & AR Application

第40節 - LibGDX: Audio(Sound & Music)

這一節我會介紹LibGDX遊戲的Audio System (Background Music & Sound Effect),我在第39節 - LibGDX: Tiled (Bullet Class)介紹過如何加入發射子彈的方法,這一節會加入背景音樂和發射子彈的音效。

UML - Class Diagram

以下是主程式(MyDemo40.java)加入Bullet.java、BackgroundSound.java和GunSound.java的Class Diagram:

LibGDX: Tiled 2D Platformer Game(Audio: Sound & Music)
  1. MyDemo40是Class,Bullet、BackgroundSound和GunSound是Class(傳入MyDemo40內用),所以它們的關係是Association。

執行結果:

以下是 LibGDX: Audio(Sound & Music)程式執行的結果:


背景音樂(Background Music)

BackgroundSound.java

以下是BackgroundSound.java輸出的背景音樂:


以下是BackgroundSound.java的程式碼:

LibGDX: Tiled 2D Platformer Game(Audio: Sound & Music)
  1. 首先在BackgroundSound類別的Constructor內,把bgsound1.mp3傳入Sound物件(sound)內。

  2. 建立一個playSound()方法,用sound.loop()方法重複播放背景音樂,音量是0至1,0.5f代表設定音量為一半。

發射子彈音效(Gun Sound Effect)

GunSound.java

以下是GunSound.java輸出的子彈音效:


以下是GunSound.java的程式碼:

LibGDX: Tiled 2D Platformer Game(Audio: Sound & Music)
  1. 首先在GunSound類別的Constructor內,把gun1.mp3傳入Sound物件(sound)內。

  2. 建立一個playSound()方法,用sound.play()方法播放發射子彈音效,音量是0至1,0.5f代表設定音量為一半。

    注意,發射子彈音效不須要重複播放,所以我們不用sound.loop()方法。

2) MyDemo40.java新加入部分

以下部分會列出在MyDemo40.java程式新加的部分,如下圖:

LibGDX: Tiled 2D Platformer Game(Audio: Sound & Music)
  1. 建立bgSound1和gunSound1變數(Variable)。

  2. 在create()方法內建立BackgroundSound()物件(bgSound1),並重複播放背景音樂。

    再建立GunSound()物件(gunSound1),但不須要播放發射子彈的音效。

  3. 別忘記呼叫dispose()方法,執行bgSound1.sound.dispose();和gunSound1.sound.dispose(); 釋放資源。

  4. 在keyDown()執行gunSound1.playSound()方法播放發射子彈的音效。

LibGDX程式

例子1 - LibGDX: (Audio: Sound & Music)

這個例子會用LibGDX示範Sound & Music Class:

DesktopLauncher.java

LibGDX: Tiled 2D Platformer Game(Audio: Sound & Music)
  1. DesktopLauncher是PC Desktop的Starter Class,我們在DesktopLauncher內設定顯示的大小為1024 X 768 px。

LibGDX: Tiled 2D Platformer Game(Audio: Sound & Music)
  1. 把bgsound1.mp3和gun1.mp3儲存到Android的Assets文件夾內(/sound/...)。

Bullet.java

LibGDX: Tiled 2D Platformer Game(Audio: Sound & Music)
  1. 首先在Bullet類別的Constructor內,把bulletPosition和bulletVelocityX傳入。

    bulletPosition就是主角hero1的子彈發射位置。

  2. 建立一個update()方法,把子彈的位置加上bulletVelocityX傳入的數值。

BackgroundSound.java

LibGDX: Tiled 2D Platformer Game(Audio: Sound & Music)
  1. 首先在BackgroundSound類別的Constructor內,把bgsound1.mp3傳入Sound物件(sound)內。

  2. 建立一個playSound()方法,用sound.loop()方法重複播放背景音樂,音量是0至1,0.5f代表設定音量為一半。

GunSound.java

LibGDX: Tiled 2D Platformer Game(Audio: Sound & Music)
  1. 首先在GunSound類別的Constructor內,把gun1.mp3傳入Sound物件(sound)內。

  2. 建立一個playSound()方法,用sound.play()方法播放發射子彈音效,音量是0至1,0.5f代表設定音量為一半。

    注意,發射子彈音效不須要重複播放,所以我們不用sound.loop()方法。

MyDemo40.java

LibGDX: Tiled 2D Platformer Game(Audio: Sound & Music)
  1. 建立bgSound1和gunSound1變數(Variable)。

  2. 在create()方法內建立BackgroundSound()物件(bgSound1),並重複播放背景音樂。

    再建立GunSound()物件(gunSound1),但不須要播放發射子彈的音效。

  3. 別忘記呼叫dispose()方法,執行bgSound1.sound.dispose();和gunSound1.sound.dispose(); 釋放資源。

  4. 在keyDown()執行gunSound1.playSound()方法播放發射子彈的音效。

執行程式:

LibGDX: Tiled 2D Platformer Game(Audio: Sound & Music)

以下是LibGDX: Tiled (Bullet Class)程式執行的結果:


Download above code and sample pictures here!