Класс: Phaser.Video
Конструктор
new Video(game, key, url)
Объект Video, который получает предварительно загруженное видео из кэша Phaser и управляет его воспроизведением.
В качестве альтернативы он принимает поток getUserMedia с активной веб-камеры и транслирует содержимое этой камеры в видео
(см. метод startMediaStream)
Затем видео можно применить к спрайту в качестве текстуры. Если несколько спрайтов используют одну и ту же текстуру видео и изменяют воспроизведение
(например, вы приостанавливаете видео или переходите к новому времени), то это изменение будет видно во всех спрайтах одновременно.
Из-за ошибки в IE11 вы не можете воспроизводить текстуру видео на спрайт в WebGL. Для IE11 установите режим Canvas.
Если вам нужно, чтобы каждый спрайт мог воспроизводить видео полностью независимо, вам понадобится один объект Video на каждый спрайт.
Пожалуйста, учтите очевидные последствия для производительности и память, необходимую для хранения видео в оперативной памяти.
В некоторых мобильных браузерах, таких как iOS Safari, вы не можете воспроизвести видео, пока пользователь явно не коснётся экрана.
Это работает так же, как разблокировка звука. Phaser будет обрабатывать разблокировку касанием для вас, однако, в отличие от звука,
следует отметить, что каждое видео должно быть разблокировано касанием, а не только первое. Вы можете использовать метод changeSource,
чтобы обойти это ограничение, но см. справку по методу для получения подробностей.
На устройствах с небольшим экраном, особенно iPod и iPhone, видео будет запущено в собственном видеоплеере,
вне браузера Safari. Этого ограничения избежать нельзя, это ограничение, наложенное устройством.
Примечание: в iOS, если вам нужно обнаружить, когда пользователь нажимает кнопку «Готово» (перед окончанием видео),
вам необходимо добавить свой собственный обработчик событий
Параметры
| Имя | Тип | Аргумент | По умолчанию | Описание |
|---|---|---|---|---|
game | Phaser.Game | Ссылка на текущую запущенную игру. | ||
key | строка | null | <необязательно> | null | Ключ файла видео в Phaser.Cache, который будет воспроизводиться этим объектом Video. Установите в значение |
url | строка | null | <необязательно> | null | Если видео не загружено, вы можете указать здесь полный URL файла (убедитесь, что ключ установлен в null) |
- Исходный код: gameobjects/Video.js (Строка 38)
Общедоступные свойства
- Source code: gameobjects/Video.js (Line 1167)
- Source code: gameobjects/Video.js (Line 75)
- Source code: gameobjects/Video.js (Line 1187)
- Source code: gameobjects/Video.js (Line 46)
- Source code: gameobjects/Video.js (Line 64)
- Source code: gameobjects/Video.js (Line 140)
- Default Value
- null
- Source code: gameobjects/Video.js (Line 52)
- Source code: gameobjects/Video.js (Line 1360)
- Source code: gameobjects/Video.js (Line 1217)
- Source code: gameobjects/Video.js (Line 101)
- Source code: gameobjects/Video.js (Line 91)
- Source code: gameobjects/Video.js (Line 96)
- Source code: gameobjects/Video.js (Line 106)
- Source code: gameobjects/Video.js (Line 86)
- Source code: gameobjects/Video.js (Line 113)
- Source code: gameobjects/Video.js (Line 1257)
- Source code: gameobjects/Video.js (Line 1337)
- Source code: gameobjects/Video.js (Line 1391)
- Source code: gameobjects/Video.js (Line 1202)
- Source code: gameobjects/Video.js (Line 155)
- Default Value
- 500
- Source code: gameobjects/Video.js (Line 161)
currentTime : number
Текущее время видео в секундах. Если задано, видео попытается перейти к этому моменту времени.
disableTextureUpload : boolean
Если true, это видео никогда не будет отправлять свои данные изображения на GPU, когда его флаг изменения имеет значение true. Это применимо только в WebGL.
[readonly] duration : number
Продолжительность видео в секундах.
game : Phaser.Game
Ссылка на запущенную игру.
height : number
Высота видео в пикселях.
isStreaming : boolean
Есть ли источник потокового видео? Например, с веб-камеры.
key : string
Ключ видео в кеше, если оно там хранится. Будет null, если это видео использует веб-камеру.
loop : boolean
Получает или устанавливает, настроено ли видео на циклическое воспроизведение.
Обратите внимание, что в настоящее время некоторые браузеры (например, Chrome) не поддерживают бесшовное циклическое воспроизведение видео.
Если видео еще не установлено, это всегда будет возвращать false.
mute : boolean
Получает или устанавливает состояние отключения звука видео.
onAccess : Phaser.Signal
Этот сигнал отправляется, если пользователь разрешает доступ к своей веб-камере.
onChangeSource : Phaser.Signal
Этот сигнал отправляется, если источник видео изменяется. Он отправляет 3 параметра: ссылку на объект Video и новую ширину и высоту нового источника видео.
onComplete : Phaser.Signal
Этот сигнал отправляется, когда видео завершает воспроизведение, т. е. переходит в состояние 'ended'. Специфично для iOS, он также срабатывает, если пользователь нажимает кнопку 'Готово' в любой момент воспроизведения. Видео, настроенные на циклическое воспроизведение, никогда не будут отправлять этот сигнал.
onError : Phaser.Signal
Этот сигнал отправляется, если возникает ошибка при получении разрешения на использование веб-камеры (для потокового видео) или при попытке воспроизвести видеофайл.
onPlay : Phaser.Signal
Этот сигнал отправляется, когда видео начинает воспроизводиться. Он отправляет 3 параметра: ссылку на объект Video, настроен ли циклический режим и скорость воспроизведения.
onTimeout : Phaser.Signal
Этот сигнал отправляется, если при запросе разрешения на использование веб-камеры ответ не получен в течение предела Video.timeout.
Это может быть связано с тем, что пользователь выбрал Not now в окне разрешений или есть задержка в установлении LocalMediaStream.
paused : boolean
Получает или устанавливает состояние паузы видео.
Если видео все еще заблокировано сенсорным вводом (например, на устройствах iOS), этот вызов не оказывает никакого эффекта.
playbackRate : number
Получает или устанавливает скорость воспроизведения видео. Это скорость, с которой воспроизводится видео.
[readonly] playing : boolean
True, если видео в данный момент воспроизводится (и не приостановлено и не завершено), иначе false.
[readonly] progress : number
Прогресс этого видео. Это значение от 0 до 1, где 0 - начало, а 1 - конец видео.
retry : integer
Текущая попытка повтора.
retryInterval : integer
Количество мс между каждой попыткой мониторинга состояния загрузки видео.
retryLimit : integer
- Значение по умолчанию
- 20
- Исходный код: gameobjects/Video.js (Строка 149)
- Исходный код: gameobjects/Video.js (Строка 288)
- Исходный код: gameobjects/Video.js (Строка 263)
- Исходный код: gameobjects/Video.js (Строка 269)
- Значение по умолчанию
- 15000
- Исходный код: gameobjects/Video.js (Строка 119)
- Исходный код: gameobjects/Video.js (Строка 81)
- Исходный код: gameobjects/Video.js (Строка 70)
- Исходный код: gameobjects/Video.js (Строка 130)
- Исходный код: gameobjects/Video.js (Строка 135)
- Исходный код: gameobjects/Video.js (Строка 1305)
- Исходный код: gameobjects/Video.js (Строка 58)
При запуске воспроизведения видео Phaser будет отслеживать его состояние readyState с помощью вызова setTimeout.
setTimeout происходит один раз каждые Video.retryInterval мс. Он будет продолжать отслеживать состояние видео
таким образом, пока не будет достигнуто значение retryLimit, а затем прервётся.
[только для чтения] snapshot : Phaser.BitmapData
Снимок экрана, сделанный с видео. Изначально он чёрный. Заполните его, вызвав Video.grab().
При вызове BitmapData обновляется с помощью снимка текущего воспроизводимого видео или активного видеопотока.
Если Phaser был скомпилирован без поддержки BitmapData, это свойство всегда будет null.
texture : PIXI.Texture
PIXI.Texture.
textureFrame : Phaser.Frame
Кадр, используемый этим видео для рендеринга.
timeout : integer
Количество мс, разрешённое для истечения, прежде чем сигнал Video.onTimeout будет отправлен во время ожидания доступа к веб-камере.
touchLocked : boolean
true, если это видео в настоящее время заблокировано в ожидании события касания. Это происходит на некоторых мобильных устройствах, таких как iOS.
type : number
Константа типа этого объекта.
video :HTMLVideoElement
Элемент HTML Video, добавленный в документ.
videoStream :MediaStream
Данные потока видео. Устанавливается только если это Video получает поток с веб-камеры через startMediaStream.
volume : number
Получает или задаёт громкость видео, значение от 0 до 1. Заданное значение ограничено диапазоном от 0 до 1.
width : number
Ширина видео в пикселях.
Публичные методы
- Исходный код: gameobjects/Video.js (Строка 804)
- Исходный код: gameobjects/Video.js (Строка 833)
- Исходный код: gameobjects/Video.js (Строка 954)
- Исходный код: gameobjects/Video.js (Строка 623)
- Исходный код: gameobjects/Video.js (Строка 311)
- Исходный код: gameobjects/Video.js (Строка 507)
add(object) → {Phaser.Video}
Обновляет заданные объекты отображения, чтобы они использовали данное видео в качестве своей текстуры.
Это заменит любую текущую установленную текстуру.
Параметры
| Имя | Тип | Описание |
|---|---|---|
object | Phaser.Sprite | Array.<Phaser.Sprite> | Phaser.Image | Array.<Phaser.Image> | Либо один Sprite/Image, либо массив Sprites/Images. |
Возвращаемое значение
Этот объект Video для цепочки вызовов методов.
addToWorld(x, y, anchorX, anchorY, scaleX, scaleY) → {Phaser.Image}
Создаёт новый объект Phaser.Image, назначает данному видео в качестве текстуры, добавляет его в мир и возвращает его.
Параметры
| Имя | Тип | Аргумент | Значение по умолчанию | Описание |
|---|---|---|---|---|
x | number | <необязательно> | 0 | Координата x для размещения Image. |
y | number | <необязательно> | 0 | Координата y для размещения Image. |
anchorX | number | <необязательно> | 0 | Устанавливает точку привязки x для Image. Значение от 0 до 1, где 0 — верхний левый угол, 1 — нижний правый. |
anchorY | number | <необязательно> | 0 | Устанавливает точку привязки y для Image. Значение от 0 до 1, где 0 — верхний левый угол, 1 — нижний правый. |
scaleX | number | <необязательно> | 1 | Горизонтальный коэффициент масштабирования Image. Значение 1 означает отсутствие масштабирования. 2 — в два раза больше и т. д. |
scaleY | number | <необязательно> | 1 | Вертикальный коэффициент масштабирования Image. Значение 1 означает отсутствие масштабирования. 2 — в два раза больше и т. д. |
Возвращаемое значение
Новый добавленный объект Image.
changeSource(src, autoplay) → {Phaser.Video}
В некоторых мобильных браузерах видео нельзя воспроизводить, пока пользователь явно не коснётся видео, чтобы разрешить это.
Phaser обрабатывает это с помощью метода setTouchLock. Однако, если у вас 3 разных видео, например, "Intro", "Start" и "Game Over",
разделенные на три разных объекта Video, то пользователю придётся разблокировать каждое из них.
Вы можете избежать этого, используя всего один объект Video и просто изменяя источник видео. После разблокирования элемента Video он остаётся
разблокированным, даже если меняется источник. Поэтому вы можете использовать это себе на пользу, чтобы не заставлять пользователя
снова «касаться» видео.
Как можно догадаться, существуют ограничения. Пока что мы обнаружили, что видео должны быть в одном и том же формате кодирования и битрейта.
Этот метод автоматически обрабатывает изменение размеров видео, но если вы попытаетесь переключиться на другой битрейт, мы обнаружили,
что он не может отобразить новое видео на iOS (браузеры настольных компьютеров справляются лучше).
При изменении источника видео файл видео запрашивается через сеть. Слушайте сигнал onChangeSource, чтобы знать,
когда новое видео загрузило достаточно контента, чтобы его можно было воспроизвести. Предыдущие настройки, такие как громкость и
состояние цикла, автоматически принимаются новым видео.
Параметры
| Имя | Тип | Аргумент | Значение по умолчанию | Описание |
|---|---|---|---|---|
src | string | Новый URL для изменения video.src. | ||
autoplay | boolean | <необязательно> | true | Видео должно автоматически воспроизводиться после обновления источника? |
Возвращаемое значение
Этот объект Video для цепочки вызовов методов.
complete()
Вызывается при завершении воспроизведения видео (достижении и состоянии завершения).
Отправляет сигнал Video.onComplete.
connectToMediaStream(video, stream) → {Phaser.Video}
Подключается к внешнему потоку медиа для веб-камеры вместо использования локального.
Параметры
| Имя | Тип | Описание |
|---|---|---|
video | HTMLVideoElement | Элемент HTML Video, который использует поток. |
stream | MediaStream | Данные потока видео. |
Возвращаемое значение
Этот объект Video для цепочки вызовов методов.
createVideoFromBlob(blob) → {Phaser.Video}
Создаёт новый элемент Video из данного Blob. Blob должен содержать данные видео в правильном закодированном формате.
Этот метод обычно вызывается Phaser.Loader и Phaser.Cache за вас, но доступен для удобства.
Параметры
| Имя | Тип | Описание |
|---|---|---|
blob | Blob | Blob, содержащий данные видео: |
Возвращаемое значение
Этот объект Video для цепочки вызовов методов.
createVideoFromURL(url, autoplay) → {Phaser.Video}
Создаёт новый элемент Video из заданного URL.
Параметры
- Исходный код: gameobjects/Video.js (Строка 530)
- Исходный код: gameobjects/Video.js (Строка 1141)
- Исходный код: gameobjects/Video.js (Строка 1075)
- Исходный код: gameobjects/Video.js (Строка 635)
- Исходный код: gameobjects/Video.js (Строка 1111)
- Исходный код: gameobjects/Video.js (Строка 859)
- Исходный код: gameobjects/Video.js (Строка 1033)
- Исходный код: gameobjects/Video.js (Строка 337)
| Имя | Тип | Аргумент | Значение по умолчанию | Описание |
|---|---|---|---|---|
url | string | URL видео. | ||
autoplay | boolean | <optional> | false | Автоматически начать воспроизведение видео? |
Возвращаемое значение
Объект Video для цепочки методов.
destroy()
Удаляет объект Video. Это вызывает Video.stop и затем Video.removeVideoElement.
Если какие-либо Sprites используют это Video в качестве текстуры, вам нужно будет управлять ими самостоятельно.
grab(clear, alpha, blendMode) → {Phaser.BitmapData}
Извлекает текущую кадр из видео или потока видео и рендерит его в BitmapData Video.snapshot.
Можно задать, нужно ли очистить BitmapData, альфа-канал и режим наложения при отрисовке.
Для более тонкого контроля над извлечением можно вызвать Video.snapshot.copy напрямую с теми же параметрами, что и BitmapData.copy.
Параметры
| Имя | Тип | Аргумент | Значение по умолчанию | Описание |
|---|---|---|---|---|
clear | boolean | <optional> | false | Нужно ли очистить BitmapData перед извлечением видео? Если вы не используете альфа-канал или режим наложения, обычно можно установить это значение в false. |
alpha | number | <optional> | 1 | Альфа-значение, которое будет установлено для видео перед отрисовкой. Значение от 0 (полностью прозрачно) до 1 (непрозрачно). |
blendMode | string | <optional> | null | Режим наложения, используемый при отрисовке. По умолчанию режим наложения не используется. Это значение Canvas globalCompositeOperation, например, 'lighter' или 'xor'. |
Возвращаемое значение
Ссылка на объект Video.snapshot BitmapData для дальнейшей цепочки методов.
play(loop, playbackRate) → {Phaser.Video}
Начинает воспроизведение видео, если оно ещё не воспроизводится.
Параметры
| Имя | Тип | Аргумент | Значение по умолчанию | Описание |
|---|---|---|---|---|
loop | boolean | <optional> | false | Зацикливать видео автоматически при достижении конца? Обратите внимание, что некоторые браузеры (например, Chrome) в настоящее время не поддерживают плавную зацикливание видео. |
playbackRate | number | <optional> | 1 | Скорость воспроизведения видео. 1 — нормальная скорость, 2 — скорость в 2 раза больше и так далее. Нельзя задавать отрицательную скорость воспроизведения. |
Возвращаемое значение
Объект Video для цепочки методов.
removeVideoElement()
Удаляет элемент Video из DOM, вызывая parentNode.removeChild на нём.
Также удаляются атрибуты autoplay и src, и ссылка обнуляется.
render()
Если игра запущена в WebGL, это позволит загрузить текстуру на GPU, если она грязная.
Этот метод вызывается автоматически, если Video используется Sprite, в противном случае вам нужно будет вызвать его в вашей функции отрисовки.
Если вы хотите отключить эту функциональность, установите Video.disableTextureUpload в true.
setTouchLock()
Устанавливает обратный вызов Input Manager touch на Video.unlock.
Необходимо для разблокировки видео на мобильных устройствах. В основном используется внутри.
startMediaStream(captureAudio, width, height) → {Phaser.Video}
Вместо воспроизведения видеофайла этот метод позволяет вам передавать видеоданные с подключённой веб-камеры.
Как только этот метод будет вызван, браузер попросит у пользователя разрешение на доступ к веб-камере.
Если пользователь разрешит, поток веб-камеры направляется в это Video. Вызовите Video.play для запуска потока.
Если пользователь заблокирует веб-камеру, сигнал onError будет отправлен, содержащий событие NavigatorUserMediaError
или MediaStreamError.
Вы можете задать ширину и высоту потока. Если указаны, входные данные будут обрезаны до этих размеров.
Если не указаны, как только поток получит достаточно данных, размеры видео будут изменены в соответствии с источником устройства веб-камеры.
Вы можете прослушать это с помощью сигнала onChangeSource.
Параметры
| Имя | Тип | Аргумент | Значение по умолчанию | Описание |
|---|---|---|---|---|
captureAudio | boolean | <optional> | false | Определяет, нужно ли записывать звук вместе с видео в потоке видео. |
width | integer | <optional> | Ширина используется для создания потока видео. Если не задано, ширина видео будет установлена в соответствии с шириной источника ввода веб-камеры. | |
height | integer | <optional> | Высота используется для создания потока видео. Если не задано, высота видео будет установлена в соответствии с высотой источника ввода веб-камеры. |
Возвращаемое значение
Объект Video для цепочки методов или false, если устройство не поддерживает getUserMedia.
stop() → {Phaser.Video}
Останавливает воспроизведение видео.
Удаляет все локально заданные сигналы.
Если вы хотите только приостановить воспроизведение видео, чтобы возобновить его позже, используйте Video.paused = true вместо этого.
Если видео не завершило загрузку, вызов Video.stop не прервёт загрузку. Для этого вам нужно
вызвать Video.destroy вместо этого.
Если вы используете поток видео с веб-камеры, вызов Stop отключит сеанс MediaStream и отключит веб-камеру.
Возвращаемое значение
- Исходный код: gameobjects/Video.js (Строка 723)
- Исходный код: gameobjects/Video.js (Строка 1046)
- Исходный код: gameobjects/Video.js (Строка 572)
Этот объект Video для цепочки методов.
unlock()
Включает видео на мобильных устройствах, обычно после первого касания.
Если SoundManager ещё не разблокирован, то он также будет автоматически разблокирован.
Одновременно может быть только одно видео, ожидающее разблокировки.
updateTexture(event, width, height)
Вызывается автоматически, если изменяется источник видео и обновляются внутренние размеры текстуры.
Затем отправляется сигнал onChangeSource.
Параметры
| Имя | Тип | Аргумент | Описание |
|---|---|---|---|
event | объект | <необязательно> | Событие, которое вызвало обновление текстуры. |
width | целое число | <необязательно> | Новая ширина видео. Если не определено, используется |
height | целое число | <необязательно> | Новая высота видео. Если не определено, используется |
© 2016 Richard Davey, Photon Storm Ltd.
Licensed under the MIT License.
http://phaser.io/docs/2.6.2/Phaser.Video.html