Top
Ruby
Material
Tkool
Infomation
Links
Mail

MENU

◆ RGSS素材
自動バックアップ
数字キャッシュ化
イベントコマンドで
画像を表示



◆ Ruby講座
 
◆ Ruby色々

 コラム:イベントコマンドから画像を描画するには

 ツクールXPには非常に強力なスクリプト、RGSSが搭載されています。
 しかしこのスクリプトはプログラム経験のない人間にとって非常に難解で、自分の思った通りに動かすのは並大抵のことではありません。
 しかしツクールではどうしても機能の制限があり、そういうときはやはりスクリプトが使いたくなるものです。例えば、ピクチャーの表示枚数。RGSS組み込みのウィンドウなどが使えないのももったいない。
 そこでツクールXPに標準で実装されているイベントコマンドでちょこちょこっとスクリプトを書いて、画像やウィンドウを表示する方法を紹介します。
 スクリプトコマンドも当然RGSSそのものなのですが、イベントとして組み込める分、遙かに取っつきやすいものだと思います。
◆ 変数の有効範囲(スコープ)に注意
 さて、初めに変数について軽く説明します。
 変数とはプログラムなどでデータを入れておく空の容器のようなもので、ファイルから読み込んだピクチャーデータなどもこの変数に入れておきます。変数は適当な英数字で任意の名前を付けることができます。
 本来は変数に読み込んだピクチャーを描画するための命令が別にあり(Graphics.update)、それを使用する必要があるのですが、その命令はマップを管理する処理の中に含まれているためわざわざ書く必要はありません。つまり画像データを変数に入れておくだけであとは勝手に画面に描画してくれるということになります。

 ここで注意しなければならないのは、変数には「有効範囲がある」ということです。
具体的に言うと、通常の変数は『スクリプト』コマンドの外に出ると、その有効性が失われてしまうのです。ピクチャを表示する命令は当然コマンドの外にあるわけですから、これでは画像を表示することはできません。

 そこでより強力な、プログラム中の全ての範囲で有効性の保たれる変数を使用します。これをグローバル変数といいます。グローバル変数を使用するには、通常の変数名の先頭に$(ドルマーク)を付けます。

例) $test = "データ"
# => testと名付けたグローバル変数に文字列"データ"を格納する。
◆ スプライトとビットマップ
 ところで、上で画像データと簡単に言いましたが、実際に画面に表示するピクチャは二つのデータ(オブジェクト)から構成されます。
 それが、スプライトビットマップです。
 具体的に言うと、スプライトはピクチャーの座標や表示法方、拡大率などを表し、内部にビットマップを取り込んでいます。そしてビットマップが画像そのものの情報になります。このスプライトとビットマップを表すデータをSpriteオブジェクト、Bitmapオブジェクトと言います。
◆ ピクチャ表示 テンプレート

# スプライトオブジェクト生成
$picture = Sprite.new
# 画像ファイルからビットマップオブジェクト生成
$picture.bitmap = Bitmap.new("Graphics/Pictures/ファイル名")
# プロパティの設定
$picture.x = 100
$picture.y = 100
$picture.z = 50
$picture.opacity = 255

# 画像の削除(解放)
$picture.bitmap.dispose
$picture.dispose
 上のテンプレートについて説明します。
初めに画像を表示するためのスプライトを生成しています。スプライトの生成は Sprite.new で行われ、グローバル変数 $picture に格納されます。picture の部分は変数名ですので好きな名前を付けてもらってかまいません。

 次に、画像ファイルからビットマップオブジェクトを生成し、スプライトの bitmap プロパティに格納します。プロパティとはオブジェクト情報設定用の変数で、RGSS独自の概念です。この場合、スプライトオブジェクトに画像情報であるビットマップオブジェクトを設定しています。以後 $picture.bitmap がビットマップオブジェクトそのものを指します。

 その他のプロパティも設定します。
〜〜.x 〜〜.y は画面上のx, y座標を、
〜〜.z は画像の重なり深度を(値が大きいほど重なりが手前になります)、
〜〜.opacity は画像の透明度を、それぞれ設定しています。
 当然プロパティはこれ以外にもたくさんありますが、とりあえず必要最低限のものだけ紹介します。くわしくはツクールヘルプの
 RGSSリファレンス>ゲームライブラリ>RGSS組み込みクラス>Sprite
の項を参照してください。

 最後に画像の削除(解放)です。
ピクチャは使い終わったらかならずメモリ上から解放します。これがそのまま画像の削除になります。
上の例では $picture.bitmap.dispose でビットマップオブジェクトを解放し、その後 $picture.dispose でスプライトそのものを解放しています。かならず両方の解放を行ってください。
 長くなりましたが、これで画像をスクリプトコマンドから描画する一連の命令は終わりです。これらの命令はグローバル変数を使っているため、複数のコマンドに渡って書いても問題ありません。また、Sprite を Window、.bitmap を .contents に代えることによって、ウィンドウの描画も同じように行えます。ただし、その場合ウィンドウの幅である width と heigth プロパティも設定しなくてはなりません。また、文字の描画などはビットマップオブジェクトに直接行います。 リファレンスの Windowクラス、Bitmapクラスを参照してください。