サンプル 11:画面をはねるボール


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

 
     1  #!/usr/local/bin/ruby
     2
     3  require "ming";
     4
     5  # 画面をはね回るボールを作ってみましょう。
     6
     7  # ballといっても四角の組み合わせなんだけれどね。
     8  ball=SWFMovieClip.new;
     9  s=SWFShape.new;
    10  s.setLine(2,0,0,0xff);
    11  s.movePenTo(-20,-20);
    12  s.drawLine(40,0);
    13  s.drawLine(0,40);
    14  s.drawLine(-40,0);
    15  s.drawLine(0,-40);
    16  s.setLine(2,0xff,0,0);
    17  s.movePenTo(0,-25);
    18  s.drawLine(25,25);
    19  s.drawLine(-25,25);
    20  s.drawLine(-25,-25);
    21  s.drawLine(25,-25);      ← ここまででボールが書かれたShapeを作成
    22
    23  ball.add(SWFAction.new(" ← ballオブジェクトにメソッドを追加
    24  vx=8;vy=6;
    25  function move() {        ← moveメソッド
    26  bx=_x;
    27  by=_y;
    28  if ((bx+vx) > 400 || (bx+vx) < 0) {vx *= -1;}  else 
    29    {bx += vx;}
    30  if ((by+vy) > 400 || (by+vy) < 0) {vy *= -1;} else
    31    {by += vy;}
    32  _x = bx;
    33  _y = by;                 ← 関数内の処理はいいよね。画面内を跳ねる。
    34  }
    35  "));
    36
    37  di=ball.add(s);          ← ShapeをMovieClipに追加
    38  di.moveTo(0,0);
    39  ball.nextFrame;          ← nextFrameしないとActionが有効にならない。
    40
    41  m=SWFMovie.new;
    42  m.setDimension(400,400);
    43  m.setRate(20);
    44
    45  di = m.add(ball);        ← ballオブジェクトを追加
    46  di.setName("ball");      ← オブジェクト(MovieClip)に"ball"という名前をつける
    47  di.moveTo(0,200);        ← 初期位置に移動
    48
    49  m.nextFrame;
    50
    51  m.add(SWFAction.new("_root.ball.move();")); ← 移動する関数を実行
    52  m.nextFrame;
    53  m.add(SWFAction.new("gotoAndPlay(_currentFrame-1);")); ← 一つ前に戻る
    54
    55  m.save("example11.swf");


説明は[TBD]
Masahiko KIMOTO <kimoto@ohnolab.org>
Last modified: Sun Dec 28 15:41:18 JST 2003