0

w、a、s、dをそれぞれ前、左、下、右にしてミニゲームを作ろうとしています。

コントロールは上下左右に移動しますが、1 回だけです。「W」、「S」、「A」、または「D」キーを 2 回または 3 回押すと、コントロールは 1 回だけ上に移動します。

これは、コントロールを右に移動するために現在持っているコードです:

private void moveRight(Button button)
    {
        // Gets the current position of the control
        Point relativePoint = button.TransformToAncestor(parentCanvas).Transform(new Point(0, 0));

        // Reason for having relative - relative is that its adding onto the previous point.
        Canvas.SetLeft(button, relativePoint.X - relativePoint.X + 5);

        button.Content = relativePoint;
    }


private void Window_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.Key == Key.W)
        {
            moveUp(button1);
        }

        else if (e.Key == Key.A)
        {
            moveLeft(button1);
        }

        else if (e.Key == Key.S)
        {
            moveDown(button1);
        }

        else if (e.Key == Key.D)
        {
            moveRight(button1);
        }
    }

この問題を解決する方法を教えてください。

すべての助けをいただければ幸いです。ありがとう

4

2 に答える 2

1

考えてみると、ロジックは少し外れていました。

それを行う正しい方法は次のとおりです。

private void moveRight(Button button)
    {
        // Gets the current position of the control
        Point relativePoint = button.TransformToAncestor(parentCanvas).Transform(new Point(0, 0));

        Canvas.SetLeft( button , 5 + relativePoint.X );
        button.Content = relativePoint;

     }

その作業は今、ありがとう

于 2012-05-28T08:54:48.543 に答える
0

それ以外の

Canvas.SetLeft(button, relativePoint.X - relativePoint.X + 5); 

使用する

Canvas.SetLeft(button, relativePoint.X + 5);

これが役立つことを願っています。

于 2012-05-28T08:55:37.007 に答える