Хорошо, я сделал это.Если вы хотите знать, есть код;)
var Exercise2 = {
$sandbox: $('#exercise2 .sandbox'),
$shield: $('#exercise2 .sandbox .shield'),
$speed: 1,
$direction: 1,
$timer: null,
$X: [$("#exercise2 .sandbox").position().left, $("#exercise2 .sandbox").width() + $("#exercise2 .sandbox").position().left - 87],
run: function() {
Exercise2.$timer = setInterval(function() {
if ($('#exercise2 .sandbox .shield').position().left < Exercise2.$X[0] || $('#exercise2 .sandbox .shield').position().left > Exercise2.$X[1]) {
Exercise2.$direction *= -1;
Exercise2.$speed *= -1;
}
$("#exercise2 .sandbox .shield").animate({
left: "+=" + Exercise2.$speed,
}, 10)
}, 30)
},
click: function() {
this.$shield.bind("click", function() {
clearInterval(Exercise2.$timer);
scoreExercise2.run();
if (Exercise2.$direction == 1) {
Exercise2.$direction = 1;
if (Exercise2.$speed < 0) {
Exercise2.$speed *= -1;
}
Exercise2.$speed += 1;
} else {
Exercise2.$direction = -1;
if (Exercise2.$speed > 0) {
Exercise2.$speed *= -1;
}
Exercise2.$speed -= 1;
}
Exercise2.run();
})
},
};
var scoreExercise2 = {
$shots: 1,
$text: $('#exercise2 shots'),
$shield: $('#exercise2 .sandbox .shield'),
run: function() {
$('#exercise2 .shots').html("");
$('#exercise2 .shots').append(scoreExercise2.$shots);
scoreExercise2.$shots += 1;
}
}
Exercise2.click();
.sandbox:empty {
display: none
}
.sandbox {
border: 1px solid #000;
border-radius: 5px;
padding: 5px;
margin: 5px auto;
}
#exercise2 .sandbox .shield {
width: 100px;
height: 100px;
border-radius: 50px;
position: relative;
left: 0%;
background: radial-gradient(ellipse at center, yellow 0%, red 20%, blue 40%, black 60%, yellow 80%);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="exercise2">
Number of shots =
<div style="display: inline-block;" class="shots"></div>
<div class="sandbox">
<div class="shield"></div>
</div>
</div>
Может быть, глючит после увеличения скорости, но это работает по крайней мере.Если хочешь, не можешь дать мне несколько советов, чтобы это исправить.