簡體   English   中英

Libgdx播放/暫停音樂

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM