私は、2 つのオブジェクトをそれぞれの境界に動的にゆがめ、一度トリップすると再び元に戻る、作業中のソフトウェア用のアニメーションを開発しました。私が抱えている問題は、トリップするはずのスクリプトが実行されず、その理由を理解できないことです。
注意: _fg と _bg の値は、クラスの先頭で定義されています。
public static void Grass(Canvas canvas, int boundry)
{
Random random = new Random();
foreach (FrameworkElement element in canvas.Children)
{
var elementName = Regex.Split(element.Name, "_");
if (elementName[0] == "grass")
{
switch (elementName[1])
{
case "foreground":
_fgGrassDrn = (_fgGrassPos == 0 && _fgGrassHbd == 0) ? random.Next(0, 2) : _fgGrassDrn;
_fgGrassPos = (_fgGrassDrn == 0) ? _fgGrassPos + 1 : _fgGrassPos - 1;
_fgGrassBnd = (_fgGrassDrn == 0) ? boundry : -boundry;
if (_fgGrassBnd == boundry) // this is the tripwire code.
{
_fgGrassHbd = 1;
_fgGrassDrn = (_fgGrassDrn == 0) ? 1 : 0;
}
element.RenderTransform = new SkewTransform(_fgGrassPos, 0);
break;
case "background":
_bgGrassDrn = (_bgGrassPos == 0 && _bgGrassHbd == 0) ? random.Next(0, 2) : _bgGrassDrn;
_bgGrassPos = (_bgGrassDrn == 0) ? _bgGrassPos + 1 : _bgGrassPos - 1;
_bgGrassBnd = (_bgGrassDrn == 0) ? boundry : -boundry;
if (_bgGrassBnd == boundry) // this is the tripwire code.
{
_bgGrassHbd = 1;
_bgGrassDrn = (_bgGrassDrn == 0) ? 1 : 0;
}
element.RenderTransform = new SkewTransform(_bgGrassPos, 0);
break;
}
}
}
}
私は非常に明白な何かが欠けていると感じていますが、私はC#で約5日間しかプログラミングしていないので、すみません:)