LogoPixi’VN

VideoSprite

The VideoSprite component extends the ImageSprite component, so you can use all the methods and properties of ImageSprite. It is used to display a single video on the canvas.

To initialize this component, you must pass the following parameters:

  • options (Optional): The options for the component.
  • videoUrl (Optional): The URL or path. If you have initialized the asset matrix, you can use the alias of the texture.
import { canvas, VideoSprite } from "@drincs/pixi-vn"

let video = new VideoSprite({
    anchor: { x: 0.5, y: 0.5 },
    x: 100,
    y: 100,
}, 'https://pixijs.com/assets/video.mp4')

await video.load()
canvas.add("my_video", video)

Compared to the Sprite component, ImageSprite adds the following features:

  • loop: Indicates if the video should loop after it finishes.
  • paused: Indicates if the video is paused.
  • pause(): Pause the video.
  • play(): Play the video.
  • currentTime: The current time of the video.
  • restart(): Restart the video.

Show

The simplest way to show a video on the canvas is to use the showVideo function. This function combines load and canvas.add.

This function returns a VideoSprite that you can use to manipulate the component. This function has the following parameters:

  • alias: The alias to identify the component.
  • videoUrl (Optional): The URL or path. If you have initialized the asset matrix, you can use the alias of the texture. If you don't provide the URL, then the alias is used as the URL.
  • options (Optional): The options for the component.
import { newLabel, showVideo } from "@drincs/pixi-vn";

export const startLabel = newLabel("start_label", [
    async () => {
        let video1 = await showVideo("video"); 
        let video2 = await showVideo("video2", "video", { 
            xAlign: 0.5, 
        }); 
        let video3 = await showVideo("video3", "https://pixijs.com/assets/video.mp4", { 
            xAlign: 1, 
        }); 
    },
]);

Add

To add an video to the canvas, use the addVideo function. This function only adds the component to the canvas; it does not show it or load its texture. It uses canvas.add to add the component to the canvas.

This function returns a VideoSprite that you can use to manipulate the component. This function has the following parameters:

  • alias: The alias to identify the component.
  • videoUrl (Optional): The URL or path. If you have initialized the asset matrix, you can use the alias of the texture. If you don't provide the URL, then the alias is used as the URL.
  • options (Optional): The options for the component.
import { addVideo, canvas, VideoSprite, newLabel } from "@drincs/pixi-vn";

export const startLabel = newLabel("start_label", [
    () => {
        let video1 = addVideo("video"); 
        let video2 = addVideo("video2", "video", { 
            xAlign: 0.5, 
        }); 
        let video3 = addVideo("video3", "https://pixijs.com/assets/video.mp4", { 
            xAlign: 1, 
        }); 
    },
    async () => {
        let video1 = canvas.find<VideoSprite>("video");
        let video2 = canvas.find<VideoSprite>("video2");
        let video3 = canvas.find<VideoSprite>("video3");
        // Load the textures
        video1 && (await video1.load());
        video2 && (await video2.load());
        video3 && (await video3.load());
    },
]);

Remove

As with other canvas components, you can remove this component using the canvas.remove function.

Play and pause

Use play() and pause() methods, or set the paused property.

import { canvas, narration, newLabel, showVideo, VideoSprite } from "@drincs/pixi-vn";

export const startLabel = newLabel("start_label", [
    async () => {
        narration.dialogue = "add video";
        await showVideo("video");
    },
    async () => {
        narration.dialogue = "pause video";
        let video = canvas.find<VideoSprite>("video");
        if (video) {
            video.pause(); 
            // or: video.paused = true
        }
    },
    async () => {
        narration.dialogue = "resume video";
        let video = canvas.find<VideoSprite>("video");
        if (video) {
            video.play(); 
            // or: video.paused = false
        }
    },
]);

Looping

Set the loop property to make the video repeat.

import { newLabel, showVideo } from "@drincs/pixi-vn";

export const startLabel = newLabel("start_label", [
    async () => {
        let video = await showVideo("video");
        video.loop = true; 
    },
]);

Restart

Use the restart() method to restart playback.

import { canvas, narration, newLabel, showVideo, VideoSprite } from "@drincs/pixi-vn";

export const startLabel = newLabel("start_label", [
    async () => {
        narration.dialogue = "add video";
        await showVideo("video");
    },
    async () => {
        narration.dialogue = "restart video";
        let video = canvas.find<VideoSprite>("video");
        if (video) {
            video.restart(); 
        }
    },
]);