随着游戏的进行,敌人变得越来越强大。为了使敌人更强大,我创建了一个私有的称为theal的int(可能是一个错误的编程选择),并且每次将sprite触摸thealth时;直到达到零并移除精灵。效果很好,直到我决定一次在场景中包含多个精灵。我遇到的问题是,如果此子画面的定理为两个(例如),而我触摸它,则所有其他子画面均具有定理-;太。那么,如何使每个精灵保持自己的健康,因此如果我触摸它,其他精灵将不会受到影响?

@Override
public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {
    if (pSceneTouchEvent.isActionDown()) {
        if (this.getAlpha() > 0.8f) {
            thealth--;
        }
        if (thealth == 0) {
            this.detachSelf();
            mScene.unregisterTouchArea(this);
            Score++;
            if (Score < 35) {
                thealth = 1;
            }
            if (Score > 35) {
                thealth = 2;
            }
            if (Score > 100) {
                thealth = 3;
            }
        }
        return true;
    }
    return false;
}

最佳答案

修改代码的建议:


确保敌人的精灵是一个职业,并且其中包含了守卫(有点明显,但以防万一)
确保thealth变量没有static关键字(如果有的话,该变量将在类的所有实例中共享)。


例如。

class Enemy extends Sprite{
    int thealth=4; //Or whatever you want really
}

08-28 16:40