1

私は、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日間しかプログラミングしていないので、すみません:)

4

1 に答える 1

1

問題を修正しました。それは確かに私のばかげた間違いでした。グラスの方向を考慮に入れていないメソッド パラメーターの境界を比較していたので、常に正になっていました。

if (_fgGrassBnd == _fgGrassPos) {}
if (_bgGrassBnd == _bgGrassPos) {}

_fgGrassBnd_bgGrassBndは、このアニメーションを意図したとおりに機能させる計算された境界 (左が正、右が負) です。

于 2012-11-27T17:31:54.760 に答える