[英]Libgdx play/pause music
我是LibGdx的新手,實際上我正在為Android設備創建一個簡單的Libgdx游戲。
我在LibGdx中遇到播放/暫停音樂問題,這是簡化代碼。
//... @Override public void render(float delta) { //... if(inputHelper.isTouched()){ input.x = inputHelper.getScreenX(); input.y = inputHelper.getScreenY(); camera.unproject(input); if(soundRect.contains(input.x, input.y)){ if(parent.getSound()) parent.pauseBackMusic(); if(!parent.getSound()) parent.playBacMusic(); } } } //... public void pauseBackMusic(){ if(backMusic.isPlaying()){ backMusic.pause(); isSound = false; } } public void playBackMusic(){ if(!backMusic.isPlaying()){ backMusic.play(); isSound = true; } } public Boolean getSound() { return isSound; }
如您在代碼中所看到的,當我觸摸soundRect時,它在pauseBackMusic()和playBackMusic()之間循環。
謝謝。
您的問題是您使用了兩個if語句:
if(parent.getSound()) parent.pauseBackMusic();
if(!parent.getSound()) parent.playBacMusic();
所以第一個陳述是正確的,因為isSound = true
然后在設置isSound = false
此方法中調用方法pauseBackMusic()
然后,您的下一個if語句將測試: !parent.getSound()
這也是正確的,因為: isSound = false
且方法playBacMusic()
設置isSound = true
然后從下一次單擊開始。
使用else if語句代替:
if(parent.getSound()) parent.pauseBackMusic();
else if(!parent.getSound()) parent.playBacMusic();
因此,如果parent.getSound()
為true,則將跳過else if語句,而isSound
仍為false。 並在下次單擊時,只有else if語句為true,音樂將重新打開。
或者在此示例中,您可以僅使用else進行簡化:
if(parent.getSound()) parent.pauseBackMusic();
else parent.playBacMusic();
您可以使用InputProcesser來監聽觸摸事件。 使用此功能,您可以偵聽僅在用戶按下按鈕時調用一次的觸摸事件,這與示例中的恆定循環運行不同。
您可以使用touchDown方法執行此操作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.