我在Xbox 360项目中使用DynamicSoundEffectInstance。
问题是buffercount增长非常快,直到达到64并且应用程序崩溃。 据我所知,它根本不应该增长?
为了测试我已经简化了代码以回到基础。
以下是一些代码(项目中的其余部分未触及模板)
DynamicSoundEffectInstance soundEffect = new DynamicSoundEffectInstance(22500, AudioChannels.Mono);
int bufferCount=0;
byte[] BufferHigh;
byte[] BufferLow;
bool alternate = true;
public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";
this.IsFixedTimeStep = true;
this.TargetElapsedTime = TimeSpan.FromMilliseconds(20);
}
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
bufferCount = soundEffect.GetSampleSizeInBytes(new TimeSpan(0, 0, 0, 0, 20));
BufferHigh = Enumerable.Repeat<byte>((byte)255, bufferCount).ToArray();
BufferLow = Enumerable.Repeat<byte>((byte)127, bufferCount).ToArray();
soundEffect.Play();
}
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
if (alternate)
soundEffect.SubmitBuffer(BufferHigh);
else
soundEffect.SubmitBuffer(BufferLow);
alternate = !alternate;
Debug.WriteLine("elapsed: " + gameTime.ElapsedGameTime.TotalMilliseconds);
Debug.WriteLine("buffercount: " +soundEffect.PendingBufferCount);
base.Update(gameTime);
}
代码应在高低之间交替创建咔嗒声。 有什么建议? 相同的代码在Windows Phone上运行良好