Silverlight中的Spritesheet

时间:2011-04-28 01:56:16

标签: c# silverlight animation clip sprite-sheet

有没有人有一个在Silverlight中使用spritesheet的例子?我想剪辑图像,按下按钮时,跳转到下一帧。 (如果用户不断点击按钮,它看起来就像一个动画)。我环顾四周但却找不到我正在寻找的东西。谢谢你的帮助。

2 个答案:

答案 0 :(得分:12)

以下内容将完全符合您的要求。您可以使用键盘上的向上和向下键在动画中向前和向后导航。

<强> XAML

<Rectangle x:Name="imgRect">
    <Rectangle.Fill>
        <ImageBrush x:Name="imgBrush" ImageSource="walking_spritesheet.png" Stretch="None" AlignmentX="Left" AlignmentY="Top" />                    
    </Rectangle.Fill>
</Rectangle>

<强> C#

        imgRect.Width = 240; //Set the width of an individual sprite
        imgRect.Height = 296; //Set the height of an individual sprite
        const int ximages = 6; //The number of sprites in each row
        const int yimages = 5; //The number of sprites in each column
        int currentRow = 0;
        int currentColumn = 0;

        TranslateTransform offsetTransform = new TranslateTransform();

        KeyDown += delegate(object sender, KeyEventArgs e)
        {
            switch (e.Key)
            {
                case Key.Up:
                    currentColumn--;
                    if (currentColumn < 0)
                    {
                        currentColumn = ximages -1;
                        if (currentRow == 0)
                        {
                            currentRow = yimages - 1;
                        }
                        else
                        {
                            currentRow--;
                        }
                    }                        
                    break;
                case Key.Down:
                    currentColumn++;
                    if (currentColumn == ximages)
                    {
                        currentColumn = 0;
                        if (currentRow == yimages - 1)
                        {
                            currentRow = 0;
                        }
                        else
                        {
                            currentRow++;
                        }
                    }
                    break;
                default:
                    break;
            }

            offsetTransform.X = -imgRect.Width * currentColumn;
            offsetTransform.Y = -imgRect.Height * currentRow;
            imgBrush.Transform = offsetTransform;

要进行测试,请尝试使用以下图像(1440x1480): enter image description here

答案 1 :(得分:1)

这是另一种适用于您创建的精灵表的解决方案,只需添加密钥代码即可。

如果您愿意使用Sprite Vortex(实际上是特定版本),您可以使用以下类。您必须使用Sprite Vortex 1.2.2,因为在较新版本中,XML格式已更改。确保添加属性的XML文件已更改为“不编译”。

如果你需要一个有效的例子,我可以给你一个非常简单的例子。

P.S。 Sprite Vortex应该使用其他程序执行相同的操作,但是v 1.2.2非常错误但不是太糟糕。

课程在这里:http://pastebin.com/sNSa7xgQ