This is my code to add sprites on Scene.
for (int i = 3; i <= cage.getDirtMeter(); i++) {
Sprite dirtSprite = new Sprite(0, 0, Main.dirtTextureRegion,
mainActivity.getVertexBufferObjectManager()) {
@Override
public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
float pTouchAreaLocalX, float pTouchAreaLocalY) {
removeDirt(this);
return true;
}
};
float x = Utility.getRandomXWithinCamera(dirtSprite);
float y = Utility.getRandomYWithinCamera(dirtSprite);
dirtSprite.setPosition(x, y);
this.registerTouchArea(dirtSprite);
attachChild(dirtSprite);
}
and here is my removeDirt method
public void removeDirt(final Sprite sprite) {
synchronized (this) {
if (CoolDown.getSharedInstance().checkValidity()) {
if (isCleanSelected) {
Log.d("detach", "Calling remove dirt");
cage.removeDirt();
mainActivity.runOnUpdateThread(new Runnable() {
@Override
public void run() {
/* Now it is save to remove the entity! */
if (MainMenuScene.this.detachChild(sprite)) {
Log.d("detach", "detached Successfuly!");
}
}
});
updateMetersUI();
}
}
}
}
After removeDirt is called sprite isn’t visible on screen but sprites onAreaTouch is still being called even sprites is being deAttached successfully. Any idea how to completely remove sprite from scene. thanks. And I have also tried
sprite.setVisible(false);
sprite.clearEntityModifiers();
sprite.setIgnoreUpdate(true);
sprite.clearUpdateHandlers();
sprite.reset();
sprite.detachSelf();
But after that onAreaTouch is still being called.
You need to Unregister Touch Areas of your Sprite from the scene.
eg