#作ろうとしたもの
このようにボタンが跳ね返る動きを作りました。始めるのボタンを押すたびに新しいviewを追加して動かすことをしています。その際以前のviewを消すためにframeLayout.removeAllViews();を使用してすでに入っているviewを消そうとした。
#問題
frameLayout.removeAllViews();でviewを消すと見かけ上はviewを消すことができたが動画のように別のViewが存在するかのように動きがおかしくなった。これはframeLayoutの中にあるviewの座標を取得して跳ね返るようにしていたためだ。
具体的にはこのような感じでframeLayoutの中身を取得していた。
for (int i=0;i<frameLayout.getChildCount();i++){
frameLayout.getChildAt(i);
}
removeAllViewsではviewの情報までは消し切れていない?と考えられる。
#解決
frameLayoutのなかに新しく作ったframeLayoutを入れてその中にviewを入れることで解決した。もちろん始めるボタンを押した際には親frameLayout.removeAllViews();をし新しく子frameLayoutを作り追加した。
#感想-宣伝-
初心者のころ作ったゲームのコードがあまりにもメンテナンスしにくかったのでリメイクしたときに詰まった部分です。
このゲームが収録されたゲームです。
よかったら遊んでみてください。
https://play.google.com/store/apps/details?id=com.nisinis.brainbreak