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


HSPTV!掲示板


未解決 解決 停止 削除要請

2007
1220
polenta単語帳の作成について5解決


polenta

リンク

2007/12/20(Thu) 10:52:29|NO.12850

hspの初心者です。
勉強用に単語帳ソフトを作成しています。
基本的に、テキストファイルに保存した文字が順番に表示されるように作成しました。
現在、自動的に、文字が切り替わるようになっています。
一時停止、再生の機能を付けたいのですが、方法がわかりません。
教えていただけると幸いです。
参考までに、スクリプトを以下に記述します。


cls width 600, 150 notesel buf noteload "001.txt" repeat 100 color 255, 255, 200: boxf noteget a,cnt*2 pos 125,20:color 100,100,100:font msgothic,22,1:mes a wait 150 noteget a,1+cnt*2 pos 125,60:color 100,100,100:font msgothic,35,1:mes a wait 200 loop stop

その他、単語帳作成についての、アドヴァイスなどがあれば、よろしくお願いします。



この記事に返信する


Kpan

リンク

2007/12/20(Thu) 21:32:29|NO.12851

ループにrepeat命令は使わないで、ラベル+goto命令でループする形にする。

そして、たとえば、停止ボタンならstop、再開ボタンならそのループへgotoで
飛ばせばいいんじゃないでしょうか。



polenta

リンク

2007/12/21(Fri) 10:57:33|NO.12858

返答ありがとうございました。
しかしながら、お恥ずかしい話ですが、未だに、問題を解決することができていません。
私は、hspの超初心者で、ホームページなどに掲載されたスクリプトをコピー・ペーストして、何とか、質問欄に掲載した単語帳を作成しました。
しかし、ほとんど、hspについて理解していないので、Kpanさんの返答を読んでも問題を解決することができませんでした。

goto を使って、以下のように変更したのですが、テキストに保存してある1行目と2行目が繰り返して表示されてしまいます。テキストにある3行目、4行目、、、の文字を表示するにはどうすればよいのでしょうか?

repeatを使ったままで、一時停止、再生を命令するのは難しいのでしょうか?


*main cls width 600, 150 notesel buf noteload "001.txt" color 255, 255, 200: boxf noteget a,cnt*2 pos 125,20:color 100,100,100:font msgothic,22,1:mes a wait 150 noteget a,1+cnt*2 pos 125,60:color 100,100,100:font msgothic,35,1:mes a wait 200   goto *main stop



root

リンク

2007/12/21(Fri) 13:17:32|NO.12860

Kpanさんの方法とは少し違いますが、サンプルを作ってみました。
再生中かどうかをループの中で判断して処理を分岐させています。

#const INTERVAL 1000 ; millisecond sdim buf, 64 notesel buf noteload dirinfo(1) +"\\readme.txt" lineMax = noteinfo(0) button gosub "play", *set_state button gosub "pause", *set_state prevMsec = gettime(7) enable = 1 color : boxf : color ,$ff repeat msec = gettime(7) if enable { if msec < prevMsec : count += 1000 count += msec - prevMsec title "wait for "+ (INTERVAL - count) +" msec." if count >= INTERVAL { if lineNumber <= lineMax { noteget lineBuf, lineNumber lineNumber++ mes "> "+ lineBuf count = 0 } else { color $ff : mes "> [EOF]" : break } } } prevMsec = msec wait 1 loop stop *set_state enable = stat ^ 1 return



FN

リンク

2007/12/21(Fri) 20:18:28|NO.12864

Kpanさんのやり方はこんな感じですかね・・・


cls width 600, 150 button "開始", *btn notesel buf noteload "001.txt" stop *main color 255, 255, 200: boxf noteget a,count*2 pos 125,20:color 100,100,100:font msgothic,22,1:mes a wait 150 noteget a,1+count*2 pos 125,60:color 100,100,100:font msgothic,35,1:mes a wait 200 count++ if count<=100 { goto *main } stop *btn if state=0 { title "再生中" objprm 0, "一時停止" state = 1 goto *main } else { title "一時停止中" objprm 0, "再開" state = 0 stop }



polenta

リンク

2007/12/22(Sat) 09:08:04|NO.12869

いろいろな、方法があるものだなぁと感心しています。
昨日の夕方、rootさんのサンプルを参考に、何とか、自分流の単語帳を完成させ
ました。
しかし、しっかり機能するようにはなったのですが、rootさんのサンプルは、初
心者の私には、まだまだ、難解で、スクリプトの意味は、ほとんど理解できませ
んでした。
とはいえ、問題が解決したので、お礼を書こうと、掲示板をのぞくと、gotoを使
ったFNさんの投稿がありました。
簡略で、非常にわかりやすいスクリプトなので、これを使わせてもらいます。
ありがとうございました。



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