タイマーループの始まりの場所を示す
timer_repeat p1,p2,p3,p4
(プラグイン / モジュール : mod_TimerRepeat)
p1で指定したミリ秒の間隔で、timer_repeat〜timer_loopの間をくり返し実行します。 スクリプト処理としては、timer_repeat〜timer_loop間は一度無視されてtimer_loop以降がすぐに実行されて行きます。 timer_repeat〜timer_loop間は後にタイマーが発動されてから処理されることになります。 通常のrepeatとは違い、間にwait,await命令を書いてはいけません。 timer_repeat命令のパラメータp2でくり返しの回数を指定することができます。回数の指定を省略、またはマイナス値を指定すると無限ループになります。 ループ回数を調べたい時や、カウンターを利用したい時のためにシステム変数timer_cntを参照することができます。timer_cntは通常、0からスタートして、 timer_loop命令でループするたびに1づつ増えていきます。 timer_repeat命令のp3でカウンタがスタートする数値を変更することも可能です。 ループの内部で、強制的にタイマーを終了させる場合には、 timer_break命令を使用してください。また、ループをやり直すためのtimer_continue命令も用意されています。 同一のタイマーループが既に実行中の場合、重複されないようになっています。 この処置は p4 で変更できます。
タイマーループで使う変数の初期化処理用のtimer_initと、ループ回数の最後だけ(またはtimer_killしたときに)実行するtimer_deinitも用意されています。 また、timer_repeat〜timer_loop間はuniq_start,uniq_endを使用しなくてもuniq()変数が使用できます。
基本的にtimer_repeatは何もしなくても指定した時間ごとに自動で実行されます。(オート) ただし、事前にtimer_setTimerEngineでマニュアル指定することで実行タイミングをコントロールすることができます。 これによって、await 16(60FPS)等でループしていた場合に、隙間で勝手に実行されるのを防ぐことができます。 タイマーの実行はループの中にtimer_fireを組み込んでください。 指定時間になったもの(超えたもの)があるか確認して必要なものだけ実行します。 タイマーの実行タイミング(timer_setTimerEngine)はtimer_repeat1つ1つに対して指定することができます。
timer_cntの値と連動した繰り返し間隔の変更ができます。 配列の終わりまで行くとまた最初から繰り返します。 例) 配列の要素が3 の場合 cnt : 0 → 1 → 2 → 3 → 4 → 5 → … 配列: 0 → 1 → 2 → 0 → 1 → 2 → … アニメーションで各フレームの待機時間が異なるようなときにお使いください。 ループの内部でtimer_intervals変数を使うと、timer_repeat の p1配列 を参照できます。
#include "../mod_TimerRepeat.hsp" // 並行処理1(これらのtimer_repeat内処理は一度スルーされ、続けてtimer_loop以下が処理されます。) pos 50,30 : mes "並行1:40ms毎" timer_repeat 40 ; 40ミリ秒ごとに実行 color 255,255,255 : boxf 50,50,150,150 : color 255,0,0 line 100,100,100+(sin(M_PI*timer_cnt/10)*50),100+(cos(M_PI*timer_cnt/10)*50) pos 100,100 : mes ""+timer_cnt timer_loop // 並行処理2 pos 250,30 : mes "並行2:60ms毎" timer_repeat 60 ; 60ミリ秒ごとに実行 color 255,255,255 : boxf 250,50,350,150 : color 0,0,255 line 300,100,300+(sin(M_PI*timer_cnt/36)*50),100+(cos(M_PI*timer_cnt/36)*50) pos 300,100 : mes ""+timer_cnt timer_loop // メインのループプログラム(タイトルバーでカウント) repeat title "メイン: count= "+cnt await 1000 loop
04.timer_repeatによる並行処理.hsp | #include "../mod_TimerRepeat.hsp" 並行処理1(これらのtimer_repea.. |
05.timer_repeatの精度.hsp | #include "../mod_TimerRepeat.hsp" *start t = timer_getT.. |
06.timer_easeの種類.hsp | title "flg="+flg+" "+typeName(flg) : mes typeName(flg) .. |
07.timer_repeat/timer_easeの応用.hsp | #include "../a2d+AlphaLayer.hsp" #include "../mod_Timer.. |
10.GIFアニメ表示.hsp | #include "../a2d+AlphaLayer.hsp" #include "../mod_Timer.. |
11.1枚のPNGファイルでアニメーション.hsp | #include "../a2d+AlphaLayer.hsp" #include "../mod_Timer.. |
13.レイヤードウィンドウでアニメーション.hsp | #include "../a2d+AlphaLayer.hsp" #include "../mod_Timer.. |
14.(TimerRepeat_ver2.5)uniq2でひとつ外側を取得.hsp | #include "../mod_TimerRepeat.hsp" randomize font msgoth.. |
EX1.スライドインメニュー【timer_repeat内に別のtimer_repeatを記述】.hsp | #include "../a2d+AlphaLayer.hsp" #include "../mod_Timer.. |
EX2.ADVゲーム画面(だけ)【アルファレイヤーの中に子アルファレイヤーを作る】.hsp | #include "../a2d+AlphaLayer.hsp" #include "../mod_Timer.. |
EX3.(HSP3Dish-TimerRepeat)ブロック崩し【timer_setTimerEngineマニュアル】.hsp | title "ブロック崩し" buffer 1,x2,y2 メニュー薄膜用のバッファ gsel 0 cls 4.. |
EX4.Floppy-Word【アルファレイヤー/タイマーリピート利用ミニゲーム】.hsp | #include "hsptvapp.as" GitHubからモジュールを取得。 #include "../a.. |
EX5.スライダーオブジェクト.hsp | #include "../a2d+AlphaLayer.hsp" #include "../mod_Timer.. |
プラグイン / モジュール | mod_TimerRepeat |
バージョン | 2.5 |
作成日 | 2024/1/5 |
著作者 | MIZUSHIKI |
URL | http://suwa.pupu.jp/ |
備考 | mod_TimerRepeat.hspをインクルードすること。 |
タイプ | 拡張命令 |
グループ | プログラム制御命令 |
対応環境 | ・Windows 版 HSP |