# ๐ŸŽฌ MP4 VIDEO V PHASER.JS - GUIDE **Datum:** 12. December 2025 --- ## ๐ŸŽฏ **DA, MP4 VIDEO LAHKO UPORABIล !** Phaser.js podpira video playback. Lahko uporabiลก MP4 za: - Background animacije - Cutscene - Intro/Outro - UI animacije - Trailer playback --- ## ๐Ÿ“‹ **METODA 1: VIDEO SPRITE** ### **1. Preload Video:** ```javascript // V PreloadScene.js ali GameScene.js preload(): this.load.video('intro_video', 'assets/videos/intro.mp4'); this.load.video('background_anim', 'assets/videos/background.mp4'); ``` ### **2. Create Video Sprite:** ```javascript // V create(): const video = this.add.video(400, 300, 'intro_video'); video.setOrigin(0.5); video.setDepth(0); // Background video.play(true); // true = loop ``` ### **3. Control Video:** ```javascript // Play video.play(); // Pause video.pause(); // Stop video.stop(); // Loop video.setLoop(true); // Volume video.setVolume(0.5); // Mute video.setMute(true); // Events video.on('complete', () => { console.log('Video finished!'); }); ``` --- ## ๐Ÿ“‹ **METODA 2: FULLSCREEN VIDEO (CUTSCENE)** ```javascript class CutsceneScene extends Phaser.Scene { constructor() { super({ key: 'CutsceneScene' }); } preload() { this.load.video('cutscene', 'assets/videos/intro.mp4'); } create() { const width = this.cameras.main.width; const height = this.cameras.main.height; // Fullscreen video const video = this.add.video(width / 2, height / 2, 'cutscene'); video.setOrigin(0.5); video.setDisplaySize(width, height); // Play video.play(); // Skip on click this.input.on('pointerdown', () => { video.stop(); this.scene.start('GameScene'); }); // Auto-continue when done video.on('complete', () => { this.scene.start('GameScene'); }); } } ``` --- ## ๐Ÿ“‹ **METODA 3: BACKGROUND VIDEO LOOP** ```javascript // Animated background (looping video) createVideoBackground() { const video = this.add.video(0, 0, 'background_anim'); video.setOrigin(0, 0); video.setDisplaySize(this.cameras.main.width, this.cameras.main.height); video.setDepth(-1000); // Behind everything video.setAlpha(0.3); // Semi-transparent video.setLoop(true); video.play(); // Parallax effect video.setScrollFactor(0.5); } ``` --- ## ๐Ÿ“‹ **METODA 4: UI VIDEO ELEMENT** ```javascript // Small video in UI (e.g., tutorial) createTutorialVideo() { const video = this.add.video(100, 100, 'tutorial_video'); video.setOrigin(0); video.setDisplaySize(200, 150); video.setScrollFactor(0); // Fixed to camera video.setDepth(1000); // Above UI video.play(); } ``` --- ## ๐Ÿ“‹ **METODA 5: VIDEO TEXTURE (ADVANCED)** ```javascript // Use video as texture for sprite preload() { this.load.video('anim', 'assets/videos/animation.mp4'); } create() { const video = this.add.video(0, 0, 'anim'); video.play(); // Use video as texture const sprite = this.add.sprite(400, 300, video); sprite.setScale(2); } ``` --- ## ๐ŸŽฌ **PRIMER: INTRO CUTSCENE** ```javascript // IntroScene.js class IntroScene extends Phaser.Scene { constructor() { super({ key: 'IntroScene' }); } preload() { // Load intro video this.load.video('intro', 'assets/videos/intro.mp4'); // Loading text this.add.text(400, 300, 'Loading...', { fontSize: '32px', color: '#ffffff' }).setOrigin(0.5); } create() { // Fullscreen video const video = this.add.video( this.cameras.main.centerX, this.cameras.main.centerY, 'intro' ); video.setOrigin(0.5); video.setDisplaySize( this.cameras.main.width, this.cameras.main.height ); // Play video.play(); // Skip text const skipText = this.add.text( this.cameras.main.width - 20, this.cameras.main.height - 20, 'Click to skip', { fontSize: '16px', color: '#ffffff' } ); skipText.setOrigin(1, 1); // Skip on click this.input.on('pointerdown', () => { video.stop(); this.scene.start('GameScene'); }); // Auto-continue video.on('complete', () => { this.scene.start('GameScene'); }); } } // V game.js config: scene: [IntroScene, PreloadScene, GameScene, UIScene] ``` --- ## ๐Ÿ“ **FILE STRUCTURE:** ``` novafarma/ โ”œโ”€โ”€ assets/ โ”‚ โ””โ”€โ”€ videos/ โ”‚ โ”œโ”€โ”€ intro.mp4 โ”‚ โ”œโ”€โ”€ cutscene_boss.mp4 โ”‚ โ”œโ”€โ”€ background_loop.mp4 โ”‚ โ””โ”€โ”€ tutorial.mp4 โ”œโ”€โ”€ src/ โ”‚ โ””โ”€โ”€ scenes/ โ”‚ โ””โ”€โ”€ IntroScene.js โ””โ”€โ”€ index.html ``` --- ## โš ๏ธ **POMEMBNO:** **1. File Size:** - MP4 lahko postane velik (10-50 MB) - Kompresija: Use H.264 codec - Resolution: 720p ali 1080p **2. Performance:** - Video playback je resource-intensive - Ne uporabljaj preveฤ video hkrati - Mobile devices: Lower resolution **3. Browser Support:** - Chrome: โœ… Odliฤno - Firefox: โœ… Odliฤno - Safari: โœ… Potrebuje H.264 - Edge: โœ… Odliฤno **4. Electron:** - โœ… Deluje brez problema - Chromium engine podpira MP4 --- ## ๐ŸŽฏ **UPORABA V NOVAFARMA:** **Moลพnosti:** 1. **Intro Cutscene** - Farm arrival 2. **Boss Intro** - Dramatic entrance 3. **Background Animation** - Animated sky/clouds 4. **Tutorial Videos** - How to play 5. **Trailer Playback** - In-game trailer --- ## ๐Ÿ“ **QUICK START:** ```javascript // 1. Dodaj video file: // assets/videos/intro.mp4 // 2. Preload: this.load.video('intro', 'assets/videos/intro.mp4'); // 3. Play: const video = this.add.video(400, 300, 'intro'); video.play(); // 4. Done! ``` --- **Status:** โœ… **MP4 VIDEO JE PODPRT!** **Phaser.js ima built-in video support!** ๐ŸŽฌ ลฝelite, da dodam video support v NovaFarma? ๐ŸŽฎ