ANDROID ANDENGINE - 拖放堆叠的精灵

时间:2011-11-06 13:47:00

标签: android drag-and-drop sprite andengine

在我的应用程序中,我有一些精灵,我需要拖放显示器。 我定义了BitmapTextureAtlas和相应的TextureRegion,然后我从这些数据中创建了可拖动的精灵。

某些精灵必须设置在相同的位置,并且必须堆叠。

一切都很好,除了精灵接缝要堆叠,但当我触摸一个拖动,而不是拖动顶部的第一个,它会让我总是拖走底部的第一个。

我该如何解决?

此函数对精灵进行了初始化

public Vector<Sprite> initSprite(Vector<TextureRegion> tRegionV){
    Vector<Sprite> aux = new Vector<Sprite>();
    for(int i=0; i<dataV.size(); i++ ){
        final int gap = dataV.elementAt(i).gap;
        sprite = new Sprite(dataV.elementAt(i).x, dataV.elementAt(i).y, tRegionV.elementAt(i))

        // gestione del drag & drop
        {
            @Override
            public boolean onAreaTouched(final TouchEvent pSceneTouchEvent,
                    final float pTouchAreaLocalX, final float pTouchAreaLocalY) {
                setPosition(pSceneTouchEvent.getX() - this.getWidth() / 2, pSceneTouchEvent.getY()
                        - gap /*this.getHeight() / 2*/);
                //System.out.println("POSIZIONE X: "+(pSceneTouchEvent.getX()- this.getWidth() / 2) +" --- Y: " +(pSceneTouchEvent.getY() - this.getHeight() / 2));
                //System.out.println("ALTEZZA: "+this.getHeight());

                return true;
            }
        };

        if(sprite==null)   System.out.println("AAAAAA sprite" +i+" null");
        aux.addElement(sprite);
    }

    return aux;
}

我以这种方式在场景中设置精灵

    for(int x=0;x<spriteV.size();x++){
        scene.getLastChild().attachChild(spriteV.elementAt(x));
    }

1 个答案:

答案 0 :(得分:2)

请参阅:MultiTouchExample.java

您可能想要这样做:

this.mScene.setOnAreaTouchTraversalFrontToBack();