C# Silverlight中的精灵表动画

C# Silverlight中的精灵表动画,c#,silverlight,animation,windows-phone-8,C#,Silverlight,Animation,Windows Phone 8,我正在尝试用C#在Silverlight中为一张精灵表设置动画。 我已经取得了很大的进步,动画正在工作,但问题是它们在不同的工作表之间不一致。例如,我有以下3张纸: 前两个动画制作得很好,但当最后一个动画制作时,我会看到其他帧的部分,如下所示: 这是我用来制作图纸动画的代码:(宽度和高度是我之前确定的特定帧的尺寸) 我希望有人能帮助我,并提前表示感谢。您的动画代码使用width in参数了解如何裁剪精灵: dokf.Value = -(i * parameters.Width); 伪瓷

我正在尝试用C#在Silverlight中为一张精灵表设置动画。 我已经取得了很大的进步,动画正在工作,但问题是它们在不同的工作表之间不一致。例如,我有以下3张纸:

前两个动画制作得很好,但当最后一个动画制作时,我会看到其他帧的部分,如下所示:

这是我用来制作图纸动画的代码:(宽度和高度是我之前确定的特定帧的尺寸)


我希望有人能帮助我,并提前表示感谢。

您的动画代码使用width in参数了解如何裁剪精灵:

dokf.Value = -(i * parameters.Width);

伪瓷砖集宽1365像素,共9帧。因此,您需要将宽度设置为1365/9=151像素。

我认为问题在于图像本身。我试着用相同的宽度画出每一帧的边框,但这是不可能的

我尝试了233像素的宽度:

151像素(KooKiz建议)也不起作用:

因此,我修改了整个图像,剪切了所有帧,设置了一个宽度(181像素),然后再次合并它们。这就是结果:

这是我的解决办法。使用下面的图像(您知道,右键单击,另存为…)并将帧宽度设置为181像素:


有趣的事实:图像的高度是170像素,而不是218…

您使用什么参数来调用
动画方法?问题很可能就在这里,我从数据库中获得了,例如,对于这张特定的表(错误的那张),我使用宽度=233,高度=218,帧数=9为什么您将高度设置为218,而图像只有170?无需居高临下,因为我使用pokit从屏幕上剪切图像,所以它给了您170的高度。218是真正的高度,现在没事了。
public class AnimationParams
    {
        public BitmapImage Sheet { get; set; }
        public int Width { get; set; }
        public int Height { get; set; }
        public int NumberOfFrames { get; set;}
        public bool IsStatic { get; set; }
        public bool Loop { get; set; }
        public int Repetitions { get; set; }

        public AnimationParams(BitmapImage sheet, int width, int height, int numberOfFrames, bool isStatic, bool loop = false, int repetitions = 1) {

            Sheet = sheet;
            Width = width;
            Height = height;
            NumberOfFrames = numberOfFrames;
            IsStatic = isStatic;
            Loop = loop;
            Repetitions = repetitions;
        }

    }
dokf.Value = -(i * parameters.Width);