プレイヤー

MCI命令を駆使(?)してマルチメディアプレイヤーを作ってみましょう。

スクリーンショットは次の通り。

とりあえずいつものように基本部分だけを設計していきましょう。

mci命令部分はTIPSの画像・サウンド編にありますのでとりあえずはソチラをご覧ください。

	screen 0,250,43
	title "ultimate player(ぉ"
	objsize 200,25
	button"曲選択",select
	font "Webdings",16
	objmode 2
	objsize 25,25
	pos 200,0 : button "4",play
	pos 225,0 : button ";",tempstop

*main
	mci "status music length"
	len=stat+2 ; 準備がまだなら-1が返ってくる為最低でも1にする
	mci "status music position"
	now=stat+2 ; 準備がまだなら-1が返ってくる為最低でも1にする
	redraw 0
	color 255,255,255 : boxf 0,25,winx,winy : color ,,200
	ichi=winx-18*now/len+1
	if now==len : condition=0 ; シーケンスの終端まで来たら未再生状態にする
	if condition=0 : ichi=1 ; デバイス準備できてないかシーケンス再生終了なら■の描画位置を初めにする
	pos ichi,24 : mes "g"
	redraw
	await 1
	goto *main

*select
	mci "close music" ; とりあえずデバイスを閉じておく
	dialog "",16
	name=refstr
	goto *main

*play
	mci "open \""+name+"\" alias music"
	mci "set music time format milliseconds"
	mci "seek music to start" ; シーケンスの初めから再生する
	mci "play music"
	condition==1 ; 再生状態にする
	goto *main

*tempstop
	if condition==1 : mci "stop music" : else : mci "play music"
	condition=3-condition ; 状態が1(再生中)なら2(一時停止)に、2なら1にする
	goto *main

コレで基本部分が完成しましたね。

button "4",play」や「button ";",play」は文字化け・間違ってると思うかもしれません。

アレは間違ってもバグでもありません。フォント書体が「Webdings」となっていますよね。

Webdings書体で「4」は「4」になり、「;」は「;」になります。

他にもこういうものが使用できます。

	3 → 3
	5 → 5
	6 → 6
	7 → 7
	8 → 8
	9 → 9
	: → :
	U → U
	V → V
	X → X ※IE以外のブラウザではきちんと表示されないことがあるかも

このフォントはどのパソコンにも初めから入っている書体ですのであまり気にせず使用していいかと思います。

 

このままではあまりに芸がないので現在の再生時間と

D&Dで再生位置を示すつまみの移動を可能にして再生位置を変更するというのをしてみましょう。

	screen 0,250,44
	title "ultimate player ver1.10"
	objsize 200,25
	button"曲選択",select
	font "Webdings",16
	objmode 2
	objsize 25,25
	pos 200,0 : button"4",play
	pos 225,0 : button";",tempstop

*main
	mci "status music length"
	len=stat
	mci "status music position"
	now=stat+1
	redraw 0
	color 255,255,255 : boxf 0,25,winx,winy : color ,,255
	ichi=winx-19*now/len+1
	if now==len : condition=0 : now=0
	if condition=0 : ichi=1
	font "MS ゴシック",18,1
	pos ichi,26 : mes "■"
	stick k,,1
	if k==256 : goto *move
	gosub *mestime
	redraw
	await 1
	goto *main

*select
	mci "close music"
	dialog "",16
	name=refstr
	goto *main

*play
	mci "open \""+name+"\" alias music"
	mci "set music time format milliseconds"
	mci "seek music to start"
	mci "play music"
	condition=1
	goto *main

*tempstop
	if condition==1 : mci "stop music" : else : mci "play music"
	condition=3-condition
	goto *main

*mestime
	color 255
	mm=now/60000 : str mm,2 ; 分の部分取り出し
	ss=now/1000\60 : str ss,2 ; 秒の部分取り出し
	ms=now\1000 : str ms,3 ; ミリ秒の部分取り出し
	font "MS ゴシック",12
	pos winx-50/2,28 : mes ""+mm+":"+ss+"."+ms
	int mm : int ss : int ms
	return

*move
	mx=mousex : my=mousey
	if mx<ichi|(ichi+16<mx)|(my<26)|(winy-2<my)|(condition=0) : goto *main
	mx=ichi-mousex ; ドラッグした位置と現在地の差
	repeat
	 redraw 0
	 color 255,255,255 : boxf 0,25,winx,winy : color ,,255
	 new=mx+mousex
	 if new<2 : new=1
	 if winx-19<new : new=winx-19
	 pos new,26 : mes "■"
	 redraw
	 wait 1
	 stick k,256,1
	 if k!=256 : break
	loop
	ichinew=new*len/(winx-19)
	mci "seek music to "+ichinew
	mci "play music"
	goto *main

講座ではここまでしかしませんが、複数曲再生できるようにしてループ再生したり、

前回のランチャーのようにファイルのD&Dに対応し登録できるようにしてみてはどうでしょう。

スクリプトがほしい方はコチラからどうぞ。