public static float BackInOut(float from, float to, float time)
{
const float s = 1.70158f * 1.525f;
to -= from;
if ((time /= .5f) < 1f)
// 5 6 3 4 0 1 2 7
return to * .5f * (time * time * ((s + 1f) * time - s)) + from;
// 3 0 1 2
return to * .5f * ((time -= 2) * time * ((s + 1f) * time + s) + 2f) + from;
}
在第二次返回中是在修改之前(和之后)使用的时间?是
// 1 0 2 3
return to * .5f * ((time -= 2) * time * ((s + 1f) * time + s) + 2f) + from;
或者之后才这样? IDK?
感谢。
来源:http://robertpenner.com/easing/
修改
试图简化:
using System;
namespace New_folder
{
class Program
{
static public int s { get; set; } = 2;
static private int _test = 10;
static public int time
{
get
{
Console.WriteLine(_test);
return _test;
}
set { _test = value; }
}
static public void Main(string[] args)
{
var test = (time -= 2) * time * ((s + 1f) * time + s);
}
}
}
这表明: 10 8 8
表明我的第二个猜测是正确的,时间仅用于修改后我认为
我想我只是感到困惑。 它进入正确的分支只是为了评估最深的嵌套,然后回到更高的水平回到ltr而不关心它在哪里
感谢
答案 0 :(得分:1)
回答你的问题“在第二次回复中是在修改之前(和之后)使用的时间?是吗?”
这个怎么样?
public int ReturnZeroIfValueIsNegative(int x)
{
if ((x += 100) <= 100) // the "+=" operator changed the value of x
{
return 0;
}
return x; // this will return the altered value of x
}
以上内容可以重写为
x = x + 100;
if (x <= 100)
{
return 0;
}
return x;
您可以查看here,了解有关编程语言操作顺序的一般说明。