我目前正在編寫一個工具,允許用戶通過捏他們的屏幕來更改值。我正在使用Hammer.js來捕捉夾點事件,並使用事件的scale
屬性來確定要更改該值的因素。基於大小舍入數字和更改因子(數學/算法問題)
下面的代碼演示如何,我增加以及基於捏降低值:
var value = 10;
var scale = false;
var previous_scale = false;
pinch.on("pinch", function(e){
// Only proceed is it is not the final touch
// The final touch has a scale of (0)
if(e.isFinal===false){
// Only proceed if the previous scale has been defined
if(previous_scale!==false){
// Calculate the difference in scales
scale = e.scale-previous_scale;
previous_scale = e.scale;
if(scale>0){
value = Math.round(value+(1+(scale*100)));
value = value>=4000 ? 4000 : value;
}else{
value = Math.round(value-(1+(Math.abs(scale)*100)));
value = value<=10 ? 10 : value;
}
console.log(value);
}else{
previous_scale = e.scale;
}
}
});
我的問題是,我想value
做到以下幾點:
- 當
value
小於30,每個刻度增加1 - 當
value
小於60時,每個刻度增加5 - 當
value
大於200,增量爲每個尺度 - 少由10當
value
大於1000,增量少50爲每個尺度 - 當
value
小於2500,增量100爲每個尺度 - 當
value
小於5000,由500爲每個尺度遞增
我曾嘗試通過將下列實現上述:
if(radius>2000){
radius = 500*Math.round(radius/500);
}else if(radius>1000){
radius = 100*Math.round(radius/100);
}else if(radius>300){
radius = 50*Math.round(radius/50);
}else if(radius>50){
radius = 10*Math.round(radius/10);
}
這不起作用,因爲它只是四捨五入數字,我實際上需要增加因數隨着數字變大。
任何人都可以建議最好的方法來做到這一點?