Я сейчас работаю с. NET 4.5. Программирование фотобудки. Фотобудка должна начинаться с полноэкранного режима:
- Показать заставку с заставкой.
- Когда пользователь нажимает на экран, он должен показать, что вы готовы! видео
- Когда закончится воспроизведение видео по готовности, оно должно показать видео обратного отсчета
- По окончании видео обратного отсчета необходимо сделать снимок.
Прямо сейчас я могу сделать № 1 и № 2. Я также могу сфотографировать. Моя проблема с последовательностью. Когда видео заканчивается, мне нужно поменять видео, но поскольку все выполняется в обработчике событий, оно воспроизводит только видео, пока программа запускает обработчик событий.
Есть ли лучший и более умный способ сделать это? это?
Вот мой код:
То, что у меня есть и работает прямо сейчас:
private void Form1_Load(object sender, EventArgs e)
{
// maximize the screen
FormBorderStyle = FormBorderStyle.None;
WindowState = FormWindowState.Maximized;
TopMost = true;
// play an intro video without the UI controls
this.videoPath = this.basePath + "intro.mp4";
this.wmpVideo.URL = this.videoPath;
this.wmpVideo.settings.setMode("Loop", true);
this.wmpVideo.Ctlcontrols.play();
this.wmpVideo.uiMode = "none";
}
Затем, если пользователь нажимает на видео, оно изменит видео на новый файл:
private void wmpVideo_MouseDownEvent(object sender, AxWMPLib._WMPOCXEvents_MouseDownEvent e)
{
if (this.current == 0) //this means that currently we are in the intro
{
// Then I change the video to "get ready!"
this.changeVideo("getready.mp4",1);
}
changeVideo в основном обновляет видео до getready.mp4. Затем мне нужно изменить его на countdown.mp4. Чтобы перейти от одного видео к другому, мне нужно проверить, когда видео заканчивается. Я делаю это прямо сейчас с:
wmpVideo.PlayStateChange += new AxWMPLib._WMPOCXEvents_PlayStateChangeEventHandler(checkGetReadyFinished);
И обработчик событий выглядит так:
private void checkGetReadyFinished(object sender, AxWMPLib._WMPOCXEvents_PlayStateChangeEvent e)
{
if (e.newState == 8) {
// If we are currently in the "getready state"
if (this.current == 1)
{
// then I change the video to the countdown.mp4
this.changeVideo("countdown.mp4", 2);
}
}
}
ПРОБЛЕМА
Я заметил видео ТОЛЬКО играет, когда я использую метод обработчика событий. Я понял это, потому что увидел, что видео не воспроизводилось, поэтому я добавил MessageBox в методе changeVideo. Я видел это, пока показывался MessageBox, воспроизводилось видео. Когда я нажал «ОК», видео пропало IE, мне нужно остаться в методе обработчика событий.
ВОПРОС
Есть ли какой-нибудь другой лучший способ показать video1, затем покажите video2, когда закончится video1. Как я уже упоминал, мне нужно сделать программу Photobooth.
Я также попытался вызвать другую форму, но как только я установил ее на полноэкранный режим, экран вроде мигает.
Есть ли оптимальный способ сделать это?