Розробка програм для Windows Phone/Створення першої XNA програми для Windows Phone
Глава розповідає, як створити першу просту XNA програму для Windows Phone 7, яка виводить текстове привітання в центрі екрану.
Відмінністю такої програми в порівнянні з прграмою Silverligt в тому, що XNA не має встроєних шрифтів. Silverlight використовує векторні TrueType шрифти тоді як XNA не має можливості працювати з такими шрифтами. В XNA, все що відображається на екрані це бітове зображення, у тому числі і шрифти.
Якщо ви бажаєте використовувати конкретний шрифт в програмі XNA, цей шрифт необхідно включити у виконуваний файл у вигляді колекції зображень кожної літери. Існують стандартні шрифти, які ви можете використовувати і вільно розповсюджувати в програмах XNA, такі як:
- Kootenay
- Lindsey
- Miramonte
- Miramonte Bold
- Pescadero
- Pescadero Bold
- Pericles
- Pericles Light
- Segoe UI Mono
- Segoe UI Mono Bold
Для створення проекту виконайте наступні дії File -> New -> Project. Далі у вікні Visual C# -> XNA Game Studio 4.0 -> Windows Phone Game (4.0). Виберіть каталог для збереження і назовіть свій проект XnaHelloPhone.
Visual Studio створить два проекти, один для самої програм а інший для її контенту і ресурсів.
Додайте шрифт до програми - зробіть правий клік на проекті контенту (який буде названий XnaHelloPhoneContent (Content) і з випадаючього списку виберіть Add -> New Item -> Sprite Font. Залиште назву файлу SpriteFont1.spritefont, і нажміть кнопку Add.
Слово “sprite” (вимовляється як спрайт) загальний термін при розробці ігор який зазвичай означає невелике бітове зображення, яке може рухатись по екрану.
В проект буде додано XML файл SpriteFont1.spritefont, який містить налаштування шрифту:
- Тег Size - задає розмір шрифта у пікселях.
- Секція CharacterRegions задає проміжок кодів символів у шістнадцятирічному форматі які вам необхідні в даній програмі. За замовчуванням він має значення від 0x32 до 0x126, які включає всі символи ASCII, крім спеціальних.
Основним файлом який ви будете використовувати для розробки простих невеликих ігор є файл проекту - Game1.cs. В ньому декларується клас Game1 наслідується від класу Game. Додайте до цього класу три нових властивості:
string text = "Hello, Windows Phone 7!";
SpriteFont segoe14;
Vector2 textPosition;
Для проботи програми вам необхідно завантажити і ініціалізувати шрифт, для таких цілей в классі Game1 існує метод LoadContent, який виконується при ініціалізації програми. Перша строка методу вже написана для вас, вона створює об'єкт spriteBatch який використовується для відображення спрайтів на екрані.
segoe14 = this.Content.Load<SpriteFont>("Segoe14");
Vector2 textSize = segoe14.MeasureString(text);
Viewport viewport = this.GraphicsDevice.Viewport;
textPosition = new Vector2((viewport.Width - textSize.X) / 2, (viewport.Height - textSize.Y) / 2);
Після закінчення фази ініціалізації, починається виконання програми, програма входить в ігровий цикл, який оновлює зображення на екрані зі швидкістю 30 кадрів в секунду. Послідовно визиваються два методи: Update потім Draw і так по колу.
Метод Draw ви використовуєте для того щоб відобразити щось на екрані. Якщо вам необхідно провести перед цим якісь підрахунки, слід використовувати метод * Update.
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.Navy);
spriteBatch.Begin();
spriteBatch.DrawString(segoe14, text, textPosition, Color.White);
spriteBatch.End();
base.Draw(gameTime);
}
Спрайти відображаються на екрані якщо вони повьязані з обьектом SpriteBatch, який було створено під час виконання методу LoadContent. Між викликами методів Begin та End може бути декілька визовів таких як
DrawString для відображення тексту і методи Draw для відображення зображень. В даному випадку методу
DrawString передається посилання на завантажений шрифт, текст який необхідно відобразити, позиція тексту на екрані, яка задає верхній лівий угол, і колір.
Запустіть програму. За замовчуванням Silverlight програми відображаються в портретній орієнтації, а XNA програми у горизонтальній орієнтації. Якщо ви запустили програму на емуляторі ви можете змінити його орієнтацію.
Література
[ред.]- Programming Windows Phone 7, Charles Petzold