Блогът на Иван Андреев
Разработване на игри с помощта на XNA, MonoGame и Unity3D Blog
Използване на кода
Създаване на проект
Първо трябва да създадете нов проект.
Плейърът трябва да бъде поставен във всеки прозорец на източника в Visual Stidio, така че трябва да изберете проект на Editor Margin от менюто Extensibility. Кръстих проекта „InternetRadioPlayer“. Веднага след създаването на проекта в Solution Explorer можете да видите няколко файла, генерирани от Visual Studio.
Файловете от най-голям интерес за нас са InternetRadioPlayer.cs и InternetRadioPlayerFactory.cs. InternetRadioPlayerFactory.cs е фабрика, която създава нашия контрол за всяка страница с код в Visual Studio. Файлът съдържа следния код:
#region InternetRadioPlayer Factory
/// Експортиране на, което връща екземпляр на полето за редактора
[Order (After = PredefinedMarginNames.HorizontalScrollBar)] // Уверете се, че полето се намира под хоризонталната лента за превъртане
[MarginContainer (PredefinedMarginNames.Bottom)] // Задайте контейнера в долната част на прозореца на редактора
[ContentType („text“)] // Показване на това поле за всички текстови типове
вътрешен запечатан клас MarginFactory: IWpfTextViewMarginProvider
публичен IWpfTextViewMargin CreateMargin (IWpfTextViewHost textViewHost, IWpfTextViewMargin containerMargin)
върнете нов InternetRadioPlayer (textViewHost.TextView);
Няма да променя този файл, но ще поставя целия полезен код в InternetRadioPlayer.cs. Но първо трябва да създадем клас за играча (плейъра) и контрол за плейъра, който след това ще бъде поставен на страниците с кода.
Клас на играч
Класът на плейъра ще отговаря за възпроизвеждането на музика (можете да познаете по името). Той все още няма нищо общо с контролите.
Отначало се опитах да намеря добра библиотека за работа със звук, но не можах да намеря нищо просто и леко. В крайна сметка реших да използвам най-простото решение - използвам стандартния WPF контрол - MediaElement. Може да играе почти всичко (поне това, което Window Media Player може да играе, доколкото разбирам).
Време е да създадете класа на плейъра във файла Player.cs
публичен клас Player
частен MediaElement _player;
публичен PlayerState State < get; set; >
частен речник _playlist = нов речник ();
частен статичен плейър _instance;
публично събитие EventHandler променено;
публичен речник Плейлист
публичен двоен том
публичен статичен екземпляр на Player
if (_instance == null)
_instance = нов играч ();
публичен int SelectedIndex < get; set; >
_player = нов MediaElement ();
public void SetSource (int index, string uri)
_player.Source = нов Uri (uri);
публична невалидна игра ()
публична невалидност Стоп ()
публична невалидна пауза ()
public void Unload ()
if (State! = PlayerState.Stopped)
публична невалидна LoadPlaylist (string fileName)
низ [] редове = File.ReadAllLines (име на файл);
foreach (вариращ елемент в редове)
низ [] str = Regex.Split (елемент, ">>>");
частна невалидна OnChanged ()
if (Променено! = null)
публично изброяване PlayerState
Тук няма нищо твърде сложно. Плейърът има четири състояния: Неизвестно (плейлистът не се зарежда), Спряно (възпроизвеждането е спряно), Пауза (пауза) и Възпроизвеждане (възпроизвежда се музика).
Има методи, които променят това състояние и вътрешното състояние на плейъра (MediaElement).
LoadPlayList зарежда плейлиста от избрания файл.
Променено събитие информира абонатите да актуализират външния вид на играча.
По-рано писах, че един от проблемите е, че трябва да направите плейъра общ за всяка от страниците с кода. В този случай използвах статичната променлива _instance, за да попреча на никого да създава допълнителни играчи.
InternetRadioPlayerFactory създава екземпляр на контрола на плейъра (който ще бъде описан малко по-късно) за всяка страница с код. Съответно, ако създам плейър във всеки от контролите, би било възможно да възпроизвеждам няколко песни от различни страници наведнъж, което не е много добре.
Control - Player
Сега да преминем към създаването на контрола - това ще видим на страниците с кода в Visual Studio.
Щракнете върху Add-> New Item и изберете User Control (WPF) от раздела WPF. Назовах новата контрола PlayerControl.
- Светът на светлината - Духовно развитие - Архив на блоговете - Консумация и дефицит на кислород
- Откриване на Lingvo през ноември moleskine, nipper, la cometa et 107 ans - Multilingua blog
- Любов, като във филм - Блог на Ирина Мирошниченко
- КЛАСИФИКАЦИЯ НА ИНТЕРФЕЙСА
- Модулацията на дължината на канала е