Как передвигаться по изображению с помощью JavaScript?
Я разрабатываю простую веб-викторину и использую javascript, я хотел бы создать эффект, который отображает маленькое изображение (1UP), которое блуждает по "игровой колоде", когда пользователи достигают определенного уровня или счета; пользователь может получить дополнительную жизнь, просто нажав на нее вовремя.
Знаете ли вы какой-либо плагин Jquery или фрагмент JavaScript, чтобы добиться такого эффекта?
2 ответа
Это на самом деле удивительно легко сделать это:
Создайте элемент:
img = document.createElement('img');
Установите его источник:
img.src = "myimage.png";
Позиционируйте это абсолютно и так:
img.style.position = "absolute";
img.style.left = "50px";
img.style.top = "50px";
img.style.width = "50px"; // Make these match the image...
img.style.height = "50px"; // ...or leave them off
(Очевидно, используйте любые координаты и размер, который вы хотите.)
Вы можете убедиться, что он отображается над другими вещами:
img.style.zIndex = 100; // Or whatever
Добавьте это к документу:
document.body.appendChild(img);
Переместить его
использование window.setInterval
(или же setTimeout
в зависимости от того, как вы хотите это сделать) переместить его, изменив его style.left
а также style.top
Настройки. Ты можешь использовать Math.random
чтобы получить случайное число с плавающей запятой между 0 и 1, умножить это и запустить его через Math.floor
чтобы получить целое число для изменения ваших координат.
пример
Это создает изображение в 50,50 и анимирует его (очень нервным случайным образом; я не тратил время, чтобы оно выглядело изящно) каждую пятую секунды в течение 10 секунд, а затем удаляет его:
function createWanderingDiv() {
var img, left, top, counter, interval;
img = document.createElement('img');
img.src = "myimage.png";
left = 200;
top = 200;
img.style.position = "absolute";
img.style.left = left + "px";
img.style.top = top + "px";
img.style.width = "200px"; // Make these match the image...
img.style.height = "200px"; // ...or leave them out.
img.style.zIndex = 100; // Or whatever
document.body.appendChild(img);
counter = 50;
interval = 200; // ms
window.setTimeout(wanderAround, interval);
function wanderAround() {
--counter;
if (counter < 0)
{
// Done; remove it
document.body.removeChild(img);
}
else
{
// Animate a bit more
left += Math.floor(Math.random() * 20) - 10;
if (left < 0)
{
left = 0;
}
top += Math.floor(Math.random() * 10) - 5;
if (top < 0)
{
top = 0;
}
img.style.left = left + "px";
img.style.top = top + "px";
// Re-trigger ourselves
window.setTimeout(wanderAround, interval);
}
}
}
(Я предпочитаю перепланирование на каждую итерацию через setTimeout
[как указано выше] для использования setInterval
, но это полностью ваш звонок. При использовании setInterval
запомните дескриптор интервала [возвращаемое значение из setInterval
и использовать window.clearTimeout
отменить его, когда вы закончите.)
Выше сырой DOM/JavaScript; jQuery предлагает несколько помощников, чтобы сделать его немного проще, но, как вы можете видеть, это довольно просто, даже без.
Есть также функция jQuery, которую можно использовать для перемещения вещей.
Смотрите это для примеров: http://api.jquery.com/animate/