2011-11-09 13 views
0

Android用ゲーム開発者の新機能です。android - アニメーションがクリックイベントを防止します

私はボタンやテキストビュー(重要ではない)をクリックする必要があるゲームを持っています。 FrameLayoutクラスを拡張し、いくつかのボタンを追加しました(addViewメソッドを通して)。次にTranslateAnimationを使用しようとしましたが、クリックイベントの座標が更新されないようです(つまり、新しい位置で移動ボタンをクリックするとイベントは処理されませんが、元の場所をクリックすると)、ボタンがこの場所を出てもイベントがキャッチします)。

質問:クリックイベントを処理する移動可能なラベル(またはボタン)を作成するにはどうすればよいですか?ヒットテストのようなトリックを使用する必要がありますか?または、私はゲームに完全に間違ったアプローチを使用しているかもしれません(レイアウトにビューを追加するのではなく、テキストを描くなど)。あなたが別の解決策を提案できるなら、私は幸せになれます。

答えて

2

これはAndroidのアニメーションの制限です。彼らはAndroid 3.0でそれを修正しました。詳しくはhttp://android-developers.blogspot.com/2011/02/animation-in-honeycomb.html

抜粋のためにここに読む。

は「最後に、以前のアニメーションは、ターゲットオブジェクトの外観を変更...しかし、彼らは実際にはオブジェクト自体を変更していないあなたはに実行した可能性がありますボタンを画面の一方の側からもう一方の側に移動する場合は、 TranslateAnimationを使用して、ボタンを画面の反対側にうまく滑らせることができます。アニメーションが終了すると元の位置に戻ってきますので、アニメーションのsetFillAfter(true)メソッドを見つけてもう一度やり直してください。このボタンはplacそれがアニメ化された場所に置いてください。そしてあなたはそれをクリックすることで確認することができます - ちょっと、ちょっと! どのようにボタンがクリックされていませんか?問題は、ボタンが描画された場所でアニメーションが変更されますが、ボタンが物理的にコンテナ内に存在しない場所が変更されることです。ボタンをクリックしたい場合は、それまでに使用していた場所をクリックする必要があります。または、より効果的な解決策(そしてユーザーにとってより便利なもの)として、アニメーションが終了したらレイアウト内のボタンの位置を実際に変更するようにコードを書いてください」

+1

自分のアニメーションクラスを書く必要があると思われますか?実際にはそれほど良い解決策はありませんか? – 2xMax

+0

私は実際には分かりませんアンドロイド<3.0でこれを解決する方法は、私は問題の原因を知っています。 – hovanessyan

関連する問題