我不太了解JS,但我必须做它的任务。现在我有一个球从屏幕的一侧反弹到另一侧。随着每次反弹,屏幕的颜色和球的变化。但是我希望每次反弹都会略微提高速度(或者每次弹跳时随机速度都会变得更容易)。这是我移动,弹跳和颜色变化的代码:
fill(r,g,b);
ellipse(circleX, circleY, circleSize, circleSize);
circleX += moveX;
if (circleX > width - circleSize / 2 || circleX < circleSize / 2) {
moveX = -moveX;
r = random(255);
g = random(255);
b = random(255);
}
moveX现在总是5,转回时变为-5。但我喜欢它,如果它变成-6然后+7再次前进。或类似的东西至少。 我提前感谢你们帮助我,请你解释一下,就像你正在给孩子解释一样。
答案 0 :(得分:1)
首先,让我们创建一个函数,它接受一个数字并返回+1
表示非负数(正数或0
)和-1
表示负数,即它是符号
function sign(x) {
if (x < 0) return -1;
return 1;
}
sign
的完整实施会为0
提供特殊情况,并且available natively in ES6
接下来,当需要更改moveX
将其大小(绝对值)和符号分开时,增加它的幅度并在翻转标志之前将两个部分重新组合在一起
moveX = -sign(moveX) * (Math.abs(moveX) + 1);
答案 1 :(得分:0)
跟踪圈子的反弹次数&#34;反弹&#34;并将其添加到速度。
var base_speed = 5;
var bounces = 0;
var direction = 1; //positive for moving right, negative for moving left
var moveX = base_speed + bounces * direction;
circleX += moveX;
if (circleX > width - circleSize / 2 || circleX < circleSize / 2) {
direction = -direction;
bounces++;
r = random(255);
g = random(255);
b = random(255);
}
答案 2 :(得分:0)
您需要在碰撞检测代码中添加另一个测试以提高速度。如果速度为正,则要添加1.如果速度为负,则需要减去1.您的代码看起来像这样......
String b64 = Base64.encodeBase64String(imageInByteArray);