libgdx学习记录15——音乐Music播放
背景音乐是游戏中必备的元素,好的背景音乐能为游戏加分不少,使人更容易融入到游戏的氛围中去。
Music类中主要有以下函数:
play()播放
stop()停止
pause()暂停
setVolume()设置音量
setLooping()是否循环播放
代码示例:
1 package com.fxb.newtest; 2 3 import com.badlogic.gdx.ApplicationAdapter; 4 import com.badlogic.gdx.Gdx; 5 import com.badlogic.gdx.audio.Music; 6 import com.badlogic.gdx.audio.Sound; 7 import com.badlogic.gdx.graphics.Color; 8 import com.badlogic.gdx.graphics.GL10; 9 import com.badlogic.gdx.scenes.scene2d.Actor; 10 import com.badlogic.gdx.scenes.scene2d.InputEvent; 11 import com.badlogic.gdx.scenes.scene2d.InputListener; 12 import com.badlogic.gdx.scenes.scene2d.Stage; 13 import com.badlogic.gdx.scenes.scene2d.ui.Label; 14 import com.badlogic.gdx.scenes.scene2d.ui.Skin; 15 import com.badlogic.gdx.scenes.scene2d.ui.Slider; 16 import com.badlogic.gdx.scenes.scene2d.ui.Table; 17 import com.badlogic.gdx.scenes.scene2d.ui.TextButton; 18 import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener; 19 20 public class Lib015_Music extends ApplicationAdapter{ 21 22 Music music; 23 Sound sound; 24 25 Skin skin; 26 Stage stage; 27 State state; 28 29 enum State{ music_play, music_stop, music_pause }; 30 31 @Override 32 public void create() { 33 // TODO Auto-generated method stub 34 super.create(); 35 36 music = Gdx.audio.newMusic( Gdx.files.internal( "audio/xjwq.mp3" ) ); 37 music.setLooping( true ); 38 music.setVolume( 0.5f ); 39 //music.play(); 40 41 stage = new Stage(); 42 skin = new Skin( Gdx.files.internal( "skin/uiskin.json" ) ); 43 final TextButton buttonStop = new TextButton( "Stop", skin ); 44 TextButton buttonPlay = new TextButton( "Play/Pause", skin ); 45 46 state = State.music_stop; 47 buttonStop.setDisabled( true ); 48 buttonStop.addListener(new InputListener(){ 49 public boolean touchDown(InputEvent event, float x, float y,int pointer, int button) { 50 // TODO Auto-generated method stub 51 return true; 52 } 53 public void touchUp(InputEvent event, float x, float y,int pointer, int button) { 54 // TODO Auto-generated method stub 55 if( state != State.music_stop ){ 56 music.stop(); 57 state = State.music_stop; 58 buttonStop.setDisabled( true ); 59 System.out.println( "stop" ); 60 } 61 } 62 }); 63 64 buttonPlay.addListener(new InputListener(){ 65 public boolean touchDown(InputEvent event, float x, float y,int pointer, int button) { 66 // TODO Auto-generated method stub 67 return true; 68 } 69 public void touchUp(InputEvent event, float x, float y,int pointer, int button) { 70 // TODO Auto-generated method stub 71 if( state == State.music_play ){ 72 music.pause(); 73 state = State.music_pause; 74 System.out.println( "pause" ); 75 } 76 else{ 77 music.play(); 78 state = State.music_play; 79 buttonStop.setDisabled( false ); 80 System.out.println( "play" ); 81 } 82 //(state==State.music_play)? music.pause(): music.play(); 83 } 84 }); 85 86 87 final Slider slider = new Slider( 0, 100, 1, false, skin ); 88 slider.addListener(new ChangeListener(){ 89 public void changed(ChangeEvent event, Actor actor) { 90 // TODO Auto-generated method stub 91 music.setVolume( slider.getValue()/100 ); 92 } 93 }); 94 95 slider.setValue( 50 ); 96 Table table = new Table(); 97 table.defaults().space(5); 98 99 table.row(); 100 table.add( new Label( "Music Play", skin ) ).colspan(2).expandX(); 101 table.row(); 102 table.add( slider ).colspan(2).expandX(); 103 table.row(); 104 table.add( buttonPlay ).minWidth(100); 105 table.add( buttonStop ).minWidth(100); 106 table.pad( 10 ); 107 table.pack(); 108 table.setBackground( skin.newDrawable( "white", Color.PINK ) ); 109 110 stage.addActor( table ); 111 table.setPosition( stage.getWidth()/2-table.getWidth()/2, stage.getHeight()/2-table.getHeight()/2 ); 112 Gdx.input.setInputProcessor( stage ); 113 } 114 115 @Override 116 public void render() { 117 // TODO Auto-generated method stub 118 super.render(); 119 120 Gdx.gl.glClearColor( 1, 1, 1, 1 ); 121 Gdx.gl.glClear( GL10.GL_COLOR_BUFFER_BIT ); 122 123 stage.act(); 124 stage.draw(); 125 } 126 127 @Override 128 public void dispose() { 129 // TODO Auto-generated method stub 130 music.dispose(); 131 super.dispose(); 132 } 133 134 }
运行效果:
中间滑动条是调节音量的,左下是播放暂停键,右下是停止键。
另外Sound与Music类似。