|
|
2008/10/12(Sun) 09:43:02|NO.20051
おはようございます。
早速質問なのですが、
自作したメディアプレイヤーに、プレイリストを入れたいと思っています。
ですが、ヘルプを見ても知識のない私にはとても難しくて、困っています。
そこで、掲示板の皆様のお力をおかし願えないかと、掲示板に書きこまさせていただきました。
あまりHSPには詳しくないので、できるだけ砕いて教えて下さると大変助かります。
では、お願いします。
|
|
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
|
|
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
では、お願いします。

| |
|
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

| |
|
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さん優しすぎますよ。
|
|
2008/10/12(Sun) 20:03:57|NO.20080
>>inovia様
ありがとうございます!
こんなに優しいお方が居るとは思いませんでした。
これからも、困ったことがあったら書き込むかもしれませんので、
そのときはよろしくおねがいします。
>>たこ様
inovia様は本当にお優しいお方ですよね。
|
|