java - 如何在java中更好地编写开关代码(精确数字的平滑移动)
问题描述
这是在我试图用java制作的游戏中平滑移动按钮的代码。有没有办法让这段代码更小?我想要这些确切的数字,我应该使用数组还是什么?请你能给我一些关于如何使它更简单的例子吗?
if(viewJumping == 1) {
switch(viewGravity) {
case 0:
viewY -= 2;
viewJumping = 2;
break;
case 1:
viewY -= 2;
break;
case 2:
viewY -= 2;
break;
case 3:
viewY -= 2;
break;
case 4:
viewY -= 4;
break;
case 5:
viewY -= 8;
break;
case 6:
viewY -= 16;
break;
case 7:
viewY -= 24;
break;
case 8:
viewY -= 32;
break;
case 9:
viewY -= 40;
break;
case 10:
viewY -= 48;
break;
case 12:
viewY += 2;
viewJumping = 0;
break;
case 13:
viewY += 2;
break;
case 14:
viewY += 2;
break;
case 15:
viewY += 2;
break;
case 16:
viewY += 4;
break;
case 17:
viewY += 8;
break;
case 18:
viewY += 16;
break;
case 19:
viewY += 24;
break;
case 20:
viewY += 32;
break;
case 21:
viewY += 40;
break;
case 22:
viewY += 48;
break;
}
viewGravity -= 1;
}
解决方案
你对数组的想法可能会导致这样的事情:
int [] viewYs = {-2, -2, -2, -4 .....}
int newValue = viewY + viewYs[viewGravity]
if/else
对于您的viewJumping
参数来说可能很简单
推荐阅读
- amazon-cognito - 为了将 { cognito-identity.amazonaws.com:aud } 的价值传递给 IAM 角色,我应该如何以及传递什么?
- java - 如何通过 JSch 以编程方式处理 Kerberos 提示
- ruby-on-rails - Action Mailer 'undefined method `[]' for nil:NilClass'
- python - ValueError:找到暗淡为 3 的数组。估计器预期 <= 2。>>>
- spring-data - Apache Ignite cache data is not getting replicated on every cluster node, when cache mode set to REPLICATED
- jmeter - How to remove array present in Json in jmeter
- postgresql - Stimulsoft Report Unicode Character from Postgresql
- c# - 如何删除 SQL Server 扩展事件事件文件 (.xel)?
- fortran - gfortran 编译错误错误: (1) 处的不可分类语句
- mysql - MySQL sort ordered grouped data