2012-12-08 265 views
0

我正在开发一款游戏。我想在屏幕上画几个纹理。我成功地实现了通过使用spriteBatch绘制texture2d。Windows Phone 7 onDraw

事情是只有当我把代码放在onDraw方法中时,纹理才会显示。 onDraw方法绑定到定时器,因此它执行很多次。我只想画我的矩形一次。

当我把代码放在构造函数中时,矩形不会被显示 - 只有当我把代码放在onDraw函数中时才显示出来。我怎么能忽略它?

回答

2

在XNA中这样做没有任何明智的选择。大多数游戏都希望每帧都重新绘制整个屏幕 - 这就是XNA的结构。 (并且,如果没有真的确实是令人信服的原因,这也是你应该如何构建你的游戏。)

XNA是双缓冲的(我不认为有办法把它关掉)。你在后台缓冲区上进行绘图,然后将其与前台缓冲区交换。你永远不会直接画在屏幕上。

所以,虽然你没有清除屏幕,并在每一帧重新绘制它,如果你不这样做,你必须手动保持这两个缓冲区的内容同步 - 否则你会得到严重闪烁。这是不值得的。

什么你可以寻找是Game.SupressDraw方法(从Update称之为 - 或 - 作为一种替代方案:覆盖BeginDraw并返回false)。这将阻止Draw被该特定帧调用,并防止将后台缓冲区交换到前台。所以前一帧只是保持在屏幕上。

但是,简单地绘制每一个帧通常更容易。