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


HSPTV!掲示板


未解決 解決 停止 削除要請

2012
0329
名前はもうない1秒を正確に図るには?5未解決


名前はもうない

リンク

2012/3/29(Thu) 18:26:04|NO.45617

現在、HSPでパラパラマンガを作っています。

1秒間に30コマ表示したいのですが、await 33とやっても、かなりズレが発生してしまいます。

どうすれば正確に1秒間に30コマ表示できるのでしょうか?
やり方など、詳しく教えて下さいm(__)m

↓ここにソースコード書いときます。

a=1//コマが1から始まるので、ここで1にしとかないとファイルがありませんとエラーが出る repeat//ループ notesel buf//ここから noteload ""+a+"コマ.txt" font "MS Pゴシック", 10, 1 mes buf//ここまで、コマを読み込んで表示。 a+1//次のコマを読み込むため。 await 33 //1秒間に30コマ。でも実際やると結構ズレがある・・・・ title ""+a+""//ウインドウのタイトルにコマ数を表示 cls//1度消す loop//ループ



この記事に返信する


check

リンク

2012/3/29(Thu) 18:45:20|NO.45619

clsやtitle、noteloadなど重い命令をループにはさんでいるから、
どうしても遅れが発生するんじゃないのか。

先に必要なデータを読み込んでおいて、noteloadの必要はなくし、
clsはredrawとcolor、boxfに代えたほうがいい。



名無し

リンク

2012/3/29(Thu) 18:53:00|NO.45621

ありがとうございます。とりあえずいまからやってみます。



(´ω`)

リンク

2012/3/29(Thu) 19:28:42|NO.45623

あっ( ゚ω゚ )やってみるのか……


……まあ、書いてしまったのでサンプル置いておきますね。リアルタイムゲームの骨子です。
ミソはGetTickCountでカウンタ値の取得をしているとこ。カウンタ処理が単純に作れるのでオススメ。
PC起動後49.7日間経過したらバグりますけどね。(u´ω`)


#uselib "kernel32.dll" #func global GetTickCount "GetTickCount" font "MS ゴシック", 14 GetTickCount prems = stat : rp = 0 *main redraw 0 // 描画停止 // ここから書き換え処理を書く (33ms以内で処理を終わらせること) // 以下3行はサンプル color 255,255,255 : boxf 0,0,640,16 color 0,0,0 : pos 0,0 : mes str(gettime(6)) : repeat rp : pos 30+rp*16,0 : mes "●" : loop rp += 1 : if rp > 29 : rp = 0 // 処理ここまで repeat await 1 GetTickCount nowms = stat if nowms > prems + 33 { prems += 33 // 現在のtickcountに+33すると誤差がどんどん広がるのでこうする break } loop redraw 1 // 描画内容が反映される goto *main



名無し

リンク

2012/3/29(Thu) 19:46:05|NO.45625

おお!ソースコードまでありがとうございます><是非参考にさせていただきますm(__)m



Dangerous scripts

リンク

2012/3/30(Fri) 15:58:19|NO.45653

Dangerous scriptsに戻りました
解決したことにしてないですよ。



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