产卵精灵gles2
问题描述:
下面我有代码来每隔一段时间产生一个精灵和一个触摸方法来摆脱精灵(它工作正常)。我的问题是当一个zombieSprite2产生并且我等待另一个zombieSprite2产生(所以我有两个相同的精灵在屏幕上),当我触摸产生它的第一个zombiesprite2时会影响第二个zombiesprite2,第一个没有任何反应。触摸方法只能影响最近衍生出来的zombiesprite2吗?产卵精灵gles2
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);
答
你应该为每个产卵精灵声明新的对象。这里你每次存储精灵的最后一个对象时,在场景&的顶部只声明一个精灵对象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}
不要忘了接受的答案,如果它值得。 – 2013-04-29 05:22:49
回复它,你看到了这一点。谢谢。 – 2013-04-29 05:24:24
谢谢,当我把最终的Sprite zombieSprite2放在我的ontouch方法中时,说本地变量zombieSprite2可能没有被初始化。在我制作一个公共Sprite zombieSprite2变量之前,这是问题的一部分。对不起,花了这么长的时间来回复。 – user2300663 2013-04-29 23:58:57