| クライアントエリア/カレントポジション |
|
前章で“クライアントエリア”という部分が出てきました。
ウィンドウ内の、この赤く塗った部分がクライアントエリアです。 基本的にプログラマは、クライアントエリアに様々な機能やグラフィックスなどを追加していきます。 言うなれば、プログラマの有効フィールドです。
HSPが自動的に作成してくれるウィンドウは、x = 640, y = 480 のサイズです。 このサイズはウィンドウ全体のサイズではなく、クライアントエリアのサイズです。 クライアントエリアの左上が ( 0, 0 ) から始まるので、右下は ( 639, 479 ) になるわけです。 (ウィンドウのサイズは変えることもできます) mes命令やboxf命令、circle命令などは、全てこのクライアントエリアに描画します。 例えば、 mes "今、どこにいる?" と書くと、HSPは左上の ( 0, 0 ) の場所から、描画することになります。
ところで、 mes "ここは1行目" mes "ここは2行目" と書くと、"ここは1行目" と表示し、その下に移動してから、"ここは2行目" と表示します。
今ままでは当然のように感じましたが、よく考えてみれば変ですよね。
このように重なって表示される気もします。 これはHSPが、カレントポジション[current position]という概念を持っている為です。 (カレントポジションとは日本語で、“現在地”という意味です) つまり、クライアントエリア内で、HSPは“次にどこから描画するのか”ということを覚えているのです。 そして、mes命令は表示後に、自動的に次の行へカレントポジションを移動します。 ですので、連続で使用しても、重なって表示されることはないわけです。 注意点としては、カレントポジションは全ての命令に影響するわけではない、ということです。 boxf命令やcircle命令などは、開始点と終了点を指定するので、カレントポジションに影響されることはなく、 またカレントポジションに影響を与えることはありません。 少し難しいと思いますので、使いながら慣れていきましょう。 |