11

C#とXAMLで単純なWindows Storeゲームを作成しようとしています。これは、六角形のタイルが動き回るゲームです。これは主に、グラフィックやUIコーディングをこれまで扱ったことがないため、C#とXAMLを学ぶのに役立ちます。

単一のヘクスをターゲット座標に移動できる方法がありますが、今それを見ると、一度に複数の移動を行うことは不可能であることがわかります。これは絶対に必要です。

私のアプローチには根本的に何かがなければならないような気がします。1つのキャンバスの周りを移動する複数のオブジェクトは珍しいことではありませんね。私は主に、誰かが私が間違っていた場所を指摘してくれることを期待してこれを求めています。

    //moves the hex hexName to coordinates x, y, over a specified duration.
    public void slideHex(int x, int y, string hexName, Duration duration)
    {

        GameStoryboard.Stop();

        Polygon hex = GameCanvas.FindName(hexName) as Polygon;



        TranslateTransform slideTransform = new TranslateTransform();
        slideTransform.X = hex.RenderTransformOrigin.X;
        slideTransform.Y = hex.RenderTransformOrigin.Y;

        hex.RenderTransform = slideTransform;

        DoubleAnimation animX = new DoubleAnimation();
        DoubleAnimation animY = new DoubleAnimation();

        animX.Duration = duration;
        animY.Duration = duration;

        GameStoryboard.Duration = duration;
        GameStoryboard.Children.Add(animX);
        GameStoryboard.Children.Add(animY);

        Storyboard.SetTarget(animX, slideTransform);
        Storyboard.SetTarget(animY, slideTransform);

        Storyboard.SetTargetProperty(animX, "X");
        Storyboard.SetTargetProperty(animY, "Y");

        animX.To = x;
        animY.To = y;

        GameStoryboard.Begin();

    }
4

2 に答える 2

9

ストーリーボードには複数のアニメーションを含めることができ、各アニメーションは異なる UI 要素を対象にすることができます。3 つの異なるコントロールの境界線の色を「パルス」するストーリーボードの例を次に示します。

<Storyboard x:Name="pulseAnimation" AutoReverse="True">
    <ColorAnimation x:Name="animateLatitudeTextBoxBorderColour" Storyboard.TargetName="textBoxLatitude" From="{StaticResource PhoneTextBoxColor}" To="Green" Storyboard.TargetProperty="(TextBox.BorderBrush).(SolidColorBrush.Color)" Duration="0:0:0.4" />
    <ColorAnimation x:Name="animateLongitudeTextBoxBorderColour" Storyboard.TargetName="textBoxLongitude" From="{StaticResource PhoneTextBoxColor}" To="Green" Storyboard.TargetProperty="(TextBox.BorderBrush).(SolidColorBrush.Color)" Duration="0:0:0.4" />
    <ColorAnimation x:Name="animateHyperlinkTextColour" Storyboard.TargetName="hyperlinkButtonCurrentLocation" From="{StaticResource PhoneForegroundColor}" To="Green" Storyboard.TargetProperty="(HyperlinkButton.Foreground).(SolidColorBrush.Color)" Duration="0:0:0.4" />
</Storyboard>

あなたのコードは問題ないように見えます - あなたはすでに の複数のプロパティをアニメーション化しています。slideTransformまた、アニメーションのターゲットはストーリーボードではなくアニメーションのプロパティであるため、いずれかanimXまたはanimY別のオブジェクトに完全にリターゲットできない理由はありません。

于 2012-09-07T05:08:33.820 に答える
0

複数のオブジェクトを同時にアニメートするために、複数のストーリーボードを作成して同時に実行できます。To Do リスト内の複数の項目をアニメーション化する次の記事の例を参照してください。

http://www.codeproject.com/Articles/428088/A-Gesture-Driven-Windows-Phone-To-Do-List#swipe

于 2012-09-06T05:23:04.507 に答える