2013-11-18 2 views
0

У меня проблема с AndEngineкнопка AndEngine Sprite должна оставаться нажатой

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

Я попытался с mButtonSprite.State.PRESSED, но я не знаю, как использовать его, может быть, вы можете мне помочь ...

Мой код:

public class MainActivity extends SimpleBaseGameActivity{ 

    private int WIDTH = 1600; 
    private int HEIGHT = 900; 

    private BuildableBitmapTextureAtlas mBitmapTextureAtlas; 

    private ITiledTextureRegion mButtonTextureRegion; 

    public Sprite mButtonSprite; 

    private State mState; 


@Override 
public EngineOptions onCreateEngineOptions() { 
      final Camera mCamera = new Camera(0, 0, WIDTH, HEIGHT); 

     return new EngineOptions(true, ScreenOrientation.LANDSCAPE_SENSOR, 
      new RatioResolutionPolicy(WIDTH, HEIGHT), 
      mCamera); 
} 

@Override 
protected void onCreateResources() { 
        BitmapTextureAtlasTextureRegionFactory.setAssetBasePath("gfx/"); 
    mBitmapTextureAtlas = new BuildableBitmapTextureAtlas(mEngine.getTextureManager(),WIDTH, HEIGHT,TextureOptions.BILINEAR); 

     mButtonTextureRegion = BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset(mBitmapTextureAtlas,this,"rectangle_one.png", 2,1); 


     try { 
      mBitmapTextureAtlas 
          .build(new BlackPawnTextureAtlasBuilder<IBitmapTextureAtlasSource, BitmapTextureAtlas>(
              0, 2, 1)); 
      mBitmapTextureAtlas.load(); 
     } catch (TextureAtlasBuilderException e) { 
      e.printStackTrace(); 
     } 
} 

@Override 
protected Scene onCreateScene() 
     {  
this.mEngine.registerUpdateHandler(new FPSLogger(60)); 
final Scene mScene = new Scene(); 

mScene.getBackground().setColor(00000, 00000,00000); 

mScene.setTouchAreaBindingOnActionDownEnabled(true); 


ButtonSprite mButtonSprite = new ButtonSprite(900,450, mButtonTextureRegion, 
      mEngine.getVertexBufferObjectManager()){ 

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

     return super.onAreaTouched(pSceneTouchEvent, pTouchAreaLocalX, pTouchAreaLocalY); 
    } 

}; 

mScene.registerTouchArea(mButtonSprite); 

mScene.attachChild(mButtonSprite); 

return mScene; 
     } 


} 

ответ

0

Создание спрайтов лист с двумя изображения говорят и продолжают (одна строка с 2 coloumns). Затем создайте анимированный спрайт, подобный этому

testsprite_music = new AnimatedSprite(0, 0, 
        resourcesManager.test_region_music, vbom) { 
       @Override 
       public boolean onAreaTouched(final TouchEvent pSceneTouchEvent, 
         final float pTouchAreaLocalX, final float pTouchAreaLocalY) { 


        if (pSceneTouchEvent.isActionDown()) { 

         if (prefs.getBoolean("musiconoff", true)) { 
         // Log.e("The music is on im going to off ","The music is on im going to off "); 
          android.content.SharedPreferences.Editor editor = prefs.edit(); 
           editor.putBoolean("musiconoff", false); 
           editor.commit(); 
          testsprite_music.setCurrentTileIndex(0); 
         } 
         else 
         {// Log.e("The music is off im going to on ","The music is off im going to on "); 
          testsprite_music.setCurrentTileIndex(1); 
          android.content.SharedPreferences.Editor editor = prefs.edit(); 
           editor.putBoolean("musiconoff", true); 
           editor.commit(); 
         } 
        } 

        return true; 
       } 
      }; 
0
1. For CheckBox type: 
if you want to enable and disable a button as check box use shared preference 
For Example 


    boolean isChecked = getFromPreference(); 



if(isButtonEnbled) 
     { 
        // show checkSprite 
     }else{ 
        // show unchecked Sprite 
     } 

2.To show a button when pressed 

in onTouchArea we have three options 



     if(ActionBegin){ 
      // fadeIn 
     }else if(ActionEnd){ 
     // fade out 
     } 

In this way we have many alternatives 
Смежные вопросы