Сменить изображение спрайта и движка

Привет, я использую Andengine для создания игрового приложения.

в том, что я хочу изменить фоновое изображение спрайта, когда я нажимаю на этот спрайт. может ли кто-нибудь помочь мне, как это сделать.

this.mFaceTextureRegionBackOn = TextureRegionFactory.extractFromTexture(this.mTextureBackOn);
this.mFaceTextureRegionBackOff = TextureRegionFactory.extractFromTexture(this.mTextureBackOff);

final ButtonSprite back = new ButtonSprite(centerXBack, centerYBack, this.mFaceTextureRegionBackOn, this.getVertexBufferObjectManager());
scene.attachChild(back);
back.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(ButtonSprite arg0, float arg1, float arg2) {
        MainActivity.this.mFaceTextureRegionBackOn = TextureRegionFactory.extractFromTexture(MainActivity.this.mTextureBackOff);
    }
});

есть кнопка спрайта, когда я нажимаю на эту кнопку, это область текстуры, которую я меняю, но это не может помочь мне изменить изображение этого спрайта


person Panchal Amit    schedule 25.10.2012    source источник


Ответы (2)


Аналогичное использование используется в AndEngineExamples, см. https://github.com/nicolasgramlich/AndEngineExamples/blob/GLES2/src/org/andengine/examples/UpdateTextureExample.java

person 正宗白布鞋    schedule 25.10.2012
comment
Но каждый раз требуется чтение с диска, что может быть медленнее. - person Mustafa; 30.06.2013
comment
@Mustafa, тогда вам следует рассмотреть возможность использования обычного TiledSprite и загрузить область мозаичной текстуры в начале. - person 正宗白布鞋; 30.06.2013

Почему нельзя просто создать два спрайта и переключать их видимость? Я переключаю звук кнопками включения\выключения таким образом:

soundOnBtn = new Sprite(TILE_SIZE/2, 0, TILE_SIZE, TILE_SIZE, gameResources.getSoundOnTR())
    {
        @Override
        public boolean onAreaTouched(TouchEvent pSceneTouchEvent, float pTouchAreaLocalX, float pTouchAreaLocalY)
        {
            soundOn = !soundOn;
            soundOnBtn.setVisible(soundOn);
            soundOffBtn.setVisible(!soundOn);
            return true;
        }
    };
    mainScene.registerTouchArea(soundOnBtn);
    soundOffBtn = new Sprite(TILE_SIZE/2, 0, TILE_SIZE, TILE_SIZE, gameResources.getSoundOffTR());
    soundOffBtn.setVisible(false);
    bottomPanelLayer.attachChild(soundOnBtn);       
    bottomPanelLayer.attachChild(soundOffBtn);
person elenatres    schedule 14.03.2013