AndEngine —新しいスプライトエンティティのアタッチに問題があります

StackOverflow https://stackoverflow.com/questions/8352165

質問

私は何時間も試行錯誤を繰り返してきましたが、単純に思える解決策をまだ思い付いていません。 を使用しています ジェネラコディセタグプレ

ユーザーが画面の向きを変更したかどうかを検出する方法。 最終的に、エンティティがシーンにアタッチされるこのメソッドに送信されます: ジェネラコディセタグプレ

このメソッドは、壁紙が最初に作成されたとき、およびユーザーが画面の向きを変更したときに呼び出されます。

これを携帯電話でテストしましたが、向きを切り替えるとログメッセージが正常に表示されます。つまり、希望どおりに動作しています。

問題-

このメソッドが呼び出されても、スプライトの子は切り離されません。ポートレートモードでランドスケープに切り替えた場合、ポートレートスプライトは残り、非表示にします。その逆も同様です。

誰かがこれに答えてくれたら、私は非常に嬉しいです。私はおそらく20時間これについて頭痛を抱えています。

役に立ちましたか?

解決

問題はロジックにあるようです。SpriteDayPortraitとSpriteDayLanscapeを再割り当てしてから、ブランチを呼び出して、それらをデタッチまたはアタッチします。

したがって、デタッチスクリプトが呼び出されるたびに、デタッチする古いインスタンスではなく、スプライトの新しいインスタンスが参照されます。

スプライトの割り当てを、シーンの作成時にのみ呼び出される別の関数に移動してみてください: ジェネラコディセタグプレ

他のヒント

AndEngineでの向きの変更は存在しないため(エンジンの向きを変更することは許可されていません)、ゲームで向きの変更を使用しないようにする必要があります(これはユーザーにとって奇妙なことです)。

とにかく、onConfigurationChangedはUIスレッドから呼び出されるため、AndEngineのオブジェクトを操作するのではなく、UpdateThreadで操作する必要があります。問題が発生する可能性があります(ただし、問題が発生した場合はゲームがクラッシュします)。変更してください。

新しい背景を設定する前にParallaxBackgroundをクリアしなかったために発生したと思います(おそらく、古い背景が新しい背景を隠しているのでしょうか?) 最後のParallaxEntityへの参照を保持し、新しいコードを追加する前にバックグラウンドから削除します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top