下面我有代码经常产生一个精灵和一个触摸方法来摆脱精灵(它工作正常)。我的问题是当一个zombieSprite2产生并且我等待另一个zombieSprite2产生(所以我在屏幕上有两个相同的精灵)当我触摸产生它的第一个zombiesprite2影响第二个zombiesprite2并且没有任何事情发生在第一个。可能是触摸方法只会影响最近生成的zombiesprite2吗?
this.getEngine().registerUpdateHandler(
zombieSpriteTimehandler = new TimerHandler(5, true,
new ITimerCallback() {
@Override
public void onTimePassed(TimerHandler pTimerHandler) {
// TODO Auto-generated method stub
zombieSprite2 = new Sprite(0, 200,
zombieregion, mEngine
.getVertexBufferObjectManager()) {
@Override
public boolean onAreaTouched(
final TouchEvent pSceneTouchEvent,
final float pTouchAreaLocalX,
final float pTouchAreaLocalY) {
ScaleModifier sm2 = new ScaleModifier(
5,zombieSprite2.getScaleX(),
zombieSprite2.getScaleX() + 1.03f);
zombieSprite2.registerEntityModifier(sm2);
if (zombieSprite2.getScaleX() > 1.02f) {
zombieSprite2
.setColor(Color.TRANSPARENT);
mScene.detachChild(zombieSprite2);
return true;
}
return false;
}
};
mScene.attachChild(zombieSprite2);
答案 0 :(得分:2)
你应该为每个产卵精灵声明一个新对象。这里你只在场景顶部声明一个精灵对象zombieSprite2&每次存储精灵的最后一个对象。所以你得到了这个效果。
解决方案:
final Sprite zombieSprite2 = new new Sprite(0, 200,
zombieregion, mEngine
.getVertexBufferObjectManager()) {
@Override
public boolean onAreaTouched(
final TouchEvent pSceneTouchEvent,
final float pTouchAreaLocalX,
final float pTouchAreaLocalY) { // do your works here}