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

发布时间:2020-05-31 21:43:42 作者:橙游Orange
来源:网络 阅读:404

1. 位置:Modifier_example --> MovingBall

2. 类名:MovingBall

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

 

(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项目源码

 


推荐阅读:
  1. 大数据学习内容有哪些?大数据学习路线图
  2. 5年时间,Java程序员如何从小白晋升为大牛

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

java ios cocos2d

上一篇: Mysql数据库理论基础二

下一篇:apche ab 压力测试工具

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》