3

その位置を誤って奇妙に報告している MediaElement がありますが、一貫しています。オーディオの最後の 1 秒になると (サウンドが 2 秒か 10 秒かに関係なく、常に最後の 1 秒になります)、終了するまで位置が更新されないようです。


出力例:

再生の進行状況: 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;
        }
    }

なぜこれが起こっているのか誰にも考えがありますか?

4

1 に答える 1

2

SilverlightのPositionプロパティには、コンテンツの最後の1を言いたくないようにするために、これを引き起こす可能性のある「クランプ」効果があります。

残念ながら、AFAIKを簡単に修正することはできません。

于 2010-06-18T03:18:48.977 に答える