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


HSPTV!掲示板


未解決 解決 停止 削除要請

2015
1018
pumpkin曲の長さの分だけ待つ4解決


pumpkin

リンク

2015/10/18(Sun) 21:51:13|NO.72369

//曲を選択、両端に「"」をつける
dialog "",16 music="\""+refstr+"\"" //曲全体の長さ mci "status "+music+" length" mes "曲の長さ = "+(stat/1000/60)+"分"+(stat/1000\60)+"秒 ("+(stat/1000)+"秒)" //待ち時間10msの時の、リピート回数 time=(stat/10) mes "\nリピートを "+time+"回する(待ち時間10ms)" //曲を再生 mci "open "+music+"" mci "play "+music+"" mes "music stat" repeat time await 10 loop mes "music stop"
http://hsp.tv/play/pforum.php?mode=all&num=72189 で教えていただいたやり方なんですが
曲の長さを取得、再生、その長さの分だけ待ってから「music stop」の文字を表示させようと思ったのですが
実行してみると、曲が終わるのより少し遅れてから文字が表示されます




この記事に返信する


pumpkin

リンク

2015/10/18(Sun) 21:58:08|NO.72370

タグミスってますね…見にくくなってすみません

ちなみに
//曲を選択、両端に「"」をつける
dialog "",16 music="\""+refstr+"\"" //曲全体の長さ mci "status "+music+" length" mes "曲の長さ = "+(stat/1000/60)+"分"+(stat/1000\60)+"秒 ("+(stat/1000)+"秒)" //待ち時間10msの時の、リピート回数 time=stat mes "\n"+time+"ミリ秒待つ //曲を再生 mci "open "+music+"" mci "play "+music+"" mes "music stat" await time mes "stop"
repeat使わず、単純に長さの分だけ待つ方法だと正常にできました。
ただ、曲を流しつつ画面をリアルタイムに書き換えたいので
曲が終わるまでずっと待ってるようだと使えないですからね…

なんとか正常になるように出来ないんですか?



totori

リンク

2015/10/18(Sun) 22:11:38|NO.72371

MCIでnotifyフラグを付ければ、再生終了時に通知してくれます。
http://quasiquote.org/hspwiki?MCI%A4%C7%B7%AB%A4%EA%CA%D6%A4%B7%BA%C6%C0%B8

上のサンプルでは再生終了時に通知を受け取って、もう一度再生しています。



暇人

リンク

2015/10/18(Sun) 23:09:35|NO.72372

音ゲーで使うなら今現在の再生位置を取得した方が良いと思う

//曲を選択、両端に「"」をつける dialog "mp3",16 music="\""+refstr+"\"" //曲全体の長さ mci "status "+music+" length" endtime=stat mes "曲の長さ = "+(stat/1000/60)+"分"+(stat/1000\60)+"秒 ("+(stat/1000)+"秒)" //曲を再生 mci "open "+music+" type mpegvideo alias m" if stat<0 {mci "open "+music+" type mpegvideo2 alias m"} mci "play m" mes "music start" repeat await 10 mci "status m position" title ""+stat if stat>=endtime {break} loop mes "music stop"



pumpkin

リンク

2015/10/20(Tue) 21:21:05|NO.72402

ありがとうございます、仕組みなども一通り理解できました。
暇人さん>音ゲーではなく、こういうのが作りたかったんです

#define MM_MCINOTIFY    0x03B9
#define MCI_NOTIFY_SUCCESSFUL 1 oncmd gosub *mcify, MM_MCINOTIFY //音楽ファイルを開く dialog "",16 mci "open \""+refstr+"\" alias music1" dialog "",16 mci "open \""+refstr+"\" alias music2" dialog "",16 mci "open \""+refstr+"\" alias music3" //変数にあらじかめ数を入れて置く sm=1 //選択music smz=2 //選択musicの保存 repeat redraw 0 //スペースキー or 曲終了でsm変更 stick key if key&16 : sm=sm+1 if sm=4 : sm=1 color 255,255,255 : boxf //smzを使い、smが変更されたか調べる if sm!smz : gosub *play smz=sm color 255,0,0 : pos 0,0 mes "スペースキーor曲終了 で曲変更" color 0,0,0 mes "選択中のmusic(変数sm) = "+sm mes "key = "+key mes "wparam = "+wparam redraw 1 wait 1 loop *play mci "stop all" mci "play music"+sm+" from 0 notify" return *mcify if wparam & MM_MCINOTIFY { sm=sm+1 if sm=4 : sm=1 } return



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