Событие Andengine Touch для Entity

Мне нужно добавить событие касания в некоторые классы, которые расширяют класс Entity, но, похоже, это не работает.

Выполнение этого для Sprites, AnimatedSprites и примитивов работает как шарм, просто делая что-то вроде:

Sprite s = new Sprite(...){
    public boolean onAreaTouched(...){
           ...
    return true;
    }
}
registerTouchArea(s);

Но это не работает при применении к сущности или классу, расширяющему Entity.

Знаете, что нужно делать в этом случае? Возможно ли вообще использовать onAreaTouched в классе Entity? Если нет, что можно было бы обойти?

Пожалуйста помоги


person user3412355    schedule 12.03.2014    source источник


Ответы (1)


arrow_upward
0
arrow_downward

Это очень просто. Следуйте приведенному ниже коду

Создайте пример объекта. Код является самоописательным.

public class Example extends Entity implements IOnAreaTouchListener {

    public Rectangle aSprite;

    public Example(float pX, float pY,
            VertexBufferObjectManager pVertexBufferObjectManager) {

        // initialize  your sprite  & it's touch implementation
        aSprite = new Rectangle(pX, pY, 40, 40, pVertexBufferObjectManager) {

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

                if (pSceneTouchEvent.isActionUp()) {
                    Log.e("Rectangle aSprite", "isActionUp");
                    return true;
                }
                return false;
            }
        };

    }

    @Override
    public void onAttached() {

        super.onAttached();

    }

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


        aSprite.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX,
                pTouchAreaLocalY);

        return false;
    }

}

В вашем классе Custom Scene или в вашем onCreateScene() напишите так

    Example example = new Example(80, 80, getVertexBufferObjectManager());
    mCurrentScene.attachChild(example.aSprite);
    mCurrentScene.registerTouchArea(example.aSprite);
person Shihab Uddin    schedule 13.03.2014