| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- /**
- * Provides access to the Webcam (if available)
- * @class Phaser.Plugin.Webcam
- */
- Phaser.Plugin.Webcam = function (game, parent) {
- Phaser.Plugin.call(this, game, parent);
- if (!game.device.getUserMedia)
- {
- return false;
- }
- navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia;
- this.context = null;
- this.stream = null;
- this.video = document.createElement('video');
- this.video.autoplay = true;
- this.onConnect = new Phaser.Signal();
- this.onError = new Phaser.Signal();
- };
- Phaser.Plugin.Webcam.prototype = Object.create(Phaser.Plugin.prototype);
- Phaser.Plugin.Webcam.prototype.constructor = Phaser.Plugin.Webcam;
- Phaser.Plugin.Webcam.prototype.start = function (width, height, context) {
- // console.log('Webcam start', width, height);
- this.context = context;
- if (!this.stream)
- {
- navigator.getUserMedia( { video: { mandatory: { minWidth: width, minHeight: height } } }, this.connectCallback.bind(this), this.errorCallback.bind(this));
- }
- };
- Phaser.Plugin.Webcam.prototype.stop = function () {
- if (this.stream)
- {
- this.stream.stop();
- this.stream = null;
- }
- };
- Phaser.Plugin.Webcam.prototype.connectCallback = function (stream) {
- this.stream = stream;
- this.video.src = window.URL.createObjectURL(this.stream);
- this.onConnect.dispatch(this.video);
- };
- Phaser.Plugin.Webcam.prototype.errorCallback = function (event) {
- this.onError.dispatch(event);
- };
- Phaser.Plugin.Webcam.prototype.grab = function (context, x, y) {
- if (this.stream)
- {
- context.drawImage(this.video, x, y);
- }
- };
- Phaser.Plugin.Webcam.prototype.update = function () {
- if (this.stream)
- {
- this.context.drawImage(this.video, 0, 0);
- }
- };
- /**
- * @name Phaser.Plugin.Webcam#active
- * @property {boolean} active - Is this Webcam plugin capturing a video stream or not?
- * @readonly
- */
- Object.defineProperty(Phaser.Plugin.Webcam.prototype, "active", {
- get: function() {
- return (this.stream);
- }
- });
|