Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.05.2017, 21:02
Новичок на форуме
Отправить личное сообщение для pershay Посмотреть профиль Найти все сообщения от pershay
 
Регистрация: 17.05.2017
Сообщений: 2

Как зациклить анимацию рандомных фигур в игре jquery?
Должна получиться игра, суть которой следующая: произвольная фигура (circle, square, triangle, rhombus) движется слево направо в игровом поле 80% от ширины браузера. Когда игрок нажимает на фигуру она исчезает, очки добавляются к счету (от 0 до 100 очков, в зависимости от того, насколько далеко фигура успела сместится от левого края). Следующая произвольная фигура начинает движение. Вопросы: как зациклить анимацию? Каким образом выводить фигуры рандомно (Math.random()?).
https://jsfiddle.net/gc0jv3s8/1/
Ответить с цитированием
  #2 (permalink)  
Старый 17.05.2017, 21:30
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

#circle {
  animation: circ 10s infinite;
}
@keyframes circ {
	0% {left: 0%;}
	100% {left: 100%;}
}
Ответить с цитированием
  #3 (permalink)  
Старый 17.05.2017, 21:33
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

только ко всем фигурам надо добавить
@keyframes можно оставить один!
Ответить с цитированием
  #4 (permalink)  
Старый 17.05.2017, 22:02
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,118

игра меткий стрелок animate jquery
pershay,
<!DOCTYPE html>

<html>
<head>
  <title>Untitled</title>
  <meta charset="utf-8">
  <style type="text/css">
body {
  text-align: center;
  background: #F0EFEE;
  color: #777;
}

.count {
  position: fixed;
  display: inline-block;
  float: left;
  padding: 10px 20px;
  background: #fff;
  font: 1.5rem/1 monospace;
  border-radius: .25rem;
  box-shadow: 0 2px 2px rgba(0, 0, 0, .2);
  z-index:20;
  left:20px;
  top:15px;
}
.err{
  top: 65px;
  color: hsla(0, 100%, 50%, 1);
}
.total{
  top: 115px;
}

.linear {
  overflow: hidden;
  display: inline-block;
  position: relative;
  margin: 20px 16px 20px 20px;
  width: 80%;
  height: 400px;
  background:white;
}

.circle {
  position: absolute;
  width: 45px;
  height: 45px;
  left: 0;
  top: 150px;
  border-radius: 50%;
  background: #F6AC31;

}

.rhombus {
    border-style: solid;
    border-color: transparent transparent #00BFFF transparent;
    border-width: 0 15px 15px 15px;
    height: 0;
    width: 30px;
    left: 0;
    top: 150px;
    position: absolute;

}
.rhombus:after {
    content: "";
    position: absolute;
    top: 15px;
    left: -15px;
    width: 0;
    height: 0;
    border-style: solid;
    border-color: #00BFFF transparent transparent transparent;
    border-width: 40px 30px 0 30px;
}

.item{
  cursor: crosshair;
}
  </style>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
  <script>
$(function() {
var cls = ["circle", "rhombus"],
    n = 0,
    e = -1,
    total = 0,
    m = 0,
    c = "circle";

function go(a) {
    a && "click" == a.type ? ($(".ok").html(++n), $(".total").html(total += m)) : $(".err").html(++e);
    a = $(this);
    a.stop(true, false).removeClass(c).addClass(c = cls[cls.length * Math.random() | 0]);
    var b = a.width();
    a.css({
        left: -b
    }).animate({
        left: "100%"
    }, {
        duration: 7000,
        complete: go,
        step: function(a) {
            m = 100 - (a | 0)
        }
    })
}
$(".item").on("click", go);
jQuery.proxy(go, $(".item"))();
});
  </script>
</head>

<body>
<div class="count ok">0</div>
<div class="count err">0</div>
<div class="count total">0</div>
<div class="linear">
  <div class="item"></div>
</div>

</body>
</html>
Ответить с цитированием
  #5 (permalink)  
Старый 17.05.2017, 22:14
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

на счет рандома
вот
var fig=[];
$("i").each(function(){
  fig.push($(this).attr('id'));
});
var k = Math.random()*fig.length;
for (var i=0; i<fig.length ; i++) {
	if(k>=i && k < (i+1)){$("#"+fig[i]+"").show().animate({ left: '100%'}, 7000);}//-итд

}

Последний раз редактировалось j0hnik, 17.05.2017 в 22:19.
Ответить с цитированием
  #6 (permalink)  
Старый 17.05.2017, 23:59
Новичок на форуме
Отправить личное сообщение для pershay Посмотреть профиль Найти все сообщения от pershay
 
Регистрация: 17.05.2017
Сообщений: 2

рони, j0hnik, спасибо большое за помощь!

Последний раз редактировалось pershay, 18.05.2017 в 00:21.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Плагин jQuery - как сгенерить событие? maxapet jQuery 1 31.08.2015 09:44
как можно зациклить анимацию? imedia Элементы интерфейса 0 10.06.2015 21:07
jQuery UI -> selectmenu, как установить вручную selected? Pit jQuery 3 28.05.2015 17:31
Как установить дефотлтное значение в jquery autocomplette? heksen jQuery 1 28.02.2015 17:24
Как сделать плагин jQuery в виде объекта? SkaN jQuery 12 28.06.2012 12:31