2012-01-04 76 views
0

我有下面的代码:为什么这个代码绘制以相反的顺序精灵?

spriteBatch.Begin(SpriteSortMode.FrontToBack, BlendState.AlphaBlend, null, null, null, null, cam.TransformMatrix); 
spriteBatch.Draw(_comicBackground, workspace, Color.AliceBlue); 
foreach (LayoutField lf in comicStrip.LayoutFields) 
{ 
    spriteBatch.Draw(_layoutFieldBackground, new Rectangle(lf.PosX, lf.PosY, lf.Width, lf.Height), Color.White); 
} 
spriteBatch.End(); 

但无论SpriteSortMode(FrontToBack | BackToFront)的背景总是被显示在foreach循环的结果之上,覆盖我的布局结果。

这不是一个表明,塞我可以借鉴我的相反顺序的精灵,但我宁愿让他们在它们应该在屏幕上绘制顺序。

+1

设置'SpriteSortMode'到'Deffered'时会发生什么? – keyboardP 2012-01-04 22:59:15

+0

对不起,昨天没有时间。 “缓冲”模式奏效。谢谢 – LukeP 2012-01-05 23:24:04

回答

4

FrontToBackBackToFront排序模式需要您指定您的通话Draw()精灵深度值;看到layerDepth参数here。如果你想画的顺序精灵,你让Draw()电话,使用SpriteSortMode.DeferredSpriteSortMode.Immediate

+0

是的,这很好。谢谢一堆! – LukeP 2012-01-05 23:23:20