В настоящее время я делаю веб-игру для детей в свободное время, и у меня есть некоторый код, который рисует «частицы камня» всякий раз, когда по скале нажимают.
Вы можете посмотреть игру здесь и нажать на скалу, чтобы иметь лучшее представление о том, что я хочу: github page link здесь
Текущий код у меня такой:
Game.drawRockParticles = (event) => {
let div = document.createElement('div')
div.classList.add('particle')
let x = event.clientX
let y = event.clientY
div.style.left = x + 'px'
div.style.top = y + 'px'
let particleY = y
let particleX = x
let randomNumber = Math.random()
let randomSign = Math.round(Math.random()) * 2 - 1
let particleUp = setInterval(() => {
particleX += randomNumber * randomSign
particleY -= 1
div.style.top = particleY + 'px'
div.style.left = particleX + 'px'
}, 10)
setTimeout(() => {
clearInterval(particleUp)
let particleDown = setInterval(() => {
particleX += randomNumber * randomSign / 2
particleY += 1.5
div.style.top = particleY + 'px'
div.style.left = particleX + 'px'
}, 10)
setTimeout(() => {
clearInterval(particleDown)
if (div.parentNode) div.parentNode.removeChild(div)
}, 1000)
}, 100)
s('body').append(div)
}
}
Чтобы сэкономить некоторое время на том, что делает этот блок кода, когда вы нажимаете на камень, он генерирует частицу. Затем код определяет, должна ли частица падать влево или вправо. Затем частица немного поднимается, затем падает в соответствии с заранее определенным направлением.
Я почти уверен, что это крайне неэффективно и замедляет мою игру.
Я полагаю, что я могу достичь такого рода с помощью CSS-преобразований с кубическим Безье? Я не совсем уверен. Просто ищу другие возможные идеи для этого.
Спасибо!