簡體   English   中英

結合多個相同的Java函數

[英]Combine multiple identical java functions

非常愚蠢的問題。 我已經習慣了php。

我聲明了多個android MediaPlayer對象。 基於按下的按鈕,我想在它們之間切換。 我目前有3個相同的功能-像這樣...

public void playSound3() throws IOException {
     if(sound3.isPlaying()) {
        sound3.stop();
        sound3.reset();
     }
}

這被稱為playSound3()

我想將其組合為playSound(1),但在MediaPlayer對象的情況下卻無法弄清楚該如何做。

任何幫助將不勝感激。

將聲音作為參數傳遞。

 // Not sure what type your sound is.
public void playSound(MediaPlayer sound) throws IOException {
     if(sound.isPlaying()) {
        sound.stop();
        sound.reset();
     }
}

嘗試這個:

public void playSound(MediaPlayer sound) throws IOException
{
    if(sound.isPlaying())
    {
        sound.stop();
        sound.reset();
    }
}

然后

playSound(sound1);
playSound(sound2);
&c

如果確實需要將參數設為int,則可以將MediaPlayer對象放入數組中:

public void playSound(int n) throws IOException {
    static MediaPlayer[] mediaPlayers = {sound0,sound1,sound2,sound3};

    if (n >= 0 && n < mediaPlayers.length) {
        MediaPlayer mp = mediaPlayers[n];
        if(mp.isPlaying()) {
            mp.stop();
            mp.reset();
        }
    }
}

創建一個類似的界面

public Interface IMySoundPlayer {
    void playSound() throws IOException;
}

創建一個表示接口對象的數組並填充它

IMySoundPlayer[] soundPlayers = new IMySoundPlayer[] { new SoundPlayer(sound1), new SoundPlayer(sound2), new SoundPlayer(sound3) };

隨着SoundPlayer的發展,

public class SoundPlayer implements IMySoundPlayer {
    private MediaPlayer mBackend;

    public SoundPlayer(MediaPlayer backend) {
        mBackend = backend;
    }

    public void playSound() throws IOException {
        if(mBackend.isPlaying()) {
            mBackend.stop();
            mBackend.reset();
        }
    }
}

使用整數或其他方案在3個實例之間旋轉,並在每個實例上調用playSound

如果您需要更多指導,請發表評論。

免責聲明

我已經做到了這一點,沒有測試(甚至沒有語法)。

使用某種列表或數組來存儲您的MediaPlayer對象,然后使您的方法將MediaPlayer作為其參數。 然后,您可以將數組所需的任何元素傳遞給單個方法。

MediaPlayer[] players = {sound1, sound2, sound3};

public void playSound(MediaPlayer sound) throws IOException {
     if(sound.isPlaying()) {
         sound.stop();
         sound.reset();
     }
}

// Call method using sound1
playSound(players[0]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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