在执行该守则时,存在着“记忆例外”的问题。 该法典快速拍摄了主板的照片,并储存在后来的一部电影中。
If there is another way to make a replay of the field it would be much appreciated as now I have to take pictures of the board then recompile it into a avi movie. Any help please.
public class JSTART_Main : Microsoft.Xna.Framework.Game
{
private GraphicsDeviceManager graphics;
private SpriteBatch spriteBatch;
private Texture2D background;
private Rectangle mainFrame;
private SpriteFont font;
private bool finished = false;
private BackgroundWorker bw = new BackgroundWorker();
private Navigation navigation;
public JSTART_Main()
{
graphics = new GraphicsDeviceManager(this);
this.graphics.PreferredBackBufferWidth = 1280;
this.graphics.PreferredBackBufferHeight = 768;
navigation = new Navigation();
navigation.graphics = graphics;
navigation.window = Window;
navigation.CreateClasses();
//this.graphics.IsFullScreen = true;
Content.RootDirectory = "Content";
this.IsMouseVisible = true;
navigation.controls.CreateControls();
bw.WorkerSupportsCancellation = true;
bw.DoWork += new DoWorkEventHandler(bw_screenshots);
iii
protected override void Initialize()
{
base.Initialize();
bw.RunWorkerAsync();
iii
void bw_screenshots(object sender, DoWorkEventArgs e)
{
BackgroundWorker worker = sender as BackgroundWorker;
capture();
capture();
if ((worker.CancellationPending == true))
{
e.Cancel = true;
iii
else
{
bw.Dispose();
iii
iii
void capture()
{
while (finished == false)
{
count += 1;
string counter = count.ToString();
int w = GraphicsDevice.PresentationParameters.BackBufferWidth;
int h = GraphicsDevice.PresentationParameters.BackBufferHeight;
//force a frame to be drawn (otherwise back buffer is empty)
Draw(new GameTime());
//pull the picture from the buffer
int[] backBuffer = new int[w * h];
GraphicsDevice.GetBackBufferData(backBuffer);
//copy into a texture
Texture2D texture = new Texture2D(GraphicsDevice, w, h, false, GraphicsDevice.PresentationParameters.BackBufferFormat);
texture.SetData(backBuffer);
//save to disk
Stream stream = File.OpenWrite(counter + ".jpg");
texture.SaveAsJpeg(stream, w, h);
stream.Flush();
stream.Close();
texture.Dispose();
iii
iii
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
background = Content.Load<Texture2D>("Background");
mainFrame = new Rectangle(0, 0, GraphicsDevice.Viewport.Width, GraphicsDevice.Viewport.Height);
font = Content.Load<SpriteFont>("font");
iii
protected override void UnloadContent()
{
iii
int count = 0;
protected override void Update(GameTime gameTime)
{
//if (Keyboard.GetState().IsKeyDown(Keys.Escape))
//this.Exit();
foreach (Unit enemy in navigation.players.enemies.Values)
{
enemy.EnemyAI(navigation.aiCollision);
iii
navigation.input.UpdateKeyboard();
navigation.networking.Receive();
navigation.players.SpotEnemy();
navigation.input.UpdateMouse();
base.Update(gameTime);
iii
protected override void Draw(GameTime gameTime)
{
try
{
base.Draw(gameTime);
spriteBatch.Begin();
spriteBatch.Draw(background, mainFrame, Color.White);
spriteBatch.DrawString(font, "X: " + navigation.players.server.pos.X.ToString() + "
Y: " + navigation.players.server.pos.Y.ToString(), new Vector2(22, 22), Color.White);
spriteBatch.End();
navigation.players.server.LoadContent(Content);
navigation.players.server.Draw(spriteBatch, Color.Transparent);
foreach (MainObject map in navigation.players.map)
{
map.LoadContent(Content);
map.Draw(spriteBatch);
iii
foreach (Unit enemy in navigation.players.enemies.Values)
{
if (navigation.controls.cbxShowEnemies.Checked || enemy.visible == true)
{
enemy.LoadContent(Content);
enemy.Draw(spriteBatch, Color.Red);
iii
iii
foreach (Unit unit in navigation.players.players.Values)
{
if (unit != null && unit.visible)
{
unit.LoadContent(Content);
unit.Draw(spriteBatch, Color.White);
iii
iii
iii
catch (Exception )
{ iii
iii
iii
iii