mirror of
https://github.com/photonstorm/phaser
synced 2024-11-22 20:53:39 +00:00
Fixed noAudio
This commit is contained in:
parent
5b98d5737e
commit
35dfd2fb30
2 changed files with 52 additions and 127 deletions
|
@ -87,8 +87,6 @@ var Video = new Class({
|
||||||
|
|
||||||
this._key = UUID();
|
this._key = UUID();
|
||||||
|
|
||||||
this.snapshot = null;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @property {boolean} touchLocked - true if this video is currently locked awaiting a touch event. This happens on some mobile devices, such as iOS.
|
* @property {boolean} touchLocked - true if this video is currently locked awaiting a touch event. This happens on some mobile devices, such as iOS.
|
||||||
* @default
|
* @default
|
||||||
|
@ -179,20 +177,6 @@ var Video = new Class({
|
||||||
*/
|
*/
|
||||||
this._codePaused = false;
|
this._codePaused = false;
|
||||||
|
|
||||||
/**
|
|
||||||
* @property {boolean} _pendingChangeSource - Internal var tracking play pending.
|
|
||||||
* @private
|
|
||||||
* @default
|
|
||||||
*/
|
|
||||||
this._pendingChangeSource = false;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @property {boolean} _autoplay - Internal var tracking autoplay when changing source.
|
|
||||||
* @private
|
|
||||||
* @default
|
|
||||||
*/
|
|
||||||
this._autoplay = false;
|
|
||||||
|
|
||||||
this._callbacks = {
|
this._callbacks = {
|
||||||
end: this.completeHandler.bind(this),
|
end: this.completeHandler.bind(this),
|
||||||
play: this.playHandler.bind(this),
|
play: this.playHandler.bind(this),
|
||||||
|
@ -210,6 +194,7 @@ var Video = new Class({
|
||||||
this._crop = this.resetCropObject();
|
this._crop = this.resetCropObject();
|
||||||
|
|
||||||
this._lastUpdate = 0;
|
this._lastUpdate = 0;
|
||||||
|
this._cacheKey = '';
|
||||||
|
|
||||||
this.setPosition(x, y);
|
this.setPosition(x, y);
|
||||||
this.initPipeline();
|
this.initPipeline();
|
||||||
|
@ -222,6 +207,8 @@ var Video = new Class({
|
||||||
{
|
{
|
||||||
this.video = _video;
|
this.video = _video;
|
||||||
|
|
||||||
|
this._cacheKey = key;
|
||||||
|
|
||||||
console.log('Video constructor, setting defaults', _video.videoWidth, 'x', _video.videoHeight);
|
console.log('Video constructor, setting defaults', _video.videoWidth, 'x', _video.videoHeight);
|
||||||
|
|
||||||
this._codePaused = _video.paused;
|
this._codePaused = _video.paused;
|
||||||
|
@ -232,7 +219,7 @@ var Video = new Class({
|
||||||
}
|
}
|
||||||
else if (url)
|
else if (url)
|
||||||
{
|
{
|
||||||
this.createVideoFromURL(url);
|
this.playURL(url);
|
||||||
}
|
}
|
||||||
|
|
||||||
var game = scene.sys.game.events;
|
var game = scene.sys.game.events;
|
||||||
|
@ -279,7 +266,7 @@ var Video = new Class({
|
||||||
*/
|
*/
|
||||||
play: function (loop, playbackRate)
|
play: function (loop, playbackRate)
|
||||||
{
|
{
|
||||||
if (this._pendingChangeSource || (this.touchLocked && this.playWhenUnlocked) || this.isPlaying())
|
if ((this.touchLocked && this.playWhenUnlocked) || this.isPlaying())
|
||||||
{
|
{
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
@ -336,6 +323,37 @@ var Video = new Class({
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new Video element from the given URL.
|
||||||
|
*
|
||||||
|
* @method Phaser.Video#playURL
|
||||||
|
* @param {string} url - The URL of the video.
|
||||||
|
* @param {boolean} [autoplay=false] - Automatically start the video?
|
||||||
|
* @return {Phaser.Video} This Video object for method chaining.
|
||||||
|
*/
|
||||||
|
playURL: function (url, loop, playbackRate)
|
||||||
|
{
|
||||||
|
// this.video = document.createElement('video');
|
||||||
|
// this.video.controls = false;
|
||||||
|
|
||||||
|
// if (autoplay)
|
||||||
|
// {
|
||||||
|
// this.video.setAttribute('autoplay', 'autoplay');
|
||||||
|
// }
|
||||||
|
|
||||||
|
// this.video.src = url;
|
||||||
|
|
||||||
|
// this.video.canplay = true;
|
||||||
|
|
||||||
|
// this.video.load();
|
||||||
|
|
||||||
|
// this.retry = this.retryLimit;
|
||||||
|
|
||||||
|
// this._retryID = window.setTimeout(this.checkVideoProgress.bind(this), this.retryInterval);
|
||||||
|
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
playSuccessHandler: function ()
|
playSuccessHandler: function ()
|
||||||
{
|
{
|
||||||
console.log('playSuccessHandler');
|
console.log('playSuccessHandler');
|
||||||
|
@ -346,6 +364,7 @@ var Video = new Class({
|
||||||
playErrorHandler: function (error)
|
playErrorHandler: function (error)
|
||||||
{
|
{
|
||||||
console.log('playErrorHandler');
|
console.log('playErrorHandler');
|
||||||
|
console.log(error);
|
||||||
|
|
||||||
this.scene.sys.input.once('pointerdown', this.unlockHandler, this);
|
this.scene.sys.input.once('pointerdown', this.unlockHandler, this);
|
||||||
|
|
||||||
|
@ -508,39 +527,6 @@ var Video = new Class({
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a new Video element from the given URL.
|
|
||||||
*
|
|
||||||
* @method Phaser.Video#createVideoFromURL
|
|
||||||
* @param {string} url - The URL of the video.
|
|
||||||
* @param {boolean} [autoplay=false] - Automatically start the video?
|
|
||||||
* @return {Phaser.Video} This Video object for method chaining.
|
|
||||||
*/
|
|
||||||
createVideoFromURL: function (url, autoplay)
|
|
||||||
{
|
|
||||||
if (autoplay === undefined) { autoplay = false; }
|
|
||||||
|
|
||||||
this.video = document.createElement('video');
|
|
||||||
this.video.controls = false;
|
|
||||||
|
|
||||||
if (autoplay)
|
|
||||||
{
|
|
||||||
this.video.setAttribute('autoplay', 'autoplay');
|
|
||||||
}
|
|
||||||
|
|
||||||
this.video.src = url;
|
|
||||||
|
|
||||||
this.video.canplay = true;
|
|
||||||
|
|
||||||
this.video.load();
|
|
||||||
|
|
||||||
this.retry = this.retryLimit;
|
|
||||||
|
|
||||||
this._retryID = window.setTimeout(this.checkVideoProgress.bind(this), this.retryInterval);
|
|
||||||
|
|
||||||
return this;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Internal callback that monitors the download progress of a video after changing its source.
|
* Internal callback that monitors the download progress of a video after changing its source.
|
||||||
*
|
*
|
||||||
|
@ -578,7 +564,7 @@ var Video = new Class({
|
||||||
* @method Phaser.Video#updateTexture
|
* @method Phaser.Video#updateTexture
|
||||||
* @param {object} [event] - The event which triggered the texture update.
|
* @param {object} [event] - The event which triggered the texture update.
|
||||||
*/
|
*/
|
||||||
updateTexture: function (event)
|
updateTexture: function ()
|
||||||
{
|
{
|
||||||
var video = this.video;
|
var video = this.video;
|
||||||
|
|
||||||
|
@ -902,54 +888,6 @@ var Video = new Class({
|
||||||
return this.videoTexture;
|
return this.videoTexture;
|
||||||
},
|
},
|
||||||
|
|
||||||
/**
|
|
||||||
* Grabs the current frame from the Video or Video Stream and renders it to the Video.snapshot BitmapData.
|
|
||||||
*
|
|
||||||
* You can optionally set if the BitmapData should be cleared or not, the alpha and the blend mode of the draw.
|
|
||||||
*
|
|
||||||
* If you need more advanced control over the grabbing them call `Video.snapshot.copy` directly with the same parameters as BitmapData.copy.
|
|
||||||
*
|
|
||||||
* @method Phaser.Video#grab
|
|
||||||
* @param {boolean} [clear=false] - Should the BitmapData be cleared before the Video is grabbed? Unless you are using alpha or a blend mode you can usually leave this set to false.
|
|
||||||
* @param {number} [alpha=1] - The alpha that will be set on the video before drawing. A value between 0 (fully transparent) and 1, opaque.
|
|
||||||
* @param {string} [blendMode=null] - The composite blend mode that will be used when drawing. The default is no blend mode at all. This is a Canvas globalCompositeOperation value such as 'lighter' or 'xor'.
|
|
||||||
* @return {Phaser.BitmapData} A reference to the Video.snapshot BitmapData object for further method chaining.
|
|
||||||
*/
|
|
||||||
grab: function (clear, alpha, blendMode)
|
|
||||||
{
|
|
||||||
if (clear === undefined) { clear = false; }
|
|
||||||
if (alpha === undefined) { alpha = 1; }
|
|
||||||
if (blendMode === undefined) { blendMode = null; }
|
|
||||||
|
|
||||||
var source = this.videoTextureSource;
|
|
||||||
var width = (source) ? source.width : 128;
|
|
||||||
var height = (source) ? source.height : 128;
|
|
||||||
|
|
||||||
if (!this.snapshot)
|
|
||||||
{
|
|
||||||
this.snapshot = this.scene.sys.textures.createCanvas(UUID(), width, height);
|
|
||||||
}
|
|
||||||
else if (this.snapshot.width !== width || this.snapshot.height !== height)
|
|
||||||
{
|
|
||||||
this.snapshot.setSize(width, height);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (clear)
|
|
||||||
{
|
|
||||||
this.snapshot.clear();
|
|
||||||
}
|
|
||||||
|
|
||||||
if (source)
|
|
||||||
{
|
|
||||||
// Set globalAlpha
|
|
||||||
// Set blendMode
|
|
||||||
|
|
||||||
this.snapshot.draw(0, 0, source.image);
|
|
||||||
}
|
|
||||||
|
|
||||||
return this.snapshot;
|
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes the Video element from the DOM by calling parentNode.removeChild on itself.
|
* Removes the Video element from the DOM by calling parentNode.removeChild on itself.
|
||||||
* Also removes the autoplay and src attributes and nulls the reference.
|
* Also removes the autoplay and src attributes and nulls the reference.
|
||||||
|
@ -958,23 +896,25 @@ var Video = new Class({
|
||||||
*/
|
*/
|
||||||
removeVideoElement: function ()
|
removeVideoElement: function ()
|
||||||
{
|
{
|
||||||
if (!this.video)
|
var video = this.video;
|
||||||
|
|
||||||
|
if (!video)
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.video.parentNode)
|
if (video.parentNode)
|
||||||
{
|
{
|
||||||
this.video.parentNode.removeChild(this.video);
|
video.parentNode.removeChild(video);
|
||||||
}
|
}
|
||||||
|
|
||||||
while (this.video.hasChildNodes())
|
while (video.hasChildNodes())
|
||||||
{
|
{
|
||||||
this.video.removeChild(this.video.firstChild);
|
video.removeChild(video.firstChild);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.video.removeAttribute('autoplay');
|
video.removeAttribute('autoplay');
|
||||||
this.video.removeAttribute('src');
|
video.removeAttribute('src');
|
||||||
|
|
||||||
this.video = null;
|
this.video = null;
|
||||||
},
|
},
|
||||||
|
@ -993,8 +933,8 @@ var Video = new Class({
|
||||||
|
|
||||||
var game = this.scene.sys.game.events;
|
var game = this.scene.sys.game.events;
|
||||||
|
|
||||||
game.off(GameEvents.PAUSE, this.pause, this);
|
game.off(GameEvents.PAUSE, this.globalPause, this);
|
||||||
game.off(GameEvents.RESUME, this.resume, this);
|
game.off(GameEvents.RESUME, this.globalResume, this);
|
||||||
|
|
||||||
var sound = this.scene.sys.sound;
|
var sound = this.scene.sys.sound;
|
||||||
|
|
||||||
|
@ -1007,20 +947,6 @@ var Video = new Class({
|
||||||
{
|
{
|
||||||
window.clearTimeout(this._retryID);
|
window.clearTimeout(this._retryID);
|
||||||
}
|
}
|
||||||
},
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @name Phaser.Video#playing
|
|
||||||
* @property {boolean} playing - True if the video is currently playing (and not paused or ended), otherwise false.
|
|
||||||
* @readOnly
|
|
||||||
*/
|
|
||||||
playing: {
|
|
||||||
|
|
||||||
get: function ()
|
|
||||||
{
|
|
||||||
return (this.video) ? !(this.video.paused || this.video.ended) : false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -185,6 +185,7 @@ var VideoFile = new Class({
|
||||||
if (noAudio)
|
if (noAudio)
|
||||||
{
|
{
|
||||||
video.muted = true;
|
video.muted = true;
|
||||||
|
video.defaultMuted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
video.setAttribute('autoplay', 'autoplay');
|
video.setAttribute('autoplay', 'autoplay');
|
||||||
|
@ -214,8 +215,6 @@ var VideoFile = new Class({
|
||||||
|
|
||||||
video.src = GetURL(this, this.loader.baseURL);
|
video.src = GetURL(this, this.loader.baseURL);
|
||||||
|
|
||||||
video.canplay = true;
|
|
||||||
|
|
||||||
video.load();
|
video.load();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -242,7 +241,7 @@ VideoFile.create = function (loader, key, urls, loadEvent, asBlob, noAudio, xhrS
|
||||||
|
|
||||||
if (urlConfig)
|
if (urlConfig)
|
||||||
{
|
{
|
||||||
return new VideoFile(loader, key, urlConfig, loadEvent, asBlob, xhrSettings);
|
return new VideoFile(loader, key, urlConfig, loadEvent, asBlob, noAudio, xhrSettings);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue