public void releaseActionKeys() {
   keySize = keyActions.size();
   if (keySize > 0) {
     for (int i = 0; i < keySize; i++) {
       ActionKey act = (ActionKey) keyActions.get(i);
       act.release();
     }
   }
 }
 public final void onKeyUp(LKey e) {
   keySize = keyActions.size();
   if (keySize > 0) {
     int keyCode = e.getKeyCode();
     for (int i = 0; i < keySize; i++) {
       Integer code = (Integer) keyActions.getKey(i);
       if (code == keyCode) {
         ActionKey act = (ActionKey) keyActions.getValue(code);
         act.release();
       }
     }
   }
   release(e);
 }
  public final void alter(LTimerContext timer) {
    for (int i = 0; i < keySize; i++) {
      ActionKey act = (ActionKey) keyActions.get(i);
      if (act.isPressed()) {
        act.act(elapsedTime);
        if (act.isReturn) {
          return;
        }
      }
    }
    if (content.isVisible()) {
      processEvents();
      content.updateNode(timer.getMilliseconds());
    }
    if (follow != null) {
      for (TileMap tile : tiles) {
        float offsetX = getHalfWidth() - follow.getX();
        offsetX = MathUtils.min(offsetX, 0);
        offsetX = MathUtils.max(offsetX, getWidth() - tile.getWidth());

        float offsetY = getHalfHeight() - follow.getY();
        offsetY = MathUtils.min(offsetY, 0);
        offsetY = MathUtils.max(offsetY, getHeight() - tile.getHeight());

        setOffset(tile, offsetX, offsetY);
        tile.update(elapsedTime);
      }
    }
    for (SpriteBatchObject o : objects) {
      o.update(elapsedTime);
      if (updateListener != null) {
        updateListener.act(o, elapsedTime);
      }
    }
    update(elapsedTime);
    commits();
  }
 public void releaseActionKey(Integer keyCode) {
   ActionKey key = (ActionKey) keyActions.getValue(keyCode);
   if (key != null) {
     key.release();
   }
 }
 public void pressActionKey(Integer keyCode) {
   ActionKey key = (ActionKey) keyActions.getValue(keyCode);
   if (key != null) {
     key.press();
   }
 }