1
这是我在Scene上添加精灵的代码。onAreaTouch在成功分离精灵之后仍然被调用
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);
}
,这里是我的removeDirt方法
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();
}
}
}
}
removeDirt之后被称为精灵是在屏幕上不可见,但onAreaTouch仍然被称为甚至精灵精灵正在顺利deAttached。任何想法如何从场景中完全删除精灵。谢谢。而且我也试过
sprite.setVisible(false);
sprite.clearEntityModifiers();
sprite.setIgnoreUpdate(true);
sprite.clearUpdateHandlers();
sprite.reset();
sprite.detachSelf();
但之后onAreaTouch仍然被调用。
工作就像一个魅力:)。谢谢! – Waqas 2012-07-30 06:00:07