เปลี่ยนภาพของสไปรท์และเครื่องยนต์

สวัสดี ฉันใช้ 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