rhemielco Ответов: 1

Как предупредить остроконечное изображение, когда вращение на нем останавливается?


Я попытался поискать в google и все вопросы, связанные с этой проблемой, но мне это не удалось.

В моем случае у меня есть два холста, соединенных вместе с помощью z-индекса. Первый-это изображения, формирующиеся в круг, а второй-вращающееся изображение, которое и есть само полотно.

Теперь моя проблема заключается в том, как я могу заставить изображения реагировать на вращающиеся изображения, когда они направлены перед собой. Это возможно? Может кто-то, у кого есть какой-то опыт или, возможно, знания о том, как решить эту проблему.

Пожалуйста, посмотрите мой код здесь:
Edit fiddle - JSFiddle[^]

Что я уже пробовал:

У меня нет никаких знаний о том, как решить эту проблему.

1 Ответов

Рейтинг:
10

Richard Deeming

Ты будешь немного заниматься математикой.

Во-первых, определите, под каким углом ваша бутылка будет заканчиваться, от 0° до 360°.

var clamped = deg % 360;
if (clamped < 0) { clamped += 360; }

Затем выясните, к какому из ваших образов это приравнивается. У вас есть 10 изображений, равномерно расположенных по кругу, поэтому простое решение состоит в том, чтобы разделить угол на 36 и использовать результат, чтобы получить целое число.
var index = Math.floor(clamped / 36);
Math. floor () - JavaScript | MDN[^]

Из-за того, как вы расположили свои изображения, индекс 0 приравнивается к числу 6; индекс 5 приравнивается к числу 1; индекс 9 приравнивается к числу 5. (Вам не нужно беспокоиться об индексе 10, потому что угол всегда будет между 0 и 359, поэтому индекс всегда находится между 0 и 9.)
var number = (index < 5) ? index + 6 : index - 4;

Теперь у вас есть номер, на который в конечном итоге будет указывать ваша вращающаяся графика. Что вы с ним сделаете, зависит только от вас.

NB: Будут некоторые странные случаи, когда бутылка указывает между двумя числами, и код выбирает одно из них. Возможно, вы захотите найти способ поместить "буфер" между числами, который не относится ни к одному из них.

Обновленная скрипка[^]


rhemielco

большое вам спасибо за вашу огромную помощь в решении моей проблемы. это действительно очень хорошо действует на меня. Вы-это большая помощь для нас начинающих.