我是 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()之间循环。
2 回答
![?](http://img1.sycdn.imooc.com/545867790001599f02200220-100-100.jpg)
摇曳的蔷薇
TA贡献1793条经验 获得超6个赞
你的问题是你使用了两个 if 语句:
if(parent.getSound()) parent.pauseBackMusic();
if(!parent.getSound()) parent.playBacMusic();
所以第一条语句是正确的,因为isSound = true
然后你pauseBackMusic()在你设置的这个方法中调用方法isSound = false
然后你的下一个 if 语句测试:!parent.getSound()这也是真的,因为:isSound = false和方法playBacMusic()集isSound = true
下次单击时它会从头开始。
改用 else if 语句:
if(parent.getSound()) parent.pauseBackMusic();
else if(!parent.getSound()) parent.playBacMusic();
所以如果parent.getSound()是真的 else if 语句将被跳过并且isSound仍然是假的。并且在下一次单击时,只有 else if 语句为真,音乐将重新打开。
或者在这个例子中,你可以只使用 else 来简化:
if(parent.getSound()) parent.pauseBackMusic();
else parent.playBacMusic();
![?](http://img1.sycdn.imooc.com/545850a00001fdd002200220-100-100.jpg)
Helenr
TA贡献1780条经验 获得超4个赞
添加回答
举报
0/150
提交
取消