JavaFXを学ぶ-その2
今回はJavaFXでキャラクターを動かすことをやってみました。
◆目次◆
いきなり成果物
キーボードで上下左右が入力されたらその方向を向く、という動きをします。
また、左を向くときだけ歩く動作をするようにしました。
以下コードです。
このboy、「歩き」の概念を超越した速さで歩きます。
AnimationTimerの中で自在に動的に変数を動かすのってどうしたらよいのでしょうかね。今回は「てくてく」歩かせたいので、左に体を向けたー左手前、立ち、右手前、の3枚の画像をパラパラ漫画みたいに適当なスピードで推移させたいんですが、、、うまくいかない。
唯一タイムスタンプ(currentNanoTime)だけが動的に推移している(?)ので、それを3で割り、その余り(0,1,2)をくるくるループさせるnumberという変数を作りました。それをimage配列のimage[number]としてdrawすることでなんとか画像の切り替えが可能に。
が、タイムスタンプ計測速すぎない?ミリ秒単位なの?とにかく1秒単位とかで刻んでくれないのでnumberの値の移り変わりが激しく、とんでもない速さで歩くboyになっちゃいました。
ちなみにboyの画像は以下のサイトからダウンロードしました。
[フリーイラスト] ドット絵の歩く男性キャラクターのセットでアハ体験 - GAHAG | 著作権フリー写真・イラスト素材集
分かったことまとめ
- イベント処理の記述
- ラムダ式記述(->)
- AnimationTimerの基本的な使い方
参考にしたサイト
前回同様、学んでいく過程で出会った良さげなサイトを記録しておきます。
↑「JavaFXのコレはSwingでいうとアレ」みたいな記載が多いです。既にSwing等に慣れている人はかなりサクサク読めそうです。しかしそうでない私もかなり読みやすかったです。
↑pdfで綺麗に概要がまとまっています。しかしアニメーションに関する記述は少なめでした。ゼミ用学習ノートとのことで、ゼミ生じゃないですが勝手に学習させてもらいました。(すみません。)
またこんなのも見つけました。
Javaのゲームフレームワーク「libGDX」。これを利用すればサクサクゲームアプリが開発できるのでしょうね。
↑これが本サイト。
↑Qiitaに色々ハウツーが載ってるみたいです。
そもそもJavaって
そもそもJavaFXはゲームのようなループ描写は得意ではない?ゲーム作成ならC#やC++のほうが良さげです。いずれ学んでみたい。
ただ将来的に仕事でJavaを使うみたいなので、ひとまずJavaであれこれしてみたいと思います。
終わり。