2012-01-15 34 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