** 内容はSRC2.2.33のものです **
PaintStringコマンド
文字列を表示
書式
PaintString [x y] message
指定項目説明
x表示領域のX座標(ピクセル)
y表示領域のY座標(ピクセル)
message表示する文字列
解説
マップウィンドウに文字列message を表示します。表示位置はx y に座標を指定して行います。座標に「-」(半角文字)を指定すると画像がそれぞれの座標の中心に表示されます。なお、マップウィンドウのサイズは480×480です。表示位置を省略した場合は直前にPaintStringコマンドで書き込んだ文字列の下にmessage が表示されます。
x y で指定された座標は描き込み先画面の左上隅が(0,0)になるように計算されますが、システム変数BaseX,BaseYの値を変更することで基準位置を変更することが可能です。詳しくは変数のページを参照してください。
PaintStringコマンドで表示する文字のフォントや表示方法を変更するにはFontコマンドを使います。Fontコマンドを使わなかった場合、「MS P明朝、16pt、Bold、白色」のフォントが使われます。
PaintStringコマンドで描画した文字はそのままでは表示されません。Refreshコマンドを用いて画面を更新し、表示してください(Fontコマンドで背景オプションを指定した場合はRedrawコマンド)。これはPaintPictureコマンドやPaintStringコマンドを連続して使用したときに画面の更新を一度で済ませ、画面のちらつきを防ぐための仕様です。
なお、Refreshコマンドの替わりにWaitコマンドを使っても画面更新が行われます。用途に応じて使い分けるといいでしょう。
PaintStringコマンドで描画した文字を消すには
・ClearPictureコマンドで描画した文字を消去する
・Redrawコマンドでマップを再描画する
・Clsコマンドでマップウィンドウの表示内容を消去する
の3種類の方法があります。通常はClearPictureコマンドを使って下さい。
message に指定した文字列の中にはTalkコマンドと同様、「$(式)」の形で式をそのまま記述することができます(message 全体を「”」でくくる必要がない)。
message を書きこんだ後、PaintStringコマンドは自動的に改行を行います。改行を行わないようにするにはmessage の後に「;」を付け加えてください。
PaintStringコマンドは文字表示の際にフォントスムージングを行います。このため、大きなサイズのフォントの縁は滑らかに表示されます。なお、フォントスムージングの適用が開始されるフォントサイズはフォントによって異なります。また、フォントスムージングが適用されるのはTrueTypeフォントのみです。
PaintStringコマンドとFontコマンドを組みあわせて文字が徐々に表示、あるいは消えていくような処理を行う場合は必ずFadeInコマンド、FadeOutコマンド、WhiteInコマンド、WhiteOutコマンドを使うか、下の例のようにWaitコマンドを使ってウェイト処理を行ってください。PaintStringコマンドで文字を表示するだけではウェイト処理が行われないため、環境によって表示時間が変わってしまう等の問題が発生してしまいます。
例
#フォントサイズ・種類を変更
Font 24pt Pゴシック Regular
#フェードインしながら1秒間かけてメッセージを表示
#ウェイトの同期処理を開始
Wait Start
For i = 1 To 20
#色を変更
Font RGB(4 \* i, 8 \* i, 12.5 \* i)
#メッセージを表示
PaintString - 200 "A long time ago in a galaxy far,"
PaintString "far away ...."
#画面を更新
Refresh
#ウェイト処理
Wait Until (0.5 \* i)
Next
#デフォルトのフォントに戻しておく
Font
例2
Call TypeWrite 100 100 "消えた海賊船を追え!"
# ルパン3世オープニング風タイプライターメッセージ
# (X座標, Y座標, メッセージ)
TypeWrite:
Local i
#メッセージの書きこみ位置を設定
PaintString Args(1) Args(2) "";
For i = 1 To Len(Args(3))
#タイプ音を鳴らす
PlaySound Type.wav
#改行を行わずにメッセージを1文字だけ書き込む
PaintString Mid(Args(3),i,1);
#ウェイト処理とともに画面を更新し、書き込んだ文字を表示
Wait 1
Next
Wait 2
Return