Commit d14aa7d1 by Иван Кубота

tune tuning

parent 53c4967d
......@@ -31,17 +31,28 @@ const CardSlider = D.declare( 'view.cmp.CardSlider', (cfg) => {
}, 30));
let waitTimeout = false;
let tuning = false;
let leftestItem = 0;
let lastLeftestItem = 0;
let tuneScrollPosition = function() {
waitTimeout = false;
tuning = true;
let fromLeft = dom.scrollLeft;
let firstItem = Math.round(fromLeft/(cardWidth+padding));
let firstItem = Math.round(fromLeft/(cardWidth+padding)-(lastLeftestItem>leftestItem?0.3:-0.3));
let toLeft = Math.round(firstItem*(cardWidth+padding));
let deltaMove = (toLeft - fromLeft)/Math.ceil(200/(1000/60));
while(deltaMove>0 && deltaMove<1){
deltaMove *= 2;
}
if(Math.abs(fromLeft+deltaMove - toLeft) > Math.abs(fromLeft-toLeft)){
deltaMove = toLeft - fromLeft;
}
let tune = function() {
if(Math.sign(toLeft-dom.scrollLeft) !== Math.sign(deltaMove)){
return tuning = false;
}
if(Math.abs(dom.scrollLeft-toLeft) < Math.abs(deltaMove)){
dom.scrollLeft = toLeft;
tuning = false;
return tuning = false;
}else{
dom.scrollLeft += deltaMove;
requestAnimationFrame( tune );
......@@ -54,13 +65,16 @@ const CardSlider = D.declare( 'view.cmp.CardSlider', (cfg) => {
}
};
let waitUntilDoNotTouchScroll=function() {
let waitUntilDoNotTouchScroll = function() {
if(tuning)
return;
lastLeftestItem = leftestItem;
leftestItem = dom.scrollLeft/(cardWidth+padding);
if(waitTimeout)
clearTimeout(waitTimeout);
waitTimeout = setTimeout(tuneScrollPosition,200);
waitTimeout = setTimeout(tuneScrollPosition,80);
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment