我无法弄清楚这一点。所以我正在刷一张卡片(火种风格),我正在从0.0到1.0捕获swipePercent
......我希望下一张卡片上的动画发生在0.2到0.4之间。
所以我需要一个变量swipePercentAdjusted
,在swipePercent = 0.2
时从0.0开始,然后在swipePercent = 0.4
时加速到1.0。
我无法弄清楚这一点。
答案 0 :(得分:0)
这样的事情:
if (swipePercent >= 0.2 && swipePercent <= 0.4) {
CGFloat swipePercentAdjusted = (swipePercent - 0.2) / 0.2;
}
示例:
swipePercent是0.2收益率0.0
swipePercent是0.3收益率0.5
swipePercent是0.4收益率1.0
答案 1 :(得分:0)
最残酷的解决方案是将间隔重新设置为0.2 - 0.4到0.0 - 1.0。 (这与rmaddys解决方案类似)。
if(swipePercent<0.2)
return 0.0;
if(swipePercent>0.4)
return 1.0;
return (swipePercent-0.2)/(0.4-0.2)
可以在一个简单的函数中实现
double remapLinear(double low, double high, double value) {
if(swipePercent<low)
return 0.0;
if(swipePercent>high)
return 1.0;
return (swipePercent-low)/(high-low)
}
然而,有时这太突然了。在这种情况下,您可以使用基于余弦的转换
double remapSmooth(double low, double high, double value) {
if(swipePercent<low)
return 0.0;
if(swipePercent>high)
return 1.0;
double z = (swipePercent-low)/(high-low);
return 0.5-0.5*cos(z*PI);
}