リソースファイル¶
ここではEmueraで画像を表示するためのリソースファイルの準備方法を解説します。
リソースファイルは実行ファイルのあるフォルダにresources
フォルダを作成しその中に置きます。
ファイルはresources
フォルダ内であればサブフォルダにおいてもかまいません(1.823以降)。
リソース指定ファイル(csv)¶
resources
フォルダにcsv形式のテキストを置くとリソース指定ファイルとして読み込まれます。 書式は以下の通りです。
;コメント行
リソース名A, 元ファイル名, x, y, width, height, posx, posy
リソース名B, 元ファイル名, x, y, width, height, posx, posy
リソース名C, ANIME, width, height
リソース名C, 元ファイル名, x, y, width, height, posx, posy, delay
リソース名C, 元ファイル名, x, y, width, height, posx, posy, delay
-
コメント行
セミコロンで始まる行はコメント行として無視されます。 -
スプライト
リソース名A, 元ファイル名, x, y, width, height, posx, posy
上記の形式により
リソース名A
を持つスプライトを作成できます。
リソース名は<img src='リソース名A'>
のsrc
属性の属性値として使用される名前です。
また、SPRITECREATED("リソース名A")
のような形でも使用されます。
リソース名は他のリソースの名前と重複してはいけません。
元ファイル名は画像ファイルの名前です。拡張子を含めて指定します。csvファイルからみた相対パスで指定します。
csvファイルよりも上位の階層にある画像ファイルを指定することはできません。
csvファイルと同一かそのサブフォルダにある画像ファイルを指定してください。
x, y, width, height
には元画像の中の使用する部分をピクセル単位で指定します。
x, y, width, height
は省略することもでき、その場合は画像全体が使用されます。
posx, posy
には画像の相対位置を指定します。この値はSPRITEPOS
やSPRITEMOVE
命令によって動的に変更できます。
posx, posy
は省略することもでき、その場合は0,0
を指定したことになります。 -
アニメーションスプライト
リソース名C, ANIME, width, height リソース名C, 元ファイル名, x, y, width, height, offsetx, offsety, delay リソース名C, 元ファイル名, x, y, width, height, offsetx, offsety, delay ……
上記の形式により
リソース名C
を持つアニメーションスプライトを作成できます。
アニメーションスプライトを作成するには、ファイル名の代わりにANIME
と記載した行を作り、スプライト全体のサイズを指定します。
このwidth, height
は正の整数でなければなりません。省略することはできません。
次の行以降に、アニメーションの各フレームとなる画像を指定します。
各フレームの定義の仕方は通常スプライトと同じです。
delay
にはそのフレームが表示される時間をミリ秒単位で指定します。省略した場合1000ms
になります。
注意点として、Emueraは標準ではINPUT
等の待機時間に再描画を行わないため、アニメーションスプライトは特定のフレームで静止しているように見えます。
SETANIMETIMER
命令を実行してINPUT中に再描画を行うように指示して下さい。
SETANIMETIMER
命令の詳細は命令の解説を参照してください。
画像ファイル¶
画像の表示のためには画像ファイルが必要です。
画像ファイルはbmp
、jpg
、png
形式の何れかで用意しresources
フォルダ内に置きます。
EM+EEではライブラリを同梱することでwebp
形式も使用できます
ERB内ではGCREATEFROMFILE
を使用することでグラフィックを生成することもできます
注意点¶
csvファイルで指定された全ての画像ファイルはEmueraの起動時にメモリ上に展開され終了するまでメモリを占有します。
大量の画像ファイルを読ませるよりも画像を単一のファイルに合成し範囲を指定して利用した方がメモリ的にも速度的にも有利と思います。
また、必要な場合に適宜GCREATEFROMFILE
とGDISPOSE
、SPRITECREATE
とSPRITEDISPOSE
を行う処理も効果的です
コンフィグの描画インタフェースにWINAPI
を指定している場合はGDI
により処理され、アルファブレンドは行われません。
描画インタフェースがGraphics
又はTextRenderer
の場合にはGDI+
により処理され、アルファブレンドが行われます。
拡大縮小もWINAPI(GDI)と
Graphics又は
TextRenderer(GDI+)`でやや異なります。