您的位置:首页 > 其它

【v2.x OGE-example 第二章(第一节) 精灵的移动】

2014-11-06 17:56 246 查看


1. 位置:Modifier_example --> MovingBall
2. 类名:MovingBall
 


 

(1).精灵的移动我们可以在每次刷新的时候更新精灵的X, Y位置来达到移动的效果,下面我们用PhysicsHandler 事件来移动一个笑脸精灵,通过更改PhysicsHandler 事件的X, Y速率使精灵动起来。
 

/**

  * 定义一个Ball精灵

  * @author lin

  *

  */

private static class Ball extends AnimatedSprite {

  /**移动处理事件*/

  private final PhysicsHandler mPhysicsHandler;//一个自动更新实体位置的IUpdateHandler逻辑事务

  

  public Ball(final float pX, final float pY, String pTextureRegion, final VertexBufferObjectManager pVertexBufferObjectManager) {

   super(pX, pY, pTextureRegion, pVertexBufferObjectManager);

   this.mPhysicsHandler = new PhysicsHandler(this);//实例化事件

   this.registerUpdateHandler(this.mPhysicsHandler);//注册事件,注册后才会被执行

   this.mPhysicsHandler.setVelocity(DEMO_VELOCITY, DEMO_VELOCITY);//设置X, Y速率

  }

  //控制精灵永远在屏幕内移动,不会超出屏幕外

  @Override

  protected void onManagedUpdate(final float pSecondsElapsed) {

   if(this.mX < 0) {//ball 精灵x坐标小于0时

    this.mPhysicsHandler.setVelocityX(DEMO_VELOCITY);//设置x速率为正,即往右移动

   } else if(this.mX + this.getWidth() >= SCENE_WIDTH) {//ball 精灵x坐标大于屏幕右边时,即快移出屏幕右边

    this.mPhysicsHandler.setVelocityX(-DEMO_VELOCITY);//设置x速率为负,即往左移动

   }

   if(this.mY < 0) {//ball 精灵y坐标小于0时

    this.mPhysicsHandler.setVelocityY(DEMO_VELOCITY);//设置y速率为正,即往下移动

   } else if(this.mY + this.getHeight() >= SCENE_HEIGHT) {//ball 精灵y坐标大于屏幕下边时

    this.mPhysicsHandler.setVelocityY(-DEMO_VELOCITY);//设置y速率为负,即往上移动

   }

   super.onManagedUpdate(pSecondsElapsed);//执行父类的方法

  }

}

 

 

OGE_Example项目源码

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: