はてな?RGSS(うらぐち) RSSフィード

10月30日の日記

本日の作業

Tクラスを作成。だいたいできた。

一番面倒くさい、フォントサイズ、テキスト描画位置の自動調整も、どうにかできた。

あとは、テキストファイルのプレゼンデータを読み込んでスライドごとに分割して処理させるようにして、前のスライドに戻れるようにすれば、とりあえずOKかな。

↓ソース

#T 文字表示用クラス
#
#■使用方法
#・t = T.new
#  で生成
#・t.write "なまむぎなまごめなまたまご"
#  で描画
#・t.clear
#  で消去
#  (clearで消さなくても、次の文字をwriteすれば、前の文字は自動的にclearされます)
#・行区切り文字は"\n"です。(3行ぐらいまで対応中)

class T
  def initialize
    @sprite = Sprite.new
    @sprite.x = 320
    @sprite.y = 240
    @sprite.ox = 1000
    @sprite.oy = 240
    @sprite.bitmap = Bitmap.new(2000,480)
  end
  def write(【文字列(全体)】)
    【行数】 = 【文字列(全体)】.split("\n").size
    【1行の高さ(補正)】 = 480
    case 【行数】
    when 1
      【1行の高さ(補正)】 = 480
      zoom = 4
    when 2
      【1行の高さ(補正)】 = 300
      zoom = 2.2
    else
      【1行の高さ(補正)】 = 400
      zoom = 1.6
    end
    【1行の高さ】 = 【1行の高さ(補正)】 / (【行数】 + 1)
    @sprite.bitmap.clear
    【文字列(全体)】.split("\n").each_with_index { |【文字列(1行)】,i|
      rect = @sprite.bitmap.text_size(【文字列(1行)】)
      while rect.width * zoom > 640
        zoom -= 0.1
      end
      @sprite.zoom_x = zoom
      @sprite.zoom_y = zoom
      y = (【1行の高さ(補正)】 / 2 * -1) + 【1行の高さ】 * (i+1)
      @sprite.bitmap.draw_text(0,y,2000,480,【文字列(1行)】,1)
    }
    wait
  end
  def clear
    @sprite.bitmap.clear
  end
  def dispose
    @sprite.bitmap.dispose
    @sprite.dispose
  end
end