title: AndEngine how to make a sprite not jump if jump method is called
body: <p>So I have this method that when i touch the screen my sprite will jump. Now the problem is when I continuously touch the screen the sprite will jump again and again. What I want to do is if it jumps, the jump method cannot be called unless my sprite hits the ground. </p>
  
  <p>Here is the code.</p>
  
  <p><pre>
  public class PhyiscsActivity extends BaseGameActivity implements IAccelerometerListener, IOnSceneTouchListener{</p>
  
  <code>private static final int CAMERA_WIDTH = 720;
  private static final int CAMERA_HEIGHT = 480;
  private Camera mCamera;
  private BitmapTextureAtlas mBitmapTextureAtlas;
  private TiledTextureRegion mTextureRegion;
  private Scene mScene;
  private FixtureDef mFixtureDef = PhysicsFactory.createFixtureDef(1,-10f, 0.5f);
  private PhysicsWorld mPhysicsWorld;
  private Body body;
  private AnimatedSprite facebox;
  private FixtureDef wallfixture = PhysicsFactory.createFixtureDef(-1,0.5f, 0.5f);
  @Override
  public Engine onLoadEngine() {
      // TODO Auto-generated method stub
      this.mCamera = new Camera(0,0,CAMERA_WIDTH, CAMERA_HEIGHT);
      final EngineOptions mEngineOptions = new EngineOptions(true, ScreenOrientation.LANDSCAPE, new RatioResolutionPolicy(CAMERA_WIDTH, CAMERA_HEIGHT),this.mCamera);
      mEngineOptions.getTouchOptions().setRunOnUpdateThread(true);
      return new Engine(mEngineOptions);
  }
  
  @Override
  public void onLoadResources() {
      // TODO Auto-generated method stub
      this.mBitmapTextureAtlas = new BitmapTextureAtlas(128,128, TextureOptions.BILINEAR_PREMULTIPLYALPHA);
      this.mTextureRegion = BitmapTextureAtlasTextureRegionFactory.createTiledFromAsset(mBitmapTextureAtlas, this, "gfx/face_box_tiled.png", 0, 0, 2, 1);
      this.mEngine.getTextureManager().loadTexture(this.mBitmapTextureAtlas);
  }
  
  @Override
  public Scene onLoadScene() {
      // TODO Auto-generated method stub
      this.mEngine.registerUpdateHandler(new FPSLogger());
      this.mScene = new Scene();
      this.mScene.setBackground(new ColorBackground(1,1,1));
      this.mPhysicsWorld = new PhysicsWorld(new Vector2(0,SensorManager.GRAVITY_EARTH),false);
  
      // This is the walls
      final Shape roof = new Rectangle(0, 0, CAMERA_WIDTH, 2);
      final Shape ground = new Rectangle(0,CAMERA_HEIGHT - 2,CAMERA_WIDTH,2);
      final Shape left = new Rectangle(0,0,2,CAMERA_HEIGHT);
      final Shape right = new Rectangle(CAMERA_WIDTH -2, 0,2,CAMERA_HEIGHT);
      PhysicsFactory.createBoxBody(this.mPhysicsWorld, ground, BodyType.StaticBody, wallfixture);
      PhysicsFactory.createBoxBody(this.mPhysicsWorld,  roof, BodyType.StaticBody, wallfixture);
      PhysicsFactory.createBoxBody(this.mPhysicsWorld, left, BodyType.StaticBody, wallfixture);
      PhysicsFactory.createBoxBody(this.mPhysicsWorld, right, BodyType.StaticBody, wallfixture);
  
      // This is the Sprite
      facebox = new AnimatedSprite(30,(CAMERA_HEIGHT - 2) -  this.mTextureRegion.getHeight()  ,this.mTextureRegion);
      body = PhysicsFactory.createBoxBody(this.mPhysicsWorld, facebox, BodyType.DynamicBody, mFixtureDef);
      this.mScene.attachChild(facebox);
  
      this.mScene.registerUpdateHandler(this.mPhysicsWorld);
      this.mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(facebox,body,true,true));
      this.mScene.setOnSceneTouchListener(this);
      return this.mScene;
  
  }
  
  @Override
  public void onLoadComplete() {
      // TODO Auto-generated method stub
  
  }
  
  
  //Accelerometer
  @Override
  public void onAccelerometerChanged(AccelerometerData pAccelerometerData) {
      // TODO Auto-generated method stub
      final Vector2 gravity = Vector2Pool.obtain(pAccelerometerData.getX()* 3, 10);
      this.mPhysicsWorld.setGravity(gravity);
      Vector2Pool.recycle(gravity);
  }
  
  @Override
  protected void onResume() {
      // TODO Auto-generated method stub
      super.onResume();
      this.enableAccelerometerSensor(this);
  }
  
  @Override
  protected void onPause() {
      // TODO Auto-generated method stub
      super.onPause();
      this.disableAccelerometerSensor();
  }
  
  //This is where i make the sprite jump
  @Override
  public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) {
      pSceneTouchEvent.isActionDown();{
          this.jump(facebox);
      }
      return false;
  
  
  }
  public void jump(AnimatedSprite sprite){
      boolean jumping = false;
      if(!jumping ){
          body.setLinearVelocity(new Vector2(body.getLinearVelocity().x,-8f));        
          }
      }
  
  public void jump(AnimatedSprite sprite){
      if(!jumping){
         body.setLinearVelocity(new Vector2(body.getLinearVelocity().x,-10));     
         jumping = true;
      }
  
      }
  
  @Override
  public void beginContact(Contact contact) {
      // TODO Auto-generated method stub
      jumping = true;
  }
  
  @Override
  public void endContact(Contact contact) {
      // TODO Auto-generated method stub
  jumping = false;
  }
  </code></pre>
  
  <p>I don't know why the beginContact and endContact isn't initialzing. are there things that i should do to initialize this? example like updating a handler? contactlistener? </p>