2017年04月28日

jrubyfxでアニメーションなど

ゲームづくりもそこそこ進めていきたいねぇ
今考えてるのは、最近自分の中でブームになっているjrubyfxでゲーム作成。
javafxでのゲーム作成は色々記事があるんだけど
javaで何か物を書くのがだんだんタルくなってきており、できればAltJava使いたいなあ
って思ってていきなり茨の道を進み始めました。

前回jrubyfxで画面表示まで行ったんで、今回はタイムラインを使ったアニメーションが使えるとこまで行きましょう



jrubyfxでタイムラインアニメのサンプル


サンプルコードはこんな感じ

require 'jrubyfx'
class Hello < JRubyFX::Application
  def start(stage)
    @stage = stage
    with(stage,title: "sample",width: 800,height: 400) do
      layout_scene do
        group do
          c = circle(150, Color.web("green"), id: "c")
          c.translate_y = 200
        end
      end
      show
    end
    play
  end

  def play
    translate_x = @stage['#c'].translateXProperty
    timeline(cycle_count: :indefinite, auto_reverse: true) do
      animate translate_x, 0.sec => 1.sec, 200 => 600
    end.play
  end
end
Hello.launch

割りとシンプルだよね。ポイントは5行目の@stage = stage。stageオブジェクトをインスタンス変数に入れて、どのメソッドからでもアクセスできるようにすること、これでplayメソッドの@stage['#c']が使える。
あと描画オブジェクトのtranslate_xとかtarnslate_yにアクセスして、緑の丸を移動させる

screenshot.51.png
コロコロ…

これ、playメソッドを↓のように改造すれば緑の丸が大きくなったり小さくなったりする

  def play
    scale_x = @stage['#c'].scaleXProperty
    scale_y = @stage['#c'].scaleYProperty
    timeline(cycle_count: :indefinite, auto_reverse: true) do
      animate scale_x, 0.sec => 1.sec, 1 => 2
      animate scale_y, 0.sec => 1.sec, 1 => 2
    end.play
  end

直感的!わかりやすい。

次はアニメーション

いわゆる単純な変形アニメーションを制御することができたので、お次はパタパタアニメをできるようにしたい
参考になるURLは


ここのjavaソースをjrubyにコンバートして使えるようになりたいなあ

しかし、タイムライン上にアニメーションを展開して動かして…となると
専用のツールがあるぶん素直にunityを使ったほうが楽なんて結論になるのかもなあ。
いや、それでも0からコーディングしたいんだ。なんか楽しいからそっちのほうが。
ラベル:JRuby
posted by LoyalTouch at 06:31| Comment(0) | TrackBack(0) | ゲーム | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:


この記事へのトラックバック