サンプル 05: 文字の表示


ソースは以下になります。

 
     1  #!/usr/local/bin/ruby
     2
     3  # 複数のShapeを一つのフレームに表示させるテスト
     4  # 更に文字も表示させてみるテスト
     5
     6  require 'ming'
     7  require 'uconv'
     8  # include Ming
     9
    10  # set_scale(1.0)
    11
    12  m = SWFMovie.new;
    13  m.setDimension(400,400);
    14  m.setRate(10);
    15
    16  s1 = SWFShape.new;
    17  s1.setLine(1, 0xff, 0, 0);
    18  s1.movePenTo(-100,-100);
    19  s1.drawLine(200, 0);
    20  s1.drawLine(0, 200);
    21  s1.drawLine(-200, 0);
    22  s1.drawLine(0, -200);
    23
    24  s2 = SWFShape.new;
    25  s2.setLine(1, 00, 0xff, 0);
    26  s2.movePenTo(-100,-100);
    27  s2.drawLine(200, 0);
    28  s2.drawLine(0, 200);
    29  s2.drawLine(-200, 0);
    30  s2.drawLine(0, -200);         ← ここらへんまでは四角を描画
    31
    32  f = SWFFont.new("OmegaSerif88591-B.fdb"); ← フォント読み込み
    33  t = SWFText.new;                          ← Textオブジェクト生成
    34
    35  text="Hello World";
    36  t.setFont(f);                             ← フォントを設定
    37  t.setColor(0xff,0,0xff);                  ← 色を設定
    38  t.setHeight(56);                          ← 高さ(文字の大きさ)を設定
    39  t.moveTo(-100,30);                        ← 位置を指定
    40  t.addString(text);                        ← 表示するテキストを指定
    41
    42
    43  i1 = m.add(s1);
    44  i2 = m.add(s2);
    45  i3 = m.add(t);
    46
    47  i1.move(0,0);
    48  i2.move(400,400);
    49  i3.move(200,200);
    50
    51  for j in (0 .. 360)
    52    m.nextFrame;
    53    i1.move(1,1);
    54    i1.rotate(4);
    55    i2.move(-1,-1);
    56    i2.rotate(-4);
    57  #  i3.move(-1,1);
    58    i3.rotate(4);                           ← ここらへんは回転
    59  end
    60
    61  m.save('example05.swf');


テキストと四角の回転です。四角の回転はsample03と同じ方法で、Shapeを回して います。テキストについては、表示させてしまえばShapeなどと同じ扱いになりますが、 文字を表示させるための準備が必要です。

フォントの準備

フォントを用意しなくても_serif, _sans, _typewriter という三種類のフォントは 利用できるはずなのですが、何故か私の環境では利用できなかったので、フォントの ファイルを用意しました。Mingでは.fdb形式のフォントが必要です。この形式の 作成手順は以下になります。
  1. 適当なTrueTypeのフォントを用意します。
  2. ttf2fftでfft形式のファイルに変換します。
  3. makefdb(Ming付属)でfft形式をfdb形式に変換します。
上記のサンプルで利用しているOmegaSerif88591-B.fdbはX用のTrueTypeフォント から変換したものです。
Masahiko KIMOTO <kimoto@ohnolab.org>
Last modified: Fri Dec 26 18:26:31 JST 2003