0

我是游戏开发的新手。我使用and-engine 来开发游戏。我创建精灵(例如:- 箭头击中敌人)当用户触摸屏幕时使用场景触摸监听器。我使用移动修改器来移动箭头。但是屏幕上不显示箭头。当我在 log-cat 显示中触摸屏幕时

日志猫错误

10-29 18:36:41.913: V/AndEngine(25704): org.andengine.input.touch.TouchEvent$TouchEventPool<TouchEvent> was exhausted, with 0 item not yet recycled. Allocated 1 more.

10-29 18:36:41.913: V/AndEngine(25704): org.andengine.util.adt.pool.PoolUpdateHandler$1<TouchEventRunnablePoolItem> was exhausted, with 0 item not yet recycled. Allocated 1 more.

代码

private void shootProjectile(final float pX, final float pY) {

        int offX = (int) (pX - player.getX());
        int offY = (int) (pY - player.getY());
        if (offX <= 0)
            return;

        final Sprite projectile;
        // position the projectile on the player
        projectile = new Sprite(player.getX(), player.getY(),
                arrow.deepCopy(),mEngine.getVertexBufferObjectManager());
        mainScene.attachChild(projectile);

        int realX = (int) (camera.getWidth() + projectile.getWidth() / 2.0f);
        float ratio = (float) offY / (float) offX;
        int realY = (int) ((realX * ratio) + projectile.getY());

        int offRealX = (int) (realX - projectile.getX());
        int offRealY = (int) (realY - projectile.getY());
        float length = (float) Math.sqrt((offRealX * offRealX) + (offRealY * offRealY));
        float velocity = 480.0f / 1.0f; // 480 pixels / 1 sec
        float realMoveDuration = length / velocity;

        // defining a move modifier from the projectile's position to the
        // calculated one
        MoveModifier mod = new MoveModifier(realMoveDuration,projectile.getX(), realX, projectile.getY(), realY);
        projectile.registerEntityModifier(mod);

        /*projectile.registerEntityModifier(modifier);

        PhysicsHandler handler = new PhysicsHandler(projectile);

        projectile.registerUpdateHandler(handler);

        handler.setVelocity(realX,realY);*/

        projectilesToBeAdded.add(projectile);
        // plays a shooting sound
    }

从上面的代码中,将箭头精灵移动到触摸屏幕的方向。但我无法显示箭头精灵。有人知道请帮我解决这个问题。

4

1 回答 1

1

有两件事会有所帮助:

  1. 这些错误消息是警告级别的消息,而不是错误。它们是andengine的正确操作。当触摸池中没有触摸时,它会在创建新触摸时发出警告。在池中的一些触摸之后,它们会被回收,因此仅当所需的触摸次数超过池中的数量时才会出现消息。摘要:不用担心这个。

  2. 创建精灵时,我看到 TextureRegion 参数“Arrow.deepCopy()”有些奇怪。我的猜测是该方法不会返回有效的 TextureRegion,因此不会显示您的箭头。由于任何数量的精灵都可以使用相同的纹理区域,我建议只使用对箭头纹理的标准引用。

问题的范围将是以下两件事之一:没有纹理,或者箭头被放置在屏幕外。所以首先将精灵放在你知道它会被看到的地方,没有修饰符。如果你看到它,你的质地很好。如果纹理好,那么修改器中的位置不好,所以再次检查你的数学并再试一次。

于 2013-10-29T20:17:42.107 回答