0

我第一次在 Andengine 中开发我的第一个应用程序。我的项目描述是:

  1. 4 件彼此靠近放置
  2. 将 4 件移动并放置到 4 个不同的盘子上
  3. 在将 4 个不同的部件成功放置到 4 个不同的板上后,我生成了 4 个新部件,然后步骤(1)、(2)和(3)继续。

现在我已经实现了这样的场景:

  1. 最初我制作了新的BitmapTextureAtlas1sprites1并分配了具体位置
  2. 对于新对象,我制作了新的 BitmapTextureAtlas 并分配给以前的BitmapTextureAtlas1并类似于精灵

3.我 registerToucharea 和 atachchild 然后 unregisterTouchArea 和 DeatachChild 和 Follow(1 and 2 and 3)

这是正确的方法吗?

我面临的问题是:

当我将 pices1 放置到任何盘子时,它会成功移动,但是它们是隐藏在 pices1 初始位置的一些东西,当我再次从 pice1 的初始位置移动到任何盘子时......我的标志增加了一些对象被移动

4

1 回答 1

0

来自@GulZar 问题:

这是正确的方法吗?

答:不可以。您总是在开始游戏之前加载资源(图形),并且应该只加载一次。使用完精灵后,您可以调用 BitmapTextureAtlas.unload();

可能你会想:每次分离一个 Sprite,你都需要重新加载 Graphics。分离精灵只是将其从场景中删除,而不是从内存中删除。

您可以创建自定义精灵类以坦率地使用。例子:

 public class Food extends PixelPerfectAnimatedSprite {

               public Food(float pX, float pY,
                PixelPerfectTiledTextureRegion pTiledTextureRegion,
                VertexBufferObjectManager pVertexBufferObjectManager) {

               super(pX, pY, pTiledTextureRegion, pVertexBufferObjectManager);

        }
@Override
    public boolean onAreaTouched(TouchEvent pSceneTouchEvent,
            float pTouchAreaLocalX, float pTouchAreaLocalY) {

        return true;
    }

    @Override
    public void onAttached() {
         super.onAttached();
    } 
}

在这里,我为像素完美碰撞扩展了 PixelPerfectAnimatedSprite。您可以使用SpriteAnimatedSprite。然后,您可以覆盖 onAreaTouched、onAttached() 和 Entity 中的所有覆盖方法。现在,在 onAreaTouched() 内部,您可以编写移动过程中发生的逻辑。

完成上述操作后,您可以从您的游戏场景中调用它。当玩家将一个棋子移到盘子上时,然后设置条件/标记新棋子是否会被附加。取决于你的逻辑。解释更多以获得好的推文。

于 2013-05-02T09:30:14.880 回答