Событие 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)


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

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

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