【JavaFX】アニメーションクラスの罠
先日、JavaFXでゲームを制作していると画面切り替える度にメモリリークしていっているという事実に気が付きました。
こんな感じですね。(右側にあるタスクマネージャのメモリが常に上がっていってます。画質が悪いのはごめんなさい。)
調べたところ、どうやらアニメーションは、ちゃんと停止しなければメモリリークするらしいのです。(自動で停止するアニメーションの場合は放置でも多分問題ない・・・)
このゲームでは、キャラのドット絵を無限ループアニメーションで切り替えしているのでどうやらそれがまずいみたいです。無限なのでいつまででもメモリに残り続けます。
TimelineとTranslateTransitionではメモリリークが確認できました。他のも危険かも。
ということで、面倒ですが、アニメーションをしたら必ずstopメソッドを呼び出すようにしましょう。ということが今回は言いたかっただけ。
今回のメモリリークを回避するために、私が対処した方法は、アニメーションオブジェクトを作成するときに、すべてのアニメーションオブジェクトを保持しておくクラスを作成し、画面切り替え時に全停止して削除するような実装に変更して対処しました。
対処した後の動画です。
参考にさせていただいたサイト
http://d.hatena.ne.jp/torutk/20151027/p1
ディスカッション
コメント一覧
突然すみません。お聞きしたいことがあるのですが、作者様が作っている「もぐもるのネギあつめ」を私のYoutubeチャンネルで実況したいのですが、このゲームを実況してもいいでしょうか?
構いませんよ~是非ともお願いします。まさか動画配信をしたいといってくれる方が出てくるとは思いませんでした。嬉しい限りです。
少しずつクオリティの高いゲームを制作していこうと思っていますので、今後ともよろしくお願いいたします~
すいません。ありがとうございます。