none
silverlight 播放声音的问题 RRS feed

  • 问题

  • 制作一个射击小游戏...

    一挺机关枪。30ms打出一发子弹,子弹可以按设计的打出去,声音怎么同步啊?
    我在发子弹的时候这样写
                mi.Source = new Uri("Media/audio/b.mp3", UriKind.Relative);
                mi.Play();
    这样实际只能听到最后一次的枪声..大概是因为子弹打的太快了,前面的还没来得及播呢...有什么好办法解决这个问题呢?


    ...
    2009年3月2日 7:35

答案

  • 发现了一个Silverlight的新bug,再如上方法添加至128个MediaElement并进行播放,就会报溢出错误,错误我已经提交上去了。如果一定要用,现在还请注意,最好不要用如上方法添加至100次以上
    2009年3月4日 9:03
    版主

全部回复

  • 可以new多个 MediaEmement去播放
    2009年3月2日 8:12
    版主
  • 八爪熊 说:

    可以new多个 MediaEmement去播放



    new 了多个以后播放的又只是第一次枪声了...后面的不响
    ...
    2009年3月2日 9:40
  •  
    1 using System;  
    2 using System.Collections.Generic;  
    3 using System.Linq;  
    4 using System.Net;  
    5 using System.Windows;  
    6 using System.Windows.Controls;  
    7 using System.Windows.Documents;  
    8 using System.Windows.Input;  
    9 using System.Windows.Media;  
    10 using System.Windows.Media.Animation;  
    11 using System.Windows.Shapes;  
    12 using System.Windows.Threading;  
    13  
    14 namespace MediaEmelentBeep  
    15 {  
    16     public partial class Page : UserControl  
    17     {  
    18         public Page()  
    19         {  
    20             InitializeComponent();  
    21         }  
    22  
    23         MediaElement myBeep = new MediaElement();  
    24         private void btn_Click(object sender, RoutedEventArgs e)  
    25         {  
    26             dtimer.Start();  
    27         }  
    28         DispatcherTimer dtimer;  
    29         private void LayoutRoot_Loaded(object sender, RoutedEventArgs e)  
    30         {  
    31             dtimer = new DispatcherTimer();  
    32             dtimer.Tick += new EventHandler(dtimer_Tick);  
    33             dtimer.Interval = new TimeSpan(0, 0, 0, 0, 50);  
    34         }  
    35  
    36         void dtimer_Tick(object sender, EventArgs e)  
    37         {  
    38             myBeep = new MediaElement();  
    39             myBeep.Source = new Uri("Beep.mp3", UriKind.Relative);  
    40             cvs.Children.Add(myBeep);  
    41             myBeep.Play();  
    42         }  
    43     }  
    44 }  
    45  

    这么播放看看响不响
    2009年3月2日 14:07
    版主
  • 发现了一个Silverlight的新bug,再如上方法添加至128个MediaElement并进行播放,就会报溢出错误,错误我已经提交上去了。如果一定要用,现在还请注意,最好不要用如上方法添加至100次以上
    2009年3月4日 9:03
    版主
  • 3q 八爪熊 。现在发现和声音文件本身也有关系. 比如说代码执行了了10遍 听到了声音不够10遍...;这个问题差不多就这样弄了...谢谢
    ...
    2009年3月6日 2:13