@crispcode/shimmer 5.0.3 → 5.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -26,6 +26,7 @@ In order to support older versions of browsers, you can use [polyfill.io](https:
26
26
  | Element | `import { Element } from 'shimmer'` | The base class for all Shimmer objects |
27
27
  | Shimmer | `import { Shimmer } from 'shimmer'` | The Shimmer component class, check Modux/Component for more information |
28
28
  | Tween | `import { Tween } from 'shimmer'` | A class used to create animation tweens in Element or Shimmer |
29
+ | Video | `import { Video } from 'shimmer'` | A Video class which extends the Element class |
29
30
  | Sprite | `import { Sprite } from 'shimmer'` | PIXI.JS Sprite class |
30
31
  | AnimatedSprite | `import { AnimatedSprite } from 'shimmer'` | PIXI.JS AnimatedSprite class |
31
32
  | Text | `import { Text } from 'shimmer'` | PIXI.JS Text class |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crispcode/shimmer",
3
- "version": "5.0.3",
3
+ "version": "5.1.0",
4
4
  "description": "A PIXI.JS wrapper plugin for MODUX",
5
5
  "author": "Crisp Code ( contact@crispcode.ro )",
6
6
  "access": "public",
@@ -49,7 +49,7 @@
49
49
  "@pixi/utils": "^6.5.1"
50
50
  },
51
51
  "peerDependencies": {
52
- "@crispcode/modux": "^5.1.1"
52
+ "@crispcode/modux": "^5.1.5"
53
53
  },
54
54
  "devDependencies": {
55
55
  "esdoc": "^1.1.0",
package/scripts/index.js CHANGED
@@ -5,6 +5,7 @@ import { Shimmer } from './shimmer.js'
5
5
  import { Button } from './button.js'
6
6
  import { Element } from './element.js'
7
7
  import { Tween } from './tween.js'
8
+ import { Video } from './video.js'
8
9
 
9
10
  import { Sprite } from '@pixi/sprite'
10
11
  import { AnimatedSprite } from '@pixi/sprite-animated'
@@ -18,6 +19,7 @@ export {
18
19
  Button,
19
20
  Element,
20
21
  Tween,
22
+ Video,
21
23
 
22
24
  Sprite,
23
25
  AnimatedSprite,
@@ -2,7 +2,7 @@
2
2
 
3
3
  'use strict'
4
4
 
5
- import { Component, extend, loop, logger } from '@crispcode/modux'
5
+ import { Component, extend, logger } from '@crispcode/modux'
6
6
 
7
7
  import { autoDetectRenderer, BatchRenderer } from '@pixi/core'
8
8
  import { Assets } from '@pixi/assets'
@@ -0,0 +1,75 @@
1
+ /* globals document */
2
+
3
+ 'use strict'
4
+
5
+ import { VideoResource, Texture } from '@pixi/core'
6
+ import { Sprite } from '@pixi/sprite'
7
+
8
+ import { Element } from './element.js'
9
+
10
+ /**
11
+ * This class is used to create video elements for shimmer
12
+ */
13
+ export class Video extends Element {
14
+ /**
15
+ * Creates an instance of Video
16
+ */
17
+ constructor ( source, options = {} ) {
18
+ super()
19
+
20
+ this.__source = document.createElement( 'video' )
21
+ this.__source.playsInline = true
22
+ this.__source.preload = 'auto'
23
+ this.__source.autoplay = false
24
+ this.__source.playbackRate = ( options.playbackRate !== undefined ) ? options.playbackRate : 1
25
+ this.__source.muted = ( options.muted !== undefined ) ? options.muted : false
26
+
27
+ this.__source.loop = ( options.loop !== undefined ) ? options.loop : true
28
+ this.__source.src = source
29
+
30
+ this.__resource = new VideoResource( this.__source, {
31
+ autoPlay: ( options.autoPlay !== undefined ) ? options.autoPlay : false,
32
+ autoLoad: ( options.autoLoad !== undefined ) ? options.autoLoad : true,
33
+ updateFPS: ( options.updateFPS !== undefined ) ? options.updateFPS : 0,
34
+ crossorigin: ( options.crossorigin !== undefined ) ? options.crossorigin : true
35
+ } )
36
+
37
+ let texture = Texture.from( this.__resource )
38
+ let sprite = new Sprite( texture )
39
+
40
+ this.addChild( sprite )
41
+ }
42
+
43
+ /**
44
+ * Loads the video file
45
+ */
46
+ load () {
47
+ return this.__resource.load()
48
+ }
49
+
50
+ /**
51
+ * Plays the video at a specific rate, or default if nothing is specified
52
+ * @param {Number} playbackRate
53
+ */
54
+ play ( playbackRate ) {
55
+ if ( playbackRate ) {
56
+ this.__source.playbackRate = playbackRate
57
+ }
58
+ this.__source.play()
59
+ }
60
+
61
+ /**
62
+ * Pause the video
63
+ */
64
+ pause () {
65
+ this.__source.pause()
66
+ }
67
+
68
+ /**
69
+ * Mutes or unmutes the video
70
+ * @param {boolean} muted
71
+ */
72
+ muted ( muted ) {
73
+ this.__source.muted = !!muted
74
+ }
75
+ }
Binary file
@@ -2,7 +2,7 @@
2
2
 
3
3
  import { approx, rnd, loop } from '@crispcode/modux'
4
4
 
5
- import { Shimmer } from './../../../../scripts'
5
+ import { Shimmer, Video } from './../../../../scripts'
6
6
 
7
7
  import { ButtonMain } from './buttonMain.js'
8
8
  import { Moon } from './moon.js'
@@ -37,6 +37,9 @@ export class ShimmerComponent extends Shimmer {
37
37
  'image2': '/image2.png'
38
38
  } )
39
39
  .then( ( resources ) => {
40
+ this.__background = new Video( '/movie.mp4', { loop: false, autoPlay: true, muted: true } )
41
+ this.stage.addElementChild( 'background', this.__background )
42
+
40
43
  this.__button = new ButtonMain( resources[ 'image1' ] )
41
44
  this.stage.addElementChild( 'button', this.__button )
42
45