RPGツクールVXAceの網

RPGツクールVXAceの製作過程で気が付いたことをメモする。

RPGツクールVXAceで長い文字列をdraw_textできない

VXAceで画面をはみ出るレベルの長い文字列を描画しようとするとおかしな挙動になった。フローティングヘルプを作る際の障壁になっている。

VXとVXAceで同一の描画スクリプトを実行し、挙動を比較する。

RGSS:

    @sprite1 = Sprite.new
    @sprite2 = Sprite.new
    @sprite1.bitmap = Bitmap.new(1000,40)
    @sprite2.bitmap = Bitmap.new(1000,40)
    @sprite1.bitmap.fill_rect(@sprite1.bitmap.rect, Color.new(0,100,100,255))
    @sprite2.bitmap.fill_rect(@sprite1.bitmap.rect, Color.new(100,0,100,255))
    text = "これはRPGツクールVXとRPGツクールVXAceで長い文字列の"
    text += "表示動作検証を行うためのテスト文字列です。"
    @sprite1.bitmap.draw_text(0,0,1000,40,text)
    @sprite2.bitmap.draw_text(0,0,1000,40,text)
    @sprite1.x = 20
    @sprite1.y = 20
    @sprite2.x = -400
    @sprite2.y = 80

 実行結果

【ツクールVX】

f:id:kazamit:20121106235825p:plain

 【ツクールVXAce】

f:id:kazamit:20121106235834p:plain

 

VXAceは途中で勝手に折り返している。(このBitmapに再度draw_textするとGame.exeが例外で落ちる)。

現時点でこれを回避するためには、長い文字ではなく文字列を1字ずつ描画していくしかないようだ(文字表示 draw_text_ex の内部処理では、制御文字処理目的でprocess_characterという関数で1字ずつ処理されている)。

仕様なのだろうか。