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


HSPTV!掲示板


未解決 解決 停止 削除要請

2008
1012
DoSraccHSP3.1で、プレイリスト作成6解決


DoSracc

リンク

2008/10/12(Sun) 09:43:02|NO.20051

おはようございます。

早速質問なのですが、

自作したメディアプレイヤーに、プレイリストを入れたいと思っています。
ですが、ヘルプを見ても知識のない私にはとても難しくて、困っています。
そこで、掲示板の皆様のお力をおかし願えないかと、掲示板に書きこまさせていただきました。
あまりHSPには詳しくないので、できるだけ砕いて教えて下さると大変助かります。
では、お願いします。



この記事に返信する


inovia

リンク

2008/10/12(Sun) 10:42:04|NO.20054

プレイリストってこんな感じでしょうかな?
わざわざ再生ボタンを押さなくても
リスト内でENTERキーが押された場合でも、自動的に再生するオマケつき。
適当に参考にしてください。

リストの削除方法は、notedelでできるはずです。
そのあと必ずobjprm実行ね。


fullpath="":filepath="" //onclick *read onkey *read//キーが押されたときに強制的にジャンプ button "追加",*add button "再生",*pl button "停止",*st pos 320,0 objsize 320,480 listbox list,,"" listid=stat//listboxのobjidが代入される stop *add dialog "mpg;*.avi;*.gif;*.wmv;*.asf;*.3gp;*.mp4;*.mp3;*.wma;*.wav;*.flv;*.tta",16,"動画など" if stat=0:stop fname=refstr notesel fullpath//フルパスを管理する fullpath+=""+fname+"\n" notesel filepath//ファイル名だけのを作る。これをlistboxに表示する filepath+=""+getpath(fname,8)+"\n" objprm listid,filepath//変更した内容を反映 stop *pl mci "close all"//念のため、全クリア file="" notesel fullpath//フルパス取得 noteget file,list//変数listはlistboxの選択された数値 mci "open \""+file+"\" alias f" mci "play f repeat" title ""+file stop *st mci "stop f" mci "close f"//閉じる stop *read objsel -1//アクティブなオブジェクトID取得 actobj=stat if actobj!=listid:stop//オブジェクトがアクティブでないと停止 if wparam=13{//ENTERキーでなければ停止 goto *pl//再生用の旗に戻る } stop



DoSracc

リンク

2008/10/12(Sun) 11:42:14|NO.20055

ありがとうございます。
こういうのを望んでいました・・・
しかし、自分のプレイヤーと合わせようとするとどうしてもうまくいかなくて、どこに何を追記すればいいのかわからなくて・・・
できれば、下記のソースに inovia様が作成なさったプレイリストのソースをうまくくっつけてはいただけないでしょうか?
わがままを言って、申し訳ございません。

*f
title "DoSracc Media Player." screen 0,330,100,0 color 0,0,0 boxf 0,330,330,0 onexit goto*ss objsize 113,20 button "File Load",*fl font "Webdings",25 objmode 2,0 pos 113,0 objsize 107,20 button gosub "4",*oky pos 219,0 objsize 111,20 button gosub ";",*oky2 pos 113,20 objsize 107,20 button gosub "<",*s_top font "" objmode 2,0 pos 0,20 objsize 113,20 button gosub "version Info",*ver pos 219,20 objsize 111,20 button gosub "End of Software",*ss stop *ss end *oky2 mci "pause music" return *ver dialog {" 現在バージョンは、2.001(β)です。 "},0, "Version Info" if file=1 :goto *f stop *oky color 0,0,0 : boxf 0,330,330,0 fn = ""+getpath(fname,9)+"" pos 0,50 color 255,255,255 font "MS ゴシック",12 mes "ファイル名:" pos 65,50 mes fn fn2 = ""+getpath(fname,2)+"" pos 0,62 font "MS ゴシック",12 mes "  形式  :" pos 65,62 mes fn2 fn3 = ""+getpath(fname,0)+"" pos 0,74 font "MS ゴシック",12 mes "ファイルサイズ :" pos 65,74 exist fname mes strsize : pos 120,74 : mes"B(バイト)" pos mci "play music" return *s_top mci "stop music" mci "close all goto *f return *odfs goto *fl *fl mci "close all dialog "mp3;*wav;*wma;*avi;*mid;*asf;*wmv;*mpg",16,"AudioFile" if stat=0 : goto *f fname=refstr mci "open \"" + fname + "\" alias music":if stat=-1:end mci "status music length":m_length=stat objsize 320,60 repeat mci "status music position" wait 1 loop stop

では、お願いします。



inovia

リンク

2008/10/12(Sun) 15:14:31|NO.20059

えらく長くなりましたが、こんな感じかな?
再生時間をタイトルバーに「分:秒」で表示するオマケつきです。(^o^)丿


fullpath="":filepath="" onkey *read//キーが押されたときに強制的にジャンプ *f tt="DoSracc Media Player." title tt screen 0,330,100,0 color 0,0,0 boxf 0,330,330,0 onexit goto*ss objsize 113,20 button "File Load",*fl//読み込み font "Webdings",25 objmode 2,0 pos 113,0 objsize 107,20 button "4",*oky//再生 pos 219,0 objsize 111,20 button ";",*oky2//一時停止 pos 113,20 objsize 107,20 button "<",*s_top//停止 font "" objmode 2,0 pos 0,20 objsize 113,20 button "version Info",*ver//バージョン pos 219,20 objsize 111,20 button "End of Software",*ss//終了 screen 1,160,180,8 title "プレイリスト" pos objsize 160,180 listbox list,,"" listid=stat//listboxのobjidが代入される gsel 0,1 stop *fl dialog "mp3;*wav;*wma;*avi;*mid;*asf;*wmv;*mpg",16,"AudioFile" if stat=0:stop fname=refstr notesel fullpath//フルパスを管理する fullpath+=""+fname+"\n" notesel filepath//ファイル名だけのを作る。これをlistboxに表示する filepath+=""+getpath(fname,8)+"\n" gsel 1,0 objprm listid,filepath//変更した内容を反映(WindowID=1) gsel 0,0 if pflag=1:goto *mainloop//再生中のときは戻る stop *oky if flag=1:mci "play music repeat":pflag=1:goto *mainloop file="" notesel fullpath//フルパス取得 noteget file,list mci "close all"//念のため、全クリア mci "open \"" + file + "\" alias music":if stat=-1:stop mci "status music length":m_length=stat nagasa=m_length/1000 if nagasa/60>0:n_fun=nagasa/60:n_byo=nagasa\60:else:n_byo=nagasa:n_fun=0 if n_byo<10:n_byoz="0"+n_byo:n_byo=n_byoz color 0,0,0 : boxf 0,330,330,0 fn = ""+getpath(file,9)+"" pos 0,50 color 255,255,255 font "MS ゴシック",12 mes "ファイル名:" pos 65,50 mes fn fn2 = ""+getpath(file,2)+"" pos 0,62 font "MS ゴシック",12 mes "  形式  :" pos 65,62 mes fn2 fn3 = ""+getpath(file,0)+"" pos 0,74 font "MS ゴシック",12 mes "ファイルサイズ :" pos 65,74 exist file mes strsize : pos 120,74 : mes"B(バイト)" pos mci "play music repeat":pflag=1 goto *mainloop *oky2 mci "pause music" flag=1//一時停止フラグ pflag=0//再生中フラグ stop *s_top mci "stop f" //mci "seek music to 0"//シークして位置を0にする mci "close music" flag=0//一時停止フラグ解除 pflag=0//再生中フラグ title tt stop *ver dialog {" 現在バージョンは、2.001(β)です。 "},0, "Version Info" if pflag=1:goto *mainloop//再生中のときは戻る stop *ss end *read objsel -1//アクティブなオブジェクトID取得 actobj=stat if actobj!=listid:stop//オブジェクトがアクティブでないと停止 if wparam=13{//ENTERキーでなければ停止 goto *oky//再生用の旗に戻る } if pflag=1:goto *mainloop//再生中のときは戻る stop *mainloop mci "status music position" ps=stat imano=stat/1000 if imano/60>0:{ i_fun=imano/60 i_byo=imano\60 }else{ i_byo=imano:i_fun=0 } wait 5 if i_byo<10:title tt+" "+i_fun+":0"+i_byo+"/"+n_fun+":"+n_byo:goto *mainloop title tt+" "+i_fun+":"+i_byo+"/"+n_fun+":"+n_byo goto *mainloop stop



inovia

リンク

2008/10/12(Sun) 15:49:02|NO.20061

先ほどのソースにバグがありました。

mci "open \"" + file + "\" alias music":if stat=-1:stop
の次の行に必ずこれ

mci "set music time format milliseconds"
をいれてください。AVIファイルなどでは、ファイルのフレーム数を取得してしまう為です。



たこ

リンク

2008/10/12(Sun) 15:52:26|NO.20062

inoviaさん優しすぎますよ。



DoSracc

リンク

2008/10/12(Sun) 20:03:57|NO.20080

>>inovia様
ありがとうございます!
こんなに優しいお方が居るとは思いませんでした。
これからも、困ったことがあったら書き込むかもしれませんので、
そのときはよろしくおねがいします。

>>たこ様
inovia様は本当にお優しいお方ですよね。



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