*Calendar*
|
*Menu*
|
*BBS*
|
|||||||||||||||||||||||||||||||||||||||||||||||
*Search*
|
2011.04.28 Thu Memo
01 | *STARTFROMHERE |
02 |
buffer 2,,,0
|
03 |
picload "00_00_title.jpg"
|
04 |
gsel 0,2
|
05 |
pos 0,0
|
06 |
gcopy 2,0,0,640,480
|
07 |
gosub *WIPE
|
08 | stop |
09 | |
10 | |
11 | *WIPE |
12 |
px=0 : py=0 : wx=640 : wy=480
|
13 |
gmode 1
|
14 |
redraw 2
|
15 |
color 0:boxf 0,0,wx,wy
|
16 |
gosub *WIPESUB1
|
17 |
pos 0,0:gcopy 2,0,0,wx,wy
|
18 |
wait 100
|
19 |
gosub *WIPESUB2
|
20 | return |
21 |
|
22 | *WIPESUB1 |
23 |
repeat 16
|
24 |
t=cnt
|
25 |
await 30
|
26 |
repeat wx/16
|
27 |
redraw 1,cnt*16+t,0,1,wy
|
28 |
loop
|
29 |
loop
|
30 |
redraw 2
|
31 | return |
32 | |
33 | *WIPESUB2 |
34 |
repeat wx/16+16
|
35 |
t=cnt*16
|
36 |
await 30
|
37 |
repeat 16
|
38 |
redraw 1,t-(cnt*15),0,1,wy
|
39 |
loop
|
40 |
loop
|
41 |
redraw 2
|
42 | return |
buffer
仮想画面を初期化
buffer p1,p2,p3,p4
p1=0~ (0) : ウィンドウID p2=0~(640): 初期化する画面サイズX(1ドット単位) p3=0~(480): 初期化する画面サイズY(1ドット単位) p4=0~1(0) : 初期化する画面モード 指定したウィンドウIDを初期化して使用できるようにする。 メモリ上に仮想画面が作られるだけで、実際の画面には表示されない。 なお、screenで初期化されたウィンドウIDをbuffer命令で再初期化することはできない。 picload
画像ファイルをロード
picload "filename",p1
"filename" : ロードするファイル名 p1=0~1(0) : 画像ロードモード p1の値 モード0:ウィンドウを初期化してロード モード1:現在の画面の上にロード 画像ファイルをロードする。 指定された画像ファイルが現在の画面にロードされ、ウィンドウサイズが自動的に絵のサイズに合わせられる。 p1のロードモードを省略もしくは0にすることで、画像のサイズで初期化したウィンドウにロードされる。 p1にロードモード1を指定することで、現在のウィンドウのサイズなどを一切変更せず指定した座標からロードすることができる。 この場合は、pos命令で指定した座標が左上となる。 picload命令は、screen、buffer、 bgscr命令で初期化された画面に対して実行することができる。 ロード可能なデータ BMP形式 : 拡張子 BMP : Windows標準の4,8,24bitのデータ。(RLE圧縮→○) GIF形式 : 拡張子 GIF : GIF形式のデータ。(アニメーション形式→×) JPEG形式 : 拡張子 JPG : JFIF標準のJPEGデータ。(グレイスケール→○) ICO形式 : 拡張子 ICO : Windows標準のICO形式のアイコンデータ。 gsel
描画先指定、ウィンドウ最前面、非表示設定
gsel p1,p2
p1=0~(0) : ウィンドウID p2=0~2(0) : ウィンドウアクティブスイッチ p2の値(省略可) -1 : 指定したウィンドウを非表示にする 0 : 指定したウィンドウに特に影響はない 1 : 指定したウィンドウがアクティブになる 2 : 指定したウィンドウがアクティブになり、さらに常に最前面になる 画面制御命令の描画先を指定したウィンドウIDの画面に変更する。 これ以降は、p1で指定したウィンドウIDの画面に対して、mes命令やpicload命令などの画面描画に関する命令が実行されるようになる。 gcopy
画面コピー
gcopy p1,p2,p3,p4,p5
p1=0~(0) : ウィンドウID p2=0~(0) : コピー元の左上X座標 p3=0~(0) : コピー元の左上Y座標 p4=0~ : コピーする大きさX(ドット単位) p5=0~ : コピーする大きさY(ドット単位) 指定したウィンドウIDの画面の一部を、現在の描画先カレントポジションにコピーする。 コピー元のウィンドウIDは、自分のウィンドウIDと同じかまたは、screen命令やbuffer命令で初期化されたウィンドウIDでなければならない。 gcopy命令でコピーする場合は、gmode命令によってコピーするモードをいくつか選ぶことができる。 gcopy命令でパレットモード画面の画像をコピーする際の注意
gosub
指定ラベルにサブルーチンジャンプ
gosub *label
*label : ラベル名 *labelで指定した場所にサブルーチンジャンプをする。 その後、return命令があるとgosub命令の次の行に復帰して実行を続ける。 gosub~returnは最大32重までネスティングが可能。 stop
プログラム中断
stop
プログラムの実行を一時中断する。ボタンがクリックされるまで待つ時などに使用する。 pos
カレントポジション設定
pos p1,p2
p1=0~ : カレントポジションのX座標 p2=0~ : カレントポジションのY座標 メッセージ表示、オブジェクトの表示などの基本座標となるカレントポジションの座標を指定。 Xは一番左が0に、Yは上が0になり、1ドット単位の指定になる。 パラメータの省略をすると、現在の値が使われる。 gmode
画面コピーモード設定
gmode p1,p2,p3,p4
p1=0~6(0) : 画面コピーモード p2=0~(32) : コピーする大きさX(ドット単位) p3=0~(32) : コピーする大きさY(ドット単位) p4=0~256(0) : 半透明合成時のブレンド率 gcopyで使用されるモードおよび、サイズ、ブレンド率などを設定する
redraw
画面コピー
redraw p1,p2,p3,p4,p5
p1=0~3(1) : 描画モードの設定 p2=0~(0) : 再描画する左上X座標 p3=0~(0) : 再描画する左上Y座標 p4=0~(0) : 再描画する大きさX(ドット単位) p5=0~(0) : 再描画する大きさY(ドット単位) 画面の描画モードを指定する。
描画モード0で画面内に画像をコピーしたり、メッセージを表示しておいて、最後にモード1にすることで画面の書き換えのちらつきをなくしスムーズに見せることができる。 モード1を指定した場合は即座に画面の更新を行う。 モード値に2を足した値を指定すると、描画モードのみを変更し画面の更新はされない。 また、p2~p5までのパラメータにより、画面の一部だけを再描画させることが可能。通常は省略すれば、全画面の更新を行なう。 color
カラー設定
color p1,p2,p3
p1,p2,p3=0~255(0) : 色コード(R,G,Bの輝度) メッセージ表示、描画などの色を指定した値に設定する。 p1,p2,p3がそれぞれ、R,G,Bの輝度になる。 0が最も暗く、255が最も明るい。 color 0,0,0 は黒に、color 255,255,255 は白になる。 パレットモードの画面では、指定した色に一番近いパレットが選択される。 boxf
矩形を塗りつぶす
boxf p1,p2,p3,p4
p1=0~(0) : 矩形の左上X座標 p2=0~(0) : 矩形の左上Y座標 p3=0~ : 矩形の右下X座標 p4=0~ : 矩形の右下Y座標 画面上に、 (p1,p2)と(p3,p4) を左上、右下の点として、現在の描画色で矩形(四角形)を塗りつぶす。 (p1,p2)を省略した場合は、画面の左上(0,0)が設定される。 (p3,p4)を省略した場合は、画面の右下(描画サイズいっぱいまで)が設定される。 (つまり、全パラメータを省略すると全体塗りつぶしになる) wait
実行を一定時間中断する
wait p1
p1(100) : 待ち時間(10ms単位) プログラムの実行を一定時間だけ中断する。 p1に待ち時間の長さを指定します。単位は10ミリ秒になる。(1ミリ秒=1/1000秒) CPUの速度に関係なく、どんな機種でも同じ待ち時間になる。 await命令を使うとwait命令よりも高精度で細かいウエイトが可能だが、wait命令よりもCPUのタスクを消費する。 リアルタイムに画像を書き換えるなどの処理でなければ、 wait命令を使用した方がCPU(Windows)の負担が軽くなる。 常にデスクトップに配置するようなアクセサリにはwait命令を、ゲームアプリケーションなどにはawait命令を使うといった使い分けをするとよい。 HSPでは、他のWindowsタスクに処理時間を渡すために長い時間ループが起こる可能性がある場所にはwaitかawait命令を入れることを推奨。 waitや await命令がない命令の中を長い時間ループするようなプログラムを実行すると、ウィンドウをドラッグしにくくなったり、他のタスクに移るのに時間がかかったりする。 return
サブルーチンから復帰
return p1
p1 : システム変数代入値 gosub命令やユーザー定義命令などで呼び出しされたサブルーチンを終了する。return命令により、スタックを戻し呼び出し元に復帰する。 p1を指定することにより、サブルーチンから値をシステム変数に反映させることができる。 p1に数値を指定した場合には、システム変数statに代入される。 p1に文字列を指定した場合には、システム変数refstrに代入される。 p1に実数値を指定した場合には、システム変数refdvalに代入される。 p1の指定を省略した場合には、システム変数の代入は行なわれない。 repeat
ループの始まりの場所を示す
repeat p1,p2
p1=1~(-1) : ループ回数 p2=0~(0) : システム変数cntのスタート値 repeat~loopの間をくり返し実行する。 repeat命令は、くり返しの開始地点を示す。 repeat命令のパラメータ、p1でくり返しの回数を指定することができる。回数の指定を省略、またはマイナス値を指定すると無限ループになる。 繰り返しの回数が0の場合は、繰り返し部分は実行されず対応する loop命令までジャンプする。 repeat~loopを含む部分をさらにループさせるネスト構造も記述することができる。ただし、正常にloop命令を通ってループしないで抜けたりすると、ネスト構造がおかしくなるのでループから強制的に抜けるような構造にはしないようにする。 ループ回数を調べたい時や、カウンターを利用したい時のためにシステム変数cntを参照することができる。cntは通常、0からスタートして、 loop命令でループするたびに1づつ増えていく 。 ただし、repeat命令のp2でカウンタがスタートする数値を変更することも可能。たとえば、repeat 3,1 のように指定した場合には、変数cntの値は1,2,3の順で変化する。 ループの内部で、強制的にループを抜け出す場合には、 break命令を使用する。また、ループをやり直すためのcontinue命令も用意されている。 loop
ループの始まりに戻る
repeat命令で指定したループの終わりを指定する。
|
||
PR
*この記事にコメントする*
*この記事へのトラックバック*
トラックバック先URL :