HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2020
0304
HSP初心者MP3の再生終了を待つには?6解決


HSP初心者

リンク

2020/3/4(Wed) 21:06:01|NO.89625

HSP初心者です。
リストボックスを2つ設置して、それぞれ選択されている音声を順番に流したいのですが、
ボタンを押すと、二つ同時に流れてしまいます。
1つ目リストボックスの音声を再生後、2つ目のリストボックスの音声を再生するには、
どうしたら良いでしょうか?

また、mmloadやmmplayで行ったところ、重いようで応答なしになってしまうので、
dmmという命令を使用しました。

よろしくお願いします。


screen 0,270,250

 title "音楽再生"

#include "hgimg3.as"
 dmmini
 dmmload "a.wav",0,2
 dmmload "b.wav",1,2
 dmmload "c.wav",2,2
 dmmload "d.wav",3,2
 dmmload "e.wav",4,2
 dmmload "f.wav",5,2


pos 0,0
objsize 100,80
listbox g,100,"a\nb\nc"

pos 100,0
objsize 170,80
listbox h,100,"d\ne\nf"



objsize 100, 48
 pos 0,200
button "再生", *saisei


*saisei

if g = 0{
dmmplay a
}

if g = 1{
dmmplay b
}

if g = 2{
dmmplay c
}

if h = 3{
dmmplay d
}

if h = 4{
dmmplay e
}
if h = 5{
dmmplay f
}

stop



この記事に返信する


あらや

リンク

2020/3/4(Wed) 21:53:54|NO.89626

たぶんここで掲載するためにソースを書いた時に間違えたのだと思いますが、
おかしな所を先に指摘させていただきます。

*saiseiで

 〜省略〜
dmmplay a
 〜省略〜
dmmplay b
 〜省略〜

と書いていますが、
ファイル名やリストボックスで同じ文字を使っているのでわかりにくくなっていますが、
変数a〜fには何も数値を入れていないので全て0です。

つまり、リストボックスで何を選んでいても再生されるのは
サウンドIDが0の"a.wav"だけです。

ロードするときにでも変数a〜fにそれぞれ数値を入れておきましょう。

dmmload "a.wav",0,2: a = 0; dmmload "b.wav",1,2: b = 1; dmmload "c.wav",2,2: c = 2; dmmload "d.wav",3,2: e = 3; dmmload "e.wav",4,2: f = 4; dmmload "f.wav",5,2: g = 5;


次に、同じく*saiseiで

if h = 3{
 〜省略〜
if h = 4{
 〜省略〜
if h = 5{
 〜省略〜

1つめのリストボックスと2つめのリストボックスは
それぞれ個別のインデックスを持つので、
gもhも0〜2の範囲の数値になります。

よって、3〜5になる事は無いので下記のように修正しましょう。

if h = 0{ dmmplay d } if h = 1{ dmmplay e } if h = 2{ dmmplay f }




そして本題ですが、1つ目を再生した後に
dmmstatで再生中フラグを確認し、
再生中フラグが0になってから2つ目の再生を行なうとすれば解決するかと思います。



HSP初心者

リンク

2020/3/5(Thu) 00:19:32|NO.89627

ご返信ありがとうございます!

dmmstatという命令はどのように書けばよいのてしょうか?

何度も申し訳ありません。
よろしくお願いします。



あらや

リンク

2020/3/5(Thu) 00:36:32|NO.89628

エディタでF1キーを押してください。。。



HSP初心者

リンク

2020/3/5(Thu) 15:01:50|NO.89629

ありがとうございます。

dmmstat a,0,16と指定したのですが、
再生フラグが0になってから2つ目に進むソースとは、どのようになるのでしょうか?

度々申し訳ございません。よろしくお願いいたします。



あらや

リンク

2020/3/5(Thu) 18:03:10|NO.89630

待機の一例として、こんな感じにすると出来ます。
詳細はコメントを読んで下さい。


*saisei // 1つ目のファイル再生 if g = 0{ dmmplay a SoundID = a; // 再生するサウンドIDを記録(aの場合) } if g = 1{ dmmplay b SoundID = b; // 再生するサウンドIDを記録(bの場合) } if g = 2{ dmmplay c SoundID = c; // 再生するサウンドIDを記録(cの場合) } repeat// 無限ループで待機 dmmstat status, SoundID, 16; // 再生中フラグの取得 if( status == 0 ) : break; // 再生中フラグが0(停止)ならばループから抜ける await 10; // 長時間ウェイト無しでループすると『応答なし』になってしまうので念のためにウェイトを入れておく loop ;wait 100; // 1つ目の再生と2つ目の再生間で無音の時間が欲しい場合は、このようにウェイトを入れる // 2つ目のファイル再生 if h = 0{ dmmplay d } if h = 1{ dmmplay e } if h = 2{ dmmplay f } stop



HSP初心者

リンク

2020/3/5(Thu) 19:03:02|NO.89632

この度は、ご親切にありがとうございました!
できるようになりました。他にもいろいろ作ってみようと思います。
ありがとうございました!



ONION software Copyright 1997-2023(c) All rights reserved.