基礎講座U

基本構成
表示系を扱う為の手順は、

O環境でオブジェクト生成
G環境でオブジェクトの配置を組む

これだけです!そしてG環境での配置の際、オブジェクトの動作バリエーションを指定することも出来ます。簡単に言うと、まず舞台に登場させる役者や舞台セットを決めて、次にそれらを舞台の上に配置させる。おまけに、監督が指示を出して演技させる、という感じです。

環境設定O
環境設定"O"を用いてオブジェクトを生成します。作成できるオブジェクトは、

(1)文字
(2)文字ブロック
(3)矩形領域
(4)ビットマップ
(5)ビットマップタイル
(6)画像
(7)画像タイル

の7種類です。(数字はオブジェクトタイプの番号です)

O環境の使い方を例を見ながら軽く理解しましょう。Oの後に数字を0から順につけていき個別のオブジェクトを生成していきます。この数字をオブジェクトナンバーといいます。

O0[3:96,14,700]
O1[1:SMML]
O2[1:Fishbone]

環境Oの内容は、セミコロン:を挟んで、オブジェクトタイプ番号とオブジェクト内容(複数引数)を指定します。上記の例では、オブジェクト0は矩形領域で、サイズ96×14、背景色が赤(700)のものを生成します。オブジェクト1は文字データで、「SMML」という内容のものを生成します。ここで生成されるオブジェクトは、例えばボールの絵だったらボールの形のオブジェクト、という風にはなりません。四角い領域(下図)を自身の表示領域として持つことになります。この四角い表示領域をオブジェクトフィールドと呼びます。

┌―――┐
| 文字┌――┐
└――-| 絵 |
    └――┘

上図は、文字オブジェクト、画像オブジェクトを画面上に配置した例ですが、それぞれがオブジェクトフィールドを持っています(※実際は枠線は非表示)。オブジェクトフィールドのサイズはオブジェクトがちょうど入るサイズの大きさです。

さて、役者はそろいました。表示させてみましょう!

環境設定G
環境Gでは、「どのオブジェクトを、どれだけの期間、どこに」表示させるかをOコマンドで記述します。引数はオブジェクトナンバー, 表示期間, 表示位置(X,Y)になります。時間は音長式、座標は自然数で指定します。これも例を見て理解しましょう。

G[
 O0,1,0,0
 O1,2,50,50
 R4
 O2,2,100,100
]

この例ではO0、O1は同時に表示され、4(分休符)時間後、O2が表示されます。そして、O1、O2、O0の順で画面から消えていきます。なぜなら、再生開始から表示終了するまでの時間はそれぞれ、

O1 = 2
O2 = 2+4
O0 = 1

だからです。ちなみに、オブジェクトは表示するごとに前にディスプレイ上に上書きしていきます。つまり、後に登場する役者ほど舞台前に前にと配置させていくわけです。以後、このディスプレイ上での仮想的な前、後を「奥行き」という概念を用いて説明します。

透明色
オブジェクトを次々に表示していくと、奥のオブジェクトは手前のものに隠れて見えなくなってしまいます。

┌―――┐
| 文字┌――┐
└――-| ♪ |
    └――┘

例えば、手前の画像オブジェクトの背景色が赤だとします。そこで「透明色=赤」と定義すると、赤は使えなくなりますが、赤く塗りつぶされている部分は透明となり、後ろの文字オブジェクトが見えるようになります。

┌―――┐
| 文字 |
└―――┘♪

透明色定義の重要な点は、背景色を透明にする、と考えるのではなく、透明化する色を定義する、という点にあります。そのため、リンゴとトマトが描かれた画像の透明色を「赤」とした場合、リンゴとトマトが描かれたオブジェクトフィールドは透けて見える、ということになります。その背後に緑色の矩形領域オブジェクトフィールドをもってくると、まだ熟してないリンゴとトマトが見えるわけです(笑)

初期設定では透明色は N=010 が設定されています。

ビットマップ
画像オブジェクトには、一般的なPNG/JPEG等の汎用画像、そして白黒2色のドットで描かれたビットマップと呼ばれる画像の2種類存在します。普段、メールを打つ時に表示される文字なんかは白黒ですよね?あれが、ビットマップと考えていいです。それに対して汎用画像はいわば、2色以上の色を使った画像、つまり絵文字とか写メールの画像だと考えてください。通常画像とビットマップはいずれも画像ですが、オブジェクトを表示する際の表示パラメタとの連携はそれぞれ異なります。ビットマップは文字オブジェクトと同様の扱いです。画像中で黒い部分が文字色(ID=10)、白い部分が文字背景色(ID=14)に対応しています。ID=11,15についても同様。それに対し通常画像は指定可能な表示パラメタは透過色のみです。ID=10〜15は関係ありません。