忍者ブログ
RPG製作情報など
[97]  [96]  [95]  [92]  [91]  [90]  [89]  [88]  [86]  [85]  [84
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

最近、RPGで使用できる『ミニゲーム』のスクリプトに力を入れている。
既に『スロットマシーン』、『ポーカー』を作ったのだが、
これらのスクリプトには、07/07/16記事の『Window_digits_number』が不可欠だ!

hide的に、このスクリプトは、かなりイイ感じに仕上がったと自画自賛(笑)
ということで? 回転数値機構『Window_digits_number』をvol.2.20に更新したよ!って話し。
とりあえず、バグと機能の拡張をしてみた。

■バグ修正内容
Ⅰ・・・囲み文字の縁取りが一部表示されないのを修正。
※盲点、それは数値の4は他の数値より幅が1ピクセル大きい。
ゆえに、左側の縁取りが欠けてしまうのだ。
-----------------------------------------------------------------------------------------
ツクールXPは、重いと言われるが、原因の1つは、.draw_textの処理に時間がかかるから。
囲み文字の場合、あらかじめ黒(縁色)文字を右上、右下、左上、左下の4方向に、
1ピクセルずらして描画した後、真中に白(通常色)文字を描画する。
合計5回の.draw_textを行なっている事になり、単純に5倍の負荷がかかる計算だ。

ということは、.draw_textの回数を減らせば良い訳なので、
↓こんな方法を試みてみた。 ←(既出かもしれなケド)

①・・・適当なBitmapをつくる。
pic = Bitmap.new(bw,bh)

②・・・①のBitmap(pic)に黒文字を.draw_textで描画
pic.font.color = 黒
pic.draw_text(0,0,w,h,文字,align)

③・・・描画したいBitmap(XXX)に②のBitmap(pic)を.bltで描画(4方向に)
XXX.blt(1,-1,pic,Rect.new(0,0,bw,bh))
XXX.blt(1,1,pic,Rect.new(0,0,bw,bh))
XXX.blt(-1,-1,pic,Rect.new(0,0,bw,bh))
XXX.blt(-1,1,pic,Rect.new(0,0,bw,bh))

④・・・描画したいBitmap(XXX)に白文字を.draw_textで描画
XXX.font.color = 白
XXX.draw_text(0,0,w,h,文字,align)

コレで、.draw_text5回を、.draw_text2回に減らすことができた。
その代わり、.bltの処理が、4回に増えたのだが、
この.bltの処理はかなり軽い処理(時間がかからない)なので問題ないハズ...
-----------------------------------------------------------------------------------------
Ⅱ・・・文字サイズを32以上に指定した場合、一部表示されないのを修正。
フォントのサイズで指定できる最大値は、96かな?
フォント名によっては変わるかも...

■拡張機能と仕様変更
Ⅰ・・・XYZ座標を外部操作可能に変更
.x  = n ←デフォルトウィンドウと同様に.xに数値を指定すれば、X座標を変更できる。
※.y .z も同様に

Ⅱ・・・.move で、回転中であるかどうかを返す(true/false)

Ⅲ・・・valueに数値以外を指定した場合、エラーを吐かず、非表示に変更。
.update(value,se)を.update(value,type,se)に変更。
.refresh(value)を.refresh(value,type)に変更。

value=更新する数値、type=更新する数値の色、se=回転中に演奏するSE
--------------------------------------------------------------------------------
Ⅳ・・・class Copy_Font にcolorsを追加(高速文字色変更)
.update(value,type,se) ←高速回転数値描画
.refresh(value,type) ←高速数値描画

※typeは、ウィンドウ作成時に指定する↓fontsにcolorsを指定した場合のみの設定で、
色情報の配列で指定する。

fonts = Copy_Font.new(size,bold ,italic,shadow,round ,name,color ,s_color ,interval,colors)
fonts.colors = [Color.new(255,0,0,255),Color.new(255,255,0,255)]
※colors = [赤,黄]
XXX = Window_digits_number.new(x,y,z,value,max,min,fonts)

.refresh(value,type) type=0の場合、cororで指定した色(初期色)となり、
type=1 ならばcolors[0]の赤色、type=2 ならばcolors[1]の黄色に変化する。

※使用する場面で思いつくのは、
装備画面で、新しい装備品を選んでいる(カーソル移動中)に
ステータスUPなら赤文字、DOWNならば、青文字など。

バトルのHP、SPの回転描画で、HP=0 ならば、赤文字、瀕死(HP1/4)ならば黄色など。

07/08/10 早速、バグ発見!!vol.200からvol.2.20に更新!

■修正内容
・・・italic文字(斜め文字)の場合、文字の一部が描画されない!を修正。

・・・囲み文字(縁文字)を4方囲みから8方囲みに変更。
1など幅の短い数値は、4方囲みだとキレイに見えないから。
.blt描画なので、8方でも軽いハズ...

※8方囲み・・・右上、右下、左上、左下、右、左、上、下 の八方向。
PR
この記事にコメントする
お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード   Vodafone絵文字 i-mode絵文字 Ezweb絵文字
この記事へのトラックバック
この記事にトラックバックする:
カレンダー
04 2024/05 06
S M T W T F S
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
最新コメント
[08/04 Faust]
[05/26 takku]
[11/12 ぱんだ]
[06/28 AntwerpBlue]
[06/28 AntwerpBlue]
[02/07 ジャリン]
[02/07 ジャリン]
[02/05 白豆]
[11/28 I・S]
[11/26 I・S]
プロフィール
管理人
hide
ホームページ
ブログ内検索
カウンター
忍者アナライズ
忍者ブログ [PR]