2015-02-14 2 views
0

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

Вот мой код:

Sprite btnMultiPLayer = new ButtonSprite(CAMERA_WIDTH/2-BtnMultiPlayerUpITextureRegion.getWidth()/2, 300, BtnMultiPlayerUpITextureRegion,BtnMultiPlayerDownITextureRegion, this.getVertexBufferObjectManager(), new OnClickListener() { 
    @Override 
    public void onClick(ButtonSprite pButtonSprite, float pTouchAreaLocalX, float pTouchAreaLocalY) { 
     Intent z = new Intent(MainMenuActivity.this, PlayerIdentity.class); 
     startActivity(z);    
    } 
}); 
mMainScene.registerTouchArea(btnMultiPLayer); 
mMainScene.attachChild(btnMultiPLayer); 
mMainScene.setTouchAreaBindingOnActionDownEnabled(true); 

Так как у меня не хватает репутации я не могу опубликовать мое разбитое меню непосредственно.

http://imageshack.com/a/img540/5185/Ejs3WV.jpg

Может кто-нибудь мне помочь? Я развиваюсь в Android с помощью Eclipse и AndEngine.

ответ

1

Путь к этому с TiledSprite. В принципе, это спрайт, который может переключаться между различными частями одного изображения по требованию. Например, рассмотрим следующее изображение: Tiled sprite example

С помощью TiledSprite это изображение будет разбито на две «плитки» - т. Е. Части. Спрайт, который будет содержать это изображение, будет установлен по умолчанию, чтобы показать tile 0 (в нашем случае левую часть), но при нажатии он переключится на черепицу 1 (правая часть), и, таким образом, даст кнопку нажатой кнопки эффекта. Схема кода будет что-то вроде этого:

TiledSprite tsprite = new TiledSprite(0,0,tiledregion,getVertexBufferObjectManager()){ 
    @Override 
    public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, final float pTouchAreaLocalX, final float pTouchAreaLocalY) {pTouchAreaLocalY); 
    if(pSceneTouchEvent.isActionDown()){ 
     tsprite.setCurrentTileIndex(1); 
    } 
    else{ 
     tsprite.setCurrentTileIndex(0); 
    } 
    return true; 
} 

Смотрите этот учебник для получения дополнительной информации: http://techtopz.in/2013/12/27/andengine-tiled-sprites-tutorial/

+0

Где часть мы должны вставить наше имя файла спрайтов? –

+0

@YoshuaRudy как с любым 'спрайтом', эта часть выполняется при инициализации' TextureRegion'. Например: 'tiledregion = BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset (mBitmapTextureAtlas, this," myTiledSprite.png ", 1, 2);' Когда «myTiledSprite.png» является именем файла изображения. Взгляните на учебные пособия, которые я вставлял в свой ответ, для полного использования «TiledSprite» и/или поиска Google для получения дополнительной информации. – asherbar