有没有人有一个在Silverlight中使用spritesheet的例子?我想剪辑图像,按下按钮时,跳转到下一帧。 (如果用户不断点击按钮,它看起来就像一个动画)。我环顾四周但却找不到我正在寻找的东西。谢谢你的帮助。
答案 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):
答案 1 :(得分:1)
这是另一种适用于您创建的精灵表的解决方案,只需添加密钥代码即可。
如果您愿意使用Sprite Vortex(实际上是特定版本),您可以使用以下类。您必须使用Sprite Vortex 1.2.2,因为在较新版本中,XML格式已更改。确保添加属性的XML文件已更改为“不编译”。
如果你需要一个有效的例子,我可以给你一个非常简单的例子。
P.S。 Sprite Vortex应该使用其他程序执行相同的操作,但是v 1.2.2非常错误但不是太糟糕。