ANDROID ANDENGINE - перетаскивание сложенных спрайтов - PullRequest
0 голосов
/ 06 ноября 2011

в моем приложении у меня есть несколько спрайтов, которые мне нужно перетащить на дисплей. я определил 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 Ответ

2 голосов
/ 11 ноября 2011

См .: MultiTouchExample.java

Возможно, вы захотите сделать:

this.mScene.setOnAreaTouchTraversalFrontToBack();
...