kamogawa
https://gyazo.com/655c45ae135efe19bd75e1243da2354b
code:kamogawa.js
var couples = [];
var pattern = 0;
$(function() {
var q = document.location.search.substring(1);
var params = q.split('&');
for(i=0;i<params.length;i++){
// パラメータ名とパラメータ値に分割する
element = paramsi.split('='); key = decodeURIComponent(element0); value = decodeURIComponent(element1); if(key == 'pattern') pattern = Number(value);
}
couples1 = newdiv(window.innerWidth-20); setInterval(insert, 2000);
switch(pattern){
case 0: setInterval(move,400); break;
case 1: setInterval(move,50); break;
case 2: setInterval(move,500); break;
}
});
function setpos(div,pos){
div.pos = pos;
div.css('left',pos);
div.attr('class','couple');
}
function newdiv(pos){
div = $('<div>');
setpos(div,pos);
$('body').append(div);
return div;
}
function insert(){
if(couples.length > 18) return;
var len = couples.length;
// 最も広い場所をみつける
widestInd = 0;
maxwidth = 0;
for(i=0;i<len-1;i++){
width = couplesi+1.pos - couplesi.pos; if(width > maxwidth){
maxwidth = width;
widestInd = i;
}
}
// その中間に入る
div = newdiv(newpos);
couples.splice(widestInd+1,0,div)
}
function move(){
// 移動するカップルをランダムに選ぶ
len = couples.length;
if(len <= 2) return;
ind = Math.floor(Math.random() * (len-2)) + 1;
center = (pos1+pos2) / 2.0;
d1 = curpos - pos1;
d2 = pos2 - curpos;
if(pattern == 0){ // すぐ移動
setpos(couplesind,center); }
if(pattern == 1){ // じわじわ
if(center-curpos >= -0.4 && center-curpos <= 0.4) return; // 小刻み移動しないように
delta = (center > couplesind.pos ? 1 : -1); setpos(couplesind,curpos+delta); }
if(pattern == 2){ // 我慢できなくなると移動
if(d1 < d2 * 1.5 && d2 < d1 * 1.5) return;
setpos(couplesind,center); }
}