加入收藏 | 设为首页 | 会员中心 | 我要投稿 开发网_开封站长网 (http://www.0378zz.com/)- 科技、AI行业应用、媒体智能、低代码、办公协同!
当前位置: 首页 > 教程 > 正文

Android 游戏之场景的达成以及拓展应用照片浏览器

发布时间:2021-11-22 09:43:59 所属栏目:教程 来源:互联网
导读:我们说下Android游戏,当我们过关卡的时候游戏中或许出现场景切换,这对做游戏开发的同学们在熟悉不过了,这里我简单介绍下,一来自己巩固下学习的知识,二来把我学习的心得分享出来,以便大家共同进步. 实现原理:首先我们对屏幕进行clipRect获取相应的矩形

我们说下Android游戏,当我们过关卡的时候游戏中或许出现场景切换,这对做游戏开发的同学们在熟悉不过了,这里我简单介绍下,一来自己巩固下学习的知识,二来把我学习的心得分享出来,以便大家共同进步.
 
实现原理:首先我们对屏幕进行clipRect获取相应的矩形模块.然后在用图片进行填充.
 
矩形(横向)交差场景实现:
 
/***
  * 矩形场景(横向)
  */
 public void doRect_H() {
  /** 交错的实现矩形相交 **/
  int ractHeight = (mScreenHeight / ractCount);// 获取每个矩形宽度.
  // 左边开始(偶数0,2,4...)
  for (int i = 0; i < ractCount; i += 2) {
   drawFillRect(mCanvas, Color.BLACK, 0, i * ractHeight, rectStep,
     ractHeight);
  }
  // 右边开始(奇数1,3,5...)
  for (int i = 1; i < ractCount; i += 2) {
   drawFillRect(mCanvas, Color.BLACK, mScreenWidth - rectStep, i
     * ractHeight, rectStep, ractHeight);
  }
 
 }
 
我简单讲解下流程:针对屏幕我们分割成10条矩形,然后我们在对这10条矩形进行一一填充.而填充的就是下一个的场景.矩形(纵向)交差场景同理.
 
这里要说明一点,你要理解canvas的save和restore方法.
 
save:用来保存Canvas的状态。save之后,可以调用Canvas的平移、放缩、旋转、错切、裁剪等操作。
 
restore:用来恢复Canvas之前保存的状态。防止save后对Canvas执行的操作对后续的绘制有影响。
 
save和restore要配对使用(restore可以比save少,但不能多),如果restore调用次数比save多,会引发Error。save和restore之间,往往夹杂的是对Canvas的特殊操作。
 
百叶窗场景实现:
 
/***
  * 百叶窗场景
  */
 public void doSQUARE() {
  /** 百叶窗效果利用双for循环 修改每个矩形绘制的宽度 **/
  for (int i = 0; i <= (mScreenWidth / squareRange); i++) {// 算取宽包含多少个正方形,
   for (int j = 0; j <= (mScreenHeight / squareRange); j++) {// 算去高包含多少正方形.
    drawFillRect(mCanvas, Color.BLACK, i * squareRange, j
      * squareRange, rectStep, rectStep);
   }
  }
 }
 
简单说明:根据View的宽高分割成若干个正方形然后一一进行填充.
 
滚动(向右)水纹场景:
 
/***
  * 滚动水纹场景(右移动)
  */
 public void doSHADOW_RINGHT() {
  /***
  * 在这里我们要算去各个矩形的宽度以及起始的X坐标
  *
  * 注意要理解其含义.
  */
  int X1 = rectStep + rectX1;// 矩形1的x坐标
  int rectWidth1 = rectW + 12;// 矩形1的宽度
  int X2 = X1 + rectWidth1 + rectX2;
  int rectWidth2 = rectW + 5;
  int X3 = X2 + rectWidth2 + rectX3;
  int rectWidth3 = rectW;
 
  /** 水纹效果其实绘制了4个矩形 中间留一些缝隙 **/
  drawFillRect(mCanvas, Color.BLACK, 0, 0, rectStep, mScreenHeight);
 
  drawFillRect(mCanvas, Color.BLACK, X1, 0, rectWidth1, mScreenHeight);
 
  drawFillRect(mCanvas, Color.BLACK, X2, 0, rectWidth2, mScreenHeight);// 绘制第二条矩形
 
  drawFillRect(mCanvas, Color.BLACK, X3, 0, rectWidth3, mScreenHeight);// 绘制第三条矩形
 
 }
 
简单说明:首先我们将屏幕分割四个长方形.第一个会时时增大及向右移动,而其余三个长方形也跟随右移动,所以感觉类似于滚动波纹.滚动(向左)水纹场景同理.
 
横向分割场:
 
/***
  * 横向分割图片
  */
 public void doHalf_V() {
  int Y = mScreenHeight / 2;// 获取中间分割线
  int Y1 = Y - rectStep;// 上半部分X坐标
 
  drawFillRect(mCanvas, Color.BLACK, 0, Y1, mScreenWidth, rectStep);// 绘制上部分
 
  drawFillRect(mCanvas, Color.BLACK, 0, Y, mScreenWidth, rectStep);// 绘制下部分
 }
 
 

(编辑:开发网_开封站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读