Воспроизведение видео с помощью Scaleform GFx
Материал из CryWiki Russia
DCamer (Обсуждение | вклад) (Новая страница: «== Конвертирование видео == Чтобы воспороизвести видео используя Scaleform, вам сконвертироват...») |
DCamer (Обсуждение | вклад) |
||
Строка 62: | Строка 62: | ||
} | } | ||
}</source> | }</source> | ||
+ | |||
+ | [[Категория:CryEngine 3 Free SDK:Пользовательский интерфейс]] |
Текущая версия на 12:34, 26 февраля 2012
Содержание |
Конвертирование видео
Чтобы воспороизвести видео используя Scaleform, вам сконвертировать видео-файл в формат USM. Scaleform Video SDK содержит инструмент ScaleformVideoEncoder.exe, которые позволяет конвертировать AVI-файлы в формат USM.
Загрузка видео в CryENGINE
Есть два спасоба загрузить видео в CryENGINE:
- Загрузить USM-файла напрямую.
- Вложить объект «Linked video» в Flash-ассет.
1. Загрузка USM-файла напрямую
Простой способ отобразить видео: Напрямую загрузить USM-файл через экземпляр IFlashPlayer.
IFlashPlayer* pFlashPlayer = gEnv->pSystem->CreateFlashPlayerInstance(); bool bRes = pFlashPlayer->Load("myvideo.usm");
Теперь вы можете вывести видео на экран, аналогично любым GFX-файлам.
pFlashPlayer->Advance(fDeltaTime); pFlashPlayer->Render();
2. Вложение видео-объекта в Flash-ассет
Иным способом является размещение видео-объекта в вашем Flash-файле, загрузка USM-файла через объект NetStream и привязка его к вашему видео-объекту. Чтобы добавить видео-объект в ваш Flash-ассет, щёлкните правой кнопкой мыши в библиотеке и выберите «New Video…» из контекстного меню.
Разместите видео-объект в Stage и укажите имя экземпляра, например, «MyVideo». Затем, добавьте следующий ActionScript в ваш FLA-файл:
// включаем расширение GFX _global.gfxExtensions = true; // создаём новый объект NetStream из объекта NetConnection var NetC = new NetConnection(); NetC.connect(null); ns = new NetStream(NetC); // привязываем NetStream к видео-объекта на Stage MyVideo.attachVideo(ns); // воспоизводим видео onLoad = function() { ns.play("myvideo.usm"); }
Если вы хотите получить информацию о состояние видео, например, чтобы отправить уведомление через FSCommand в код C++, вы можете добавить функцию «onStatus» в ваш ActionScript:
// прослушиваем событие видео ns.onStatus = function (infoObject) { if (infoObject.level == "status") { if(infoObject.code == "NetStream.Play.Start") fsCommand("onVideoStart"); else if (infoObject.code == "NetStream.Play.Stop") fsCommand("onVideoStop"); } else if (infoObject.level == "error") { if (infoObject.code == "NetStream.Play.StreamNotFound") fsCommand("onVideoNotFound"); } }