Javascript.RU

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

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

Выглядеть должна вот так: http://i.imgur.com/o0UK8T8.png

Находил у вас на форуме подобное решение http://jsfiddle.net/rwsj9bdo/
Но не разобрался как поставить там два цвета.
Помогите пожалуйста.
Ответить с цитированием
  #2 (permalink)  
Старый 19.12.2015, 23:32
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

aakazancev,
Объясните метод формирование строки с картинками цифр (ну про выбранную ячейку понятно, а каким макаром цифры её окружающие формировать ?
(Почему не взять обычное поле http://cs10286.vk.me/u25872104/-14/x_40a08fc6.jpg ?)
Ну или создайте сами все варианты картинок для каждого из 37 вариантов (тады скрипт пять строк
Или цифры окружения выпавшей цифры произвольные ? (Тады всякие октеты и дюжины и т.д. - не учитываются ?)

Последний раз редактировалось Deff, 19.12.2015 в 23:40.
Ответить с цитированием
  #3 (permalink)  
Старый 19.12.2015, 23:38
Новичок на форуме
Отправить личное сообщение для aakazancev Посмотреть профиль Найти все сообщения от aakazancev
 
Регистрация: 19.12.2015
Сообщений: 5

Рядом цифры рандомно, от 0 до 36.

Поле уже готово, осталось только сделать саму рулетку, она не круглая как обычно а имеет вот такой горизонтальный вид.

Там всего лишь три цвета, 0 - зеленый, и остальные красный и черный.
Ответить с цитированием
  #4 (permalink)  
Старый 20.12.2015, 00:59
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Сообщение от aakazancev
как поставить там два цвета.
строка 69
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <meta name="robots" content="noindex">
  <title> - jsFiddle demo</title>
  <script src='https://code.jquery.com/jquery-1.11.0.js'></script>
  <style type='text/css'>
     li{
   margin: 0px;
   width: 60px; height:50px;
   display: inline-block;
   text-align: center;
   color: rgba(255, 255, 255, 1);
    font-size: 24px;
    font-weight: bold;
  }

  #carusel {
    position:relative; top: 0px; left:0px; display:block;
    width: 60px; height:70px;
    padding: 0px; margin: 0px;
  }
  .divv{
     overflow:hidden; width: 540px; height:50px; position: relative; left: 100px
  }
  #carusel li{
    border-radius: 50%;
     line-height: 50px;
  }

  </style>

</head>
<body>
  <div class="divv">
		<ul id="carusel">

		</ul>
	</div>

    <p></p>
    <input name="" type="button" value="go">






<script>

$(function () {
 function random(min,max,l)
{var arr = [],m = [],n = 0;
  if (max - min < l-1) return;
  for (var i=0; i<=(max-min); i++)m[i] = i + min;
  for (var i=0; i<l; i++) {n = Math.floor(Math.random()*(m.length)); arr[i]=m.splice(n,1)[0];};
  return arr
}


    var arr = random(0,36,37), carusel = $('#carusel');
    function rand(min, max, integer) {
      var r = Math.random() * (max - min) + min;
      return integer ? r|0 : r;
    }

    $.each(arr,function(indx, el){
          $('<li/>',{text : el, data : {i : el},css : {'background-color' : el ? el%2 ? 'red' : 'black' : 'green'},color : el ? 'white' : 'black'}).appendTo(carusel)
          carusel.width('+=60')
          });
   function lotto()
    {
    var n = rand(0 ,arr.length, true);

        r = rand(2 ,5, true);

        carusel.stop();
    (function go() {
        carusel.animate({
            left: '-=50'
        }, 100, function () {
            var li = $('li:first');
                data = $('#carusel>li:eq(5)').data('i');
            if (data == n) r--;


            li.appendTo(carusel)
            carusel.css({
                left: '0px'
            });
            r && go();

            if(!r) {$('#carusel>li:eq(4)').css({"border":"#86B817 3px solid"});
} 
        })
    }())


    }
    $('[type="button"]').on({click : lotto})

})
</script>

</body>

</html>

Последний раз редактировалось рони, 22.10.2017 в 11:32.
Ответить с цитированием
  #5 (permalink)  
Старый 20.12.2015, 02:47
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Ну и после остановки добавить:
$('#carusel>li:eq(4)').css({"border":"#86B817 3px solid"});
============
// Плюсы не ставяцо ...
Ответить с цитированием
  #6 (permalink)  
Старый 20.12.2015, 09:46
Новичок на форуме
Отправить личное сообщение для aakazancev Посмотреть профиль Найти все сообщения от aakazancev
 
Регистрация: 19.12.2015
Сообщений: 5

http://codepen.io/Kazancev/pen/YwqgJy
Огромное спасибо, а теперь вопрос, как сделать чтобы не по кнопке запускалась, а допустим с интервалом в 30 секунд - сама?
И подскажите как быть, если мне надо будет цвета расставлять не рандомно, а на каждое число определенный цвет?

Еще это все сделать плавнее и с замедлением при остановке

Последний раз редактировалось aakazancev, 20.12.2015 в 10:48.
Ответить с цитированием
  #7 (permalink)  
Старый 21.12.2015, 00:00
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Cм Спойлер;
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <meta name="robots" content="noindex">
  <title> - Рулетка </title>
<script src='http://code.jquery.com/jquery-1.11.0.js'></script>
<style type='text/css'>
#firstBG {
  background: transparent url(http://savepic.su/6852527.png) no-repeat 100px top;
}
.round,
.round tr,
.round td {
 padding: 0px;
 margin: 0px;
 border:none 0;
 border-collapse:collapse;
}
.round tr {
 vertical-align:middle;
 text-align:center;
}
.round td {
 width:65px;
 height:74px;
 background:transparent url(http://s6.uploads.ru/t/DilLG.png) center 0 no-repeat;
 background-size: 74px auto; 
 color:#fff;
 font: normal normal 700 30px/normal "Courier New";
}
.round td.A0{
 background-position:center 0;
}
.round td.A0{background-position:center -0.07%}
.round td.A1{background-position:center 2.5%}
.round td.A2{background-position:center 5%}
.round td.A3{background-position:center 7.5%}
.round td.A4{background-position:center 10%}
.round td.A5{background-position:center 12.5%}
.round td.A6{background-position:center 15%}
.round td.A7{background-position:center 17.5%}
.round td.A8{background-position:center 20%}
.round td.A9{background-position:center 22.5%}
.round td.A10{background-position:center 25%}
.round td.A11{background-position:center 27.5%}
.round td.A12{background-position:center 30%}
.round td.A13{background-position:center 32.5%}
.round td.A14{background-position:center 35%}
.round td.A15{background-position:center 37.5%}
.round td.A16{background-position:center 40%}
.round td.A17{background-position:center 42.5%}
.round td.A18{background-position:center 45%}
.round td.A19{background-position:center 47.55%}
.round td.A20{background-position:center 50%}
.round td.A21{background-position:center 52.5%}
.round td.A22{background-position:center 55%}
.round td.A23{background-position:center 57.55%}
.round td.A24{background-position:center 60%}
.round td.A25{background-position:center 62.5%}
.round td.A26{background-position:center 65%}
.round td.A27{background-position:center 67.5%}
.round td.A28{background-position:center 70%}
.round td.A29{background-position:center 72.5%}
.round td.A30{background-position:center 75.05%}
.round td.A31{background-position:center 77.54%}
.round td.A32{background-position:center 80%}
.round td.A33{background-position:center 82.5%}
.round td.A34{background-position:center 85.06%}
.round td.A35{background-position:center 87.5%}
.round td.A36{background-position:center 90.1%}
.round td.A37{background-position:center 92.5%}
.round td.A38{background-position:center 96%}
.round td.A39{background-position:center 97.5%}
.round td.A40{background-position:center 100%}

.round {
 position: relative;
 background:#2D3147 url(http://s7.uploads.ru/t/nyGac.png) repeat-x center;
 background-size: auto 100%;
 margin: auto; left:0; top:0;
 transition-property: left;
 transition-duration: 16s;
}
.wrap-ruletka{
 width: 650px;
 height:124px;
 overflow-y:hidden;
 overflow-x:hidden;
 position: relative;
 left: 100px;
}

</style>

</head>
<body>
  <div id=firstBG>
  <div class="wrap-ruletka">
<!-- Таблица -->
  </div></div>
  <p></p>

  <input name="" type="button" value="go">


<script>

$(function () {
  function indexRandom(lng){
     var a = {},i,out=[],n=0;
     for(i=0;i<lng;i++)a[i]=i;
     while (n!=lng){
       i = Math.floor(lng*Math.random());
       if(typeof(a[i])!='undefined'){
         out.push(a[i]);
         delete a[i];
         n++;
       }
     }
    return out;
  } 

  var i, arr = []; 
  for(i=0;i<185;i++)arr.push(i%37); //создали массив включающий 5 подмассивов от 0 до 36;

RestarRound = function(){ $('.round').remove();
  
  var ind = indexRandom(185); //создали массив перемешанных индекстов для массива arr;

  var a = '<td class="A';
  var b = '"></td>';
  var str='<table class=round><tbody><tr></tr></tbody><table>';
  $('.wrap-ruletka').append(str); str = '';

  //Создаём строки перемешанного массива arr и втыкаем в таблицу ;
  for(i=0;i<186;i++){
    if(!!i&&!(i%37)){$('.round').css({'width':''+(65*i)+'px'}).find('tr:first').append(str); str = '';}
    if(i==180){str+= a + arr[ind[i]]+'"><img src="http://s7.uploads.ru/t/xfyR4.png" width=100% style="margin-bottom:-12px;"></td>';continue;}
    if(i==185) break;
    str+= a + arr[ind[i]]+b;
  }
    setTimeout(function(){ $('.round:last').css({'left':'-'+(65*175)+'px'});},1700);
}

  $('[type="button"]').click(RestarRound);
})

</script>

</body>
</html>

Для автозапуска мон убрать кнопку и вместо красного:

$('[type="button"]').click(RestarRound);

Поставить такие строки:

setTimeout('RestarRound',2100);
setInterval('RestarRound',30000);


Хотя наверно понадобится кнопка сброса и при втором клике - перезапуска.
Ибо иногда хочется отвлечься

Последний раз редактировалось Deff, 21.12.2015 в 05:38.
Ответить с цитированием
  #8 (permalink)  
Старый 21.12.2015, 00:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Deff,
интересно конечно, но похоже работает нормально в Mozilla Firefox только.
Ответить с цитированием
  #9 (permalink)  
Старый 21.12.2015, 00:11
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

рони,
Ни наю, в опере и Гуголхроме и яндексе у меня работает
Чичас удлиню задержку для инициализации // setTimeout(function(){ $('.round:last').css({'left':'-'+(65*175)+'px'});},2000);
Попробуй чичас
Ответить с цитированием
  #10 (permalink)  
Старый 21.12.2015, 00:25
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,109

Deff,
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибки и баги на сайте Jeremen Сайт Javascript.ru 79 13.08.2021 12:47
Чудесная горизонтальная прокрутка alfavit Элементы интерфейса 0 23.03.2013 08:59
горизонтальная прокрутка escapade Events/DOM/Window 0 06.03.2012 03:08
Горизонтальная прокрутка daMage (X)HTML/CSS 6 12.02.2012 15:28
горизонтальная прокрутка блока dmitrio Элементы интерфейса 5 15.10.2010 23:41