2012-01-15 61 views
0

我正在使用AndEngines onSceneTouchEvent方法为精灵创建跳转效果。AndEngine SceneTouchEvent

我遇到的问题是,如果用户触摸屏幕,例如他们三次点击屏幕,精灵将继续跳跃,我想要的是它只接收1次点击并为一次触摸做一次跳跃。

这是我正在使用哪些是导致此问题。 正如你所看到的,我尝试使用mIsJumping布尔值,并且当玩家与一个不可见的矩形碰撞时,它会再次设置为false以允许再次跳转。

@Override 
public boolean onSceneTouchEvent(Scene pScene, TouchEvent pSceneTouchEvent) { 

    if(pSceneTouchEvent.isActionUp()){ 

      if(mIsJumping == false){ 
        SequenceEntityModifier jumpModifier = new SequenceEntityModifier(
           new MoveYModifier(.6f, player.getY(), player.getY() - 250, EaseQuadOut.getInstance()), 
           new MoveYModifier(.6f, player.getY() - 250, player.getY(), EaseBounceOut.getInstance())); 
         player.registerEntityModifier(jumpModifier); 

      } 


    } 



    return false; 
} 

从我上面的描述我怎么才能只注册一个触摸,并跳一次,直到精灵与矩形碰撞?

回答

2

甚至有一个更简单的解决方案 - 使用IEntityModifierListener

创建监听器是这样的:

final IEntityModifier.IEntityModifierListener listener = new IEntityModifier.IEntityModifierListener() { 

     @Override 
     public void onModifierStarted(IModifier<IEntity> pModifier, 
       IEntity pItem) { 

     } 

     @Override 
     public void onModifierFinished(IModifier<IEntity> pModifier, 
        IEntity pItem) { 
      mIsJumping = false; 

     } 

}; 

它注册到上下移动玩家MoveYModifier。所以,当修改结束时(跳转修改结束),mIsJumping将为假。此外,请记得在跳转开始时将mIsJumping设置为true

+0

优秀的解决方案!谢谢Jong! – 2012-01-15 16:13:25