代码之家  ›  专栏  ›  技术社区  ›  BarrettJ

Silverlight MediaElement位置属性怪异

  •  3
  • BarrettJ  · 技术社区  · 14 年前

    我有一个MediaElement,它错误地、古怪地报告了它的位置,但始终如一。当它到达音频的最后一秒时(而且总是最后一秒,不管声音是2秒还是10秒),它在结束之前不会更新它的位置。


    实例输出:

    播放进度:0/3.99-0播放

    进度:0.01/3.99-0回放

    进度:0.03/3.99-0回放

    进度:0.06/3.99-1次播放

    进度:0.07/3.99-1次播放

    进度:0.08/3.99-2次播放

    进度:0.11/3.99-2次播放

    进度:0.14/3.99-3回放

    进度:0.19/3.99-4次播放

    进度:0.23/3.99-5回放

    进度:0.25/3.99-6回放

    进度:0.28/3.99-7回放

    进度:0.3/3.99-7回放

    [剪辑]

    播放进度:2.8/3.99-70

    播放进度:2.83/3.99-70

    播放进度:2.88/3.99-72

    播放进度:2.9/3.99-72

    播放进度:2.91/3.99-72

    播放进度:2.92/3.99-73

    播放进度:2.99/3.99-74

    播放进度:3/3.99-75

    播放进度:3/3.99-75

    播放进度:3/3.99-75

    播放进度:3/3.99-75

    播放进度:3/3.99-75

    播放进度:3/3.99-75

    播放进度:3/3.99-75

    播放进度:3/3.99-75

    播放进度:3/3.99-75

    播放进度:3.99/3.99-100


    这是由于:

        WriteLine("Playback Progress: " + Position + "/" + LengthInSeconds + " - " + (int)((Position / LengthInSeconds) * 100));
    
        public double Position
        {
            get
            {
                return my_media_element != null ? my_media_element.Position.TotalSeconds : 0;
            }
        }
    
        public double LengthInSeconds
        {
            get
            {
                return my_media_element != null ? my_media_element.NaturalDuration.TimeSpan.TotalSeconds : 0;
            }
        }
    

    有人知道为什么会发生这种情况吗?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Jeff Wilcox    14 年前

    Silverlight中的Position属性具有“夹持”效果,这可能导致此情况,以防止试图说出最后1秒的内容。

    不幸的是,阿法克没有简单的解决办法。