この質問はandengineGL-ES1に言及しています。
戻ったとき、またはユーザーがゲーム内でアクションを実行したときに更新される壁紙アクティビティを作成するのに問題があります。
私のゲームには2つのアクティビティがあります。1つでは、部屋の背景要素を編集して配置できます。もう1つはゲームをプレイし、最初のアクティビティで配置した要素と同じ背景を使用します。
部屋を背景にしてキャラクターがその前を動き回るライブ壁紙もあります。
壁紙のonResume()でupdtaesを作成しています。
最初に、以前に使用したすべてのバックグラウンドスプライトを切り離します。次に、更新された位置に新しいスプライトをアタッチします。
何が起こるかです:いくつかのスプライトは現れません。
方法は次のとおりです。私が間違っていることがわかりますか?
private void loadBackgroundDecorations() {
//Add new decorations
Log.d(TAG, "loadBackgoundDecorations");
mEngine.runOnUpdateThread(new Runnable() {
@Override
public void run() {
// Remove Old Decorations
Log.d(TAG, "loadBackgoundDecorations: decorationList.size() =" + decorationList.size());
while(decorationList.size() > 0){
Sprite d = decorationList.remove(0);
scene.detachChild(d);
Log.d(TAG, "loadBackgoundDecorations: detachChild");
}
decorationList.clear();
//Add new decorations
ArrayList<Integer> decorations = app.getBackgroundManager().getDecorations();
Log.d(TAG, "loadBackgoundDecorations: decorations.size()" +decorations.size());
for (int i = 0; i < decorations.size(); i+=3) {
Log.d(TAG, "Decoration Values: texture-"+decorations.get(i)+", x-"+decorations.get(1+i)+", y-"+decorations.get(2+i));
Sprite draggable = new Sprite(decorations.get(1+i),decorations.get(2+i),mGameTextureRegionLibrary.get(decorations.get(i)));
draggable.setIgnoreUpdate(true);
scene.attachChild(draggable,0);
decorationList.add(draggable);
Log.d(TAG, "loadBackgoundDecorations: attachChild"+ i);
}
}
});
}
@Override protected void onResume() {
super.onResume();
Log.d(TAG, "onResume");
BitmapTextureAtlasTextureRegionFactory.createFromAsset(mTexture, this, app.getAquariumBackground(), 0, 0);
addBubbles();
loadBackgroundDecorations();
addCharacters()
}
============更新=================以下に提案されているように、すべてのシーン設定関数をランナブルに追加してみました。これは効果がありません。私にとってうまくいったのは、「間違った」装飾の可視プロパティを「false」に設定することです。しかし、スプライトの複製が壁紙に隠されているため、これによって最終的にメモリリークが発生するのではないかと心配しています。この問題は、「detachChild」を呼び出した場合にのみ発生します。どういうわけか、「attachChild」が正しく発火するのを妨げているようです。誰かがこれを引き起こしている可能性があるものについてのアイデアを持っていますか?
onResume関数でスプライトを追加および削除するアクティビティを他の誰かが作成できますか?