none
複数のサウンドプレイヤーのセット方法について RRS feed

  • 質問

  • 複数のサウンドプレイヤーのセット方法についてお教えください。

    フォーム上に10個のテキストボックスを設け、そこに音楽ファイルが、music1.wav,music2.wav,・・・・・・music10.wavとしてファイルパスとファイル名が格納されています。
    条件により、この10個の中からファイルを選んで再生したいと考えております。
    ここで、お教えいただきたいのは、10個のサウンドプレイヤーをセットするコードの記述方法についてです。

    1個の場合は、以下のように記述して再生することができましが、10個の複数のプレイヤーをループ文で処理する場合に配列のような形で処理できないかと思っております。

    //1個の場合
    public partial class Form1 : Form
    {
            private System.Media.SoundPlayer player = new System.Media.SoundPlayer();

            private void setButton_Click(object sender, EventArgs e)
    {
                player.SoundLocation = alarmSoundFilename;
                    player.Load();
                    player.Play();

        }
    }

    //複数の場合
    //音楽のファイル(ファイル名は10個を[i]で識別)をセットして、条件によりそのうちのいずれかを再生する
     
    public partial class Form1 : Form
        {
            private System.Media.SoundPlayer player = new System.Media.SoundPlayer();  //(1)

            private void setButton_Click(object sender, EventArgs e)
    {
             for (int i = 0; i < maxindex; i++)
                {
                        player.SoundLocation = alarmdata[i].alarmSoundFilename;                 //(2)
                        player.Load();                                                                     //(3)
        
                        //条件により1~10のいずれかの音楽を再生する
                        if (・・・・・)
                        {
                                player.Play();                 //(4)music1.wavを再生

                        }

                        if (・・・・・)
                        {
                                player.Play();                 //(4)music2.wavを再生

                        }

                   }

            }

     }

    (1)のプレイやの準備方法、(2)左辺の記述方法、(3)及び(4)で再生するプレイヤーを指定する方法についてご教授よろしくお願いします。

    2011年6月30日 7:53

回答

  • 何がわからないのかよくわかりません。

    ・配列という考え方がわからない?
    ・10 個のテキストボックスをループで処理する方法がわからない?
    ・SoundPlayer クラスの配列を作るという発想に至れていない?
    ・条件分岐のうまいやり方がわからない?

    個人的には、SoundPlayer[] players = new SoundPlayer[10]; とか作っといて、players[0] = new SoundPlayer(); players[0].SoundLocation = ...; とかやればよいのではと思うけれども、それで足りますか?

    # 試してません。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク hanahana87 2011年6月30日 16:34
    2011年6月30日 14:31
    モデレータ

すべての返信

  • 何がわからないのかよくわかりません。

    ・配列という考え方がわからない?
    ・10 個のテキストボックスをループで処理する方法がわからない?
    ・SoundPlayer クラスの配列を作るという発想に至れていない?
    ・条件分岐のうまいやり方がわからない?

    個人的には、SoundPlayer[] players = new SoundPlayer[10]; とか作っといて、players[0] = new SoundPlayer(); players[0].SoundLocation = ...; とかやればよいのではと思うけれども、それで足りますか?

    # 試してません。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。
    • 回答としてマーク hanahana87 2011年6月30日 16:34
    2011年6月30日 14:31
    モデレータ
  • お教えいただきましてありがとうございます。

    教えていただきました方法で実現することができました。

    配列を作るということが必要であることはわかりましたが、

    ・SoundPlayer クラスの配列を作るという発想に至れていない?

    というのに、該当すると思います。

     

    SoundPlayer[] players = new SoundPlayer[10];

    をつくり

    players[0] = new SoundPlayer();

    players[0].SoundLocation = ...;

    としなければならないところを

    private System.Media.SoundPlayer players = new System.Media.SoundPlayer();

    SoundPlayer[] players;

    をつくり

    players[0].SoundLocation = ...;

    としていました。

    おかげさまで大変勉強になりました。

    ありがとうございました。

     

     

     

     

    2011年6月30日 16:20