<拡張> ピクチャの操作

■ 概  要

  • ・ ピクチャを反転する機能を追加します。
  • ・ ピクチャの背景にウィンドウを表示する機能を追加します。
  • ・ ピクチャやウィンドウに文字を表示する機能を追加します。

■ スクリーンショット


※ 画像は開発中のものです。

■ 更新履歴

■ スクリプト

■ 設定項目

■ フォント設定

FONTS = []
FONTS[0] = nil
FONTS[1] = "MS ゴシック"
FONTS[2] = ["MS 明朝", 20, :OF, :ST]

描画文字のフォント設定です。制御文字で使用します。
FONTS[識別番号] = フォント設定のように設定を追加してください。

フォント設定は、以下の3つの形式のいずれかで行います。

nil
すべての設定をリセットして、デフォルトの設定を使用します。
文字列
フォント名を設定することで、フォントのみを変更します。
空文字列("")の場合は、デフォルトのフォントが使用されます。
配列
["フォント名", 文字サイズ, 文字色, 縁取り色, オプション, ...]
途中を省略する場合は、nilと設定してください。
省略された場合は、現在の設定が使用され変更は行われません。
フォント名
文字列でフォント名を設定してください。
空文字列("")の場合は、デフォルトのフォントを使用します。
文字サイズ
文字サイズは、6 から 96 の範囲で指定しください。
また、0 にするとデフォルトのサイズを使用します。
文字色、縁取り色
色の設定は、[red, green, blue, alpha]
もしくは、"RRGGBBAA"の形式で設定してください。
alpha(AA) の値を省略すると 255(FF) となります。
オプション
オプションは、複数設定できます。
:BT .. 太字ON      :BF .. 太字OFF
:IT .. 斜体ON      :IF .. 斜体OFF
:OT .. 縁取りON    :OF .. 縁取りOFF
:ST .. 影ON        :SF .. 影OFF

例)["MS ゴシック", :BT] や [nil, nil, [255,0,0], :OF, :ST]

■ 使用方法

■ ピクチャの表示

イベントコマンド「ピクチャの表示」を使用してください。
すべてのピクチャは、背景にウィンドウを持ちます。
ピクチャとして表示する画像とウィンドウに表示する画像は別のものになります。

イベントコマンドでファイル名を設定して表示した画像は、キャッシュされます。
スクリプトにより作成、読み込みされた画像はキャッシュされず、解放されます。

■ ピクチャの取得

拡張機能は、スクリプトを使用して実行します。
イベントコマンド「ピクチャの表示」でピクチャを表示してから実行してください。
対象となるピクチャを取得するには、以下の方法を使用してください。

Pictures[ピクチャ番号]
指定された番号のピクチャを取得します。
Pictures[first .. last]
first から last までの番号のピクチャを配列で取得します。

例)Pictures[1..3].each {|picture| picture.erase }

ピクチャ全体に何らかの処理をおこないたい場合は、
Pictures.each { ... }を使用してください。
また、Pictures.eraseで、すべてのピクチャを消去できます。

■ ウィンドウの表示

イベントコマンド「ピクチャの表示」の後に実行してください。

Pictures[ピクチャ番号].window.create(width, height)
Pictures[ピクチャ番号].window.create(width, height, padding)
指定されたサイズのウィンドウを表示します。
padding を省略時は 8 px の余白が作成されます。
ウィンドウ内容は、ウィンドウの幅から余白を引いた大きさになります。
Pictures[ピクチャ番号].window.create(ww, wh, cw, ch)
Pictures[ピクチャ番号].window.create(ww, wh, cw, ch, padding)
ウィンドウ(ww,wh)とウィンドウ内容(cw,ch)のサイズを指定できます。
ウィンドウ内容は 1px 以上のサイズを指定してください。
例)Pictures[6].window.create(320, 240, 300, 480, 10)

■ ウィンドウの設定

ウィンドウ表示のスクリプトを実行した後に実行してください。

Pictures[ピクチャ番号].window.windowskin("ファイル名", ウィンドウカラー)
ウィンドウスキンを変更します。
ウィンドウスキン画像は Graphics/System フォルダに保存してください。
ウィンドウカラーは、配列もしくは、Tone オブジェクトで設定してください。
変更を行わない箇所は、nil としてください。
例)Pictures[6].window.windowskin("Window", [-34,0,68])
Pictures[ピクチャ番号].window.back_opacity = 不透明度
ウィンドウ部分のみの不透明度(0-255)を変更します。初期値は 192 です。
ウィンドウ内容にも適用する場合は、ピクチャの不透明度を変更してください。
例)Pictures[3].window.back_opacity = 255
Pictures[ピクチャ番号].window.padding = 余白サイズ
ウィンドウの余白を変更します。。初期値は 12 です。
値を大きくすると、ウィンドウ内容の表示領域が狭くなります。
例)Pictures[11].window.padding = 16

■ ウィンドウ内容のスクロール

ウィンドウ表示のスクリプトを実行した後に実行してください。

Pictures[ピクチャ番号].window.contents_x
Pictures[ピクチャ番号].window.contents_y
スクロール位置の取得または設定をおこないます。

例)Pictures[6].window.contents_x = 24
例)Pictures[6].window.contents_x += 24
例)Pictures[6].window.contents_x -= 24

■ 画像ピクチャの表示

イベントコマンド「ピクチャの表示」をファイル名を設定せずに実行してください。

Pictures[ピクチャ番号].load(type, name, index = 0, hue = 0)
ピクチャフォルダ以外の画像をピクチャとして表示します。
type
表示する画像の種類です。次の種類が使用できます。
:picture, :icon, :system, :battler, :parallax, :character, :face
name
ファイル名を文字列で設定してください。
index
表示する画像のインデックスを指定します。
:icon, :character, :face でのみ使用します。ほかは無視します。
歩行グラでは、キャラ単位のインデックスで中央正面向きの画像のみ表示できます。
hue
色相を 360 度系で設定します。

例)Pictures[8].load(:icon, "", 48)]

■ 文字ピクチャの表示

イベントコマンド「ピクチャの表示」をファイル名を設定せずに実行してください。

Pictures[ピクチャ番号].bitmap.create(横幅, 縦幅)
指定されたサイズの透明な画像をピクチャとして表示します。
文字描画の機能でピクチャに文字を描画できます。

■ 文字の描画

文字描画は、ピクチャとウィンドウの2つに別々に行います。
テキストの設定方法は、コマンドとスクリプトの2つの方法があります。

イベントコマンド
イベントコマンド『文章のスクロール表示』の
一行目に<PICEX番号設定先>と記述し、二行目以降に文章を記述してください。
番号は、文字を描画するピクチャの番号で、
設定先は、ビットマップ(B)とウィンドウ(W)から選んでください。
スクリプト
テキストは、文字列で設定してください。引数には、文字列と配列が渡せます。
改行する場合は、文字列内に\nを入れるか、引数で分けてください。
Pictures[ピクチャ番号].bitmap.set_text("テキスト", ...)
ピクチャに文字を描画します。
文字を描画できるピクチャは、画像ピクチャと文字ピクチャです。
イベントコマンド『ピクチャの表示』で表示した画像には描画できません。
Pictures[ピクチャ番号].window.set_text("テキスト", ...)
ウィンドウに文字を描画します。
ウィンドウ内容は、ウィンドウを作成した際に作成されます。
例)Pictures[6].bitmap.set_text("\\C[3]あいうえお", '\C[0]\V[13] かきくけこ')
制御文字
テキストには、制御文字が使用できます。
\V[n]  .. n 番のEV変数の値を表示
\C[n]  .. n 番の文字色に変更
\S[n]  .. 文字サイズを n に変更
\{     .. 文字サイズを大きく
\}     .. 文字サイズを小さく
\F[n]  .. n 番のフォント設定に変更
\X[n]  .. 描画位置のx座標を n にする。(マイナス値可 \Y[-8])
\Y[n]  .. 描画位置のy座標を n にする。(マイナス値可 \Y[-8])
\X[ns] .. 描画位置のx座標を s 方向へ n ずらす。(s は + か - \Y[8+])
\Y[ns] .. 描画位置のy座標を s 方向へ n ずらす。(s は + か - \Y[8-])
\A[n]  .. 文字の描画位置を設定 ([X] 0:左, 1:中, 2:右  [Y] 3:上, 4:中, 5:下)
\N[n]  .. n 番のアクター名を表示
\P[n]  .. パーティの n 番目のアクター名を表示
\I[n]  .. n 番目のアイコンを表示
\$     .. 所持金を表示
\G     .. 通貨単位を表示

■ 文字の再描画

Pictures[ピクチャ番号].refresh
ピクチャ画像とウィンドウ内容の両方を再描画します。
Pictures[ピクチャ番号].bitmap.refresh
ピクチャ画像を再描画します。
Pictures[ピクチャ番号].window.refresh
ウィンドウ内容を再描画します。

■ ピクチャの関連付け

ピクチャ同士を関連付けます。
関連付けられた親ピクチャを移動すると子ピクチャも一緒に移動します。
ウィンドウと文字を別のピクチャに分けている場合など、
1つのピクチャに位置を合わせたい場合に使用してください。

Pictures[子番号].assoc(親番号)
ピクチャを指定されたピクチャに関連付けます。
Pictures[子番号].dissoc
ピクチャの関連付けを解除します。
Pictures[親番号] << 子番号
Pictures[親番号] << Pictures[子番号]
Pictures[親番号] << [子番号, 子番号, ...]
ピクチャに指定されたピクチャに関連付けます。
例)Pictures[7].assoc(3)
7番のピクチャを3番のピクチャに関連付けます。
3番ピクチャを移動すると7番のピクチャも移動します。
例)Pictures[12] << 3 << 5
12番のピクチャに3番と5番のピクチャを関連付けます。
12番のピクチャを移動すると、3番と5番のピクチャも移動します。

■ ピクチャの位置変更

Pictures[ピクチャ番号].pos(x, y, 原点)
指定された座標にピクチャを表示します。
原点を省略した場合は、原点の変更を行いません。
原点を左上にする場合は 0 で、中心にする場合は 1 にします。

■ ピクチャの拡大縮小

Pictures[ピクチャ番号].zoom(zoom)
Pictures[ピクチャ番号].zoom(zoom_x, zoom_y)
100 のとき等倍表示となり、大きいと拡大、小さいと縮小します。
200 のとき2倍、50 のとき 1/2 で表示されます。

■ ピクチャの反転

Pictures[ピクチャ番号].reverse
Pictures[ピクチャ番号].mirror ^= true
現在の状態から反転します。
Pictures[ピクチャ番号].mirror = true
元の状態から反転します。
Pictures[ピクチャ番号].mirror = false
元の状態に戻します。

※ ウィンドウおよびウィンドウ内容は反転しません。

■ ピクチャの角度変更

Pictures[ピクチャ番号].angle = 角度
反時計回りを正とする 360 度系で角度を設定してください。

■ ピクチャの不透明度変更

Pictures[ピクチャ番号].visible = 可視状態
可視状態がtrueのとき表示され、falseのとき非表示になります。
この変更は、ピクチャとウィンドウの両方に影響します。
この機能を使用して設定できる不透明度は、0 と 255 だけです。

■ ピクチャの移動

Pictures[ピクチャ番号].target(フレーム数, {パラメータ})
指定されたフレーム数をかけて変化させます。
パラメータには、以下の6つがあります。
座標 (:o, :x, :y)、拡大率 (:zoom, :zoom_x, :zoom_y)、不透明度 (:opacity)

例)Pictures[8].target(60, x: 0, y: 0, o: 0)

■ ピクチャの操作 (非推奨)

内部の値を直接変更します。変更しない値は、省略してください。
※ ウィンドウおよびウィンドウ内容は、反転・拡大縮小・回転に対応していません。

次のスクリプトは、実行された時点で表示が変わります。

Pictures[ピクチャ番号].instance_eval do
  @origin = 0               # 原点 (0:左上 1:中心)
  @x = 0.0                  # x座標
  @y = 0.0                  # y座標

  @zoom_x = 100.0           # 拡大率 横幅
  @zoom_y = 100.0           # 拡大率 縦幅

  @opacity = 255.0          # 不透明度 (0 - 255)
  @blend_type = 0           # (0:通常 1:加算 2:減算)
  @mirror = false           # 反転するか
  @angle = 0.0              # 回転角度 (360 度系)
end

次のスクリプトは、指定された値へ @duration のフレーム数をかけて変更します。
@duration は、1 以上で必ず行ってください。
init_target は、値の初期化です。必ず実行してください。
イベントコマンド「ピクチャの移動」の実行中には行わないでください。

Pictures[ピクチャ番号].instance_eval do
  init_target               # 初期化
  @duration = 0             # フレーム時間

  @target_x = 0.0           # x座標
  @target_y = 0.0           # y座標

  @target_zoom_x = 100.0    # 拡大率 横幅
  @target_zoom_y = 100.0    # 拡大率 縦幅

  @target_opacity = 255.0   # 不透明度
end

■ 開発用拡張機能

■ ピクチャの画像保存

イベントコマンド「スクリプト」にて実行してください。

Pictures.save("filename", *picture_id)
指定された番号のピクチャを1枚の画像として保存します。
※ 実行には、『画像保存』スクリプトが必要です。

例)Pictures.save("test", 1,2,5)

■ ウィンドウの描画

通常のウィンドウは、画像に含まれません。
ウィンドウも含めたい場合は、以下のスクリプトでウィンドウ画像を作成してください。

Pictures[ピクチャ番号].bitmap.create(横幅, 縦幅, {})
引数 {} は、ウィンドウオプションです。
第三引数の有無で、ウィンドウかそうでないかを判断しますので、
すべてのオプションを省略する場合でも、ハッシュは省略しないでください。
オプションのデフォルト値は、以下のようになります。
ウィンドウスキン :windowskin => nil (デフォルトのウィンドウスキン)
ウィンドウカラー :tone       => nil (現在のウィンドウカラー)
背景の不透明度  :opacity    => 192
例)
Pictures[3].bitmap.create(160, 120, {
  :windowskin => "Window2",
  :tone => Tone.new(68, 34, -34)
})