Хорошо. Мой ответ, возможно, не совсем то, что вы хотите, потому что это специально для Monogame (XNA). Но я думаю, что идея та же самая. Ниже показано, как я реализовал заставку в своей игре.
На этапе объявления:
bool isLoadded;//= false by default
In LoadContent ():
//Load background image and spriteFont if necessary
fontBold = Content.Load<SpriteFont>("Arial_Normal_Windows"),//spriteFont
texLoadingBackground = Content.Load<Texture2D>(@"Arts\loadingBackground");
imageLoadingBackground = new ImageBackground(texLoadingBackground, Color.White, GraphicsDevice);//load the background you need to draw
//Then load everything you need after that
LoadGameContent();//
//After loading everything
isLoaded = true;
Метод Draw ():
if (!isLoaded)
{
GraphicsDevice.Clear(new Color(222, 184, 135));
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.NonPremultiplied);
imageLoadingBackground.Draw(spriteBatch);//only draw the background image while loading
spriteBatch.DrawString(fontBold, "LOADING...",
new Vector2(screenWidth / 2 - fontBold.MeasureString("LOADING...").X / 2 * scaleLarge,
screenHeight / 2),
Color.Black,
0, new Vector2(0, 0), scaleLarge, SpriteEffects.None, 0);//and some text
spriteBatch.End();
}
if (isLoaded)
{
spriteBatch.Begin();
//draw your main screen here
spriteBatch.End();
}
Более того, в моем основном методе LoadContent () я использую:
ThreadPool.QueueUserWorkItem(state =>
{
LoadGameContent();
});
чтобы вызвать метод для загрузки игрового контента.
Просто измените синтаксис, чтобы он соответствовал вашей программе VBA, а также метод Draw()
.
Редактировать: Таймер для подсчета времени загрузки:
Объявить переменную: long loadTimeForSplashContent, loadTimeForAllContent, startTime;
В первой строке LoadContent()
метод: loadTimeForSplashContent = DateTime.Now.Ticks;
После загрузки содержимого заставки: loadTimeForSplashContent = (DateTime.Now.Ticks - start) / 10000;//to convert to seconds
После загрузки всего контента: loadTimeForAllContent = (DateTime.Now.Ticks - start) / 10000;//to convert to seconds
Затем распечатайте их на экране или Console
, чтобы увидеть, сколько они стоят. Вам нужно найти аналогичный метод DateTime.Now.Ticks
в VBA
, чтобы увидеть время в данный момент (извините, я не знаю).
Надеюсь, это поможет!