LogoPixi’VN
Canvas (WebGL/WebGPU)ComposantsComposants intégrés

Vidéo (`VideoSprite`)

Comment afficher, ajouter, contrôler et gérer des ressources vidéo sur le canevas à l'aide du composant `VideoSprite` (`play`, `pause`, `loop`, `restart`, et les helpers de cycle de vie `showVideo` / `addVideo`).

Le composant VideoSprite étend le composant ImageSprite, vous pouvez donc utiliser toutes les méthodes et propriétés de ImageSprite. Il est utilisé pour afficher une seule vidéo sur le canevas.

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

let video = new VideoSprite(
    {
        anchor: { x: 0.5, y: 0.5 },
        x: 100,
        y: 100,
    },
    "film",
);

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

Par rapport au composant ImageSprite, VideoSprite ajoute les fonctionnalités suivantes :

  • loop : Indique si la vidéo doit boucler après sa fin.
  • paused : Indique si la vidéo est en pause.
  • pause : Méthode pour mettre la vidéo en pause.
  • play : Méthode pour lire la vidéo.
  • currentTime : La position de lecture actuelle de la vidéo.
  • restart : Méthode pour redémarrer la vidéo depuis le début.

Afficher

La façon la plus simple d'afficher une vidéo sur le canevas est d'utiliser la fonction showVideo. Cette fonction combine load et canvas.add.

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

export const startLabel = newLabel("start", [
    async () => {
        // Show the videos on the canvas
        let video1 = await showVideo("video");
        // Show the video with a different alias and position
        let video2 = await showVideo("video2", "video", {
            xAlign: 0.5,
        });
    },
]);

Ajouter

Pour ajouter une vidéo au canevas, utilisez la fonction addVideo. Cette fonction se contente d'ajouter le composant au canvas ; elle ne l'affiche pas et ne charge pas sa texture. Elle utilise canvas.add pour ajouter le composant au canvas.

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

export const startLabel = newLabel("start", [
    () => {
        // Add the videos to the canvas
        let video1 = addVideo("video");
        // Add the video with a different alias and position
        let video2 = addVideo("video2", "video", {
            xAlign: 0.5,
        });
    },
    async () => {
        let video1 = canvas.find<VideoSprite>("video");
        let video2 = canvas.find<VideoSprite>("video2");
        // Load the textures
        video1 && (await video1.load());
        video2 && (await video2.load());
    },
]);

Supprimer

Comme pour les autres composants du canvas, vous pouvez supprimer ce composant en utilisant la fonction canvas.remove.

Lecture et pause

Utilisez les méthodes play et pause, ou définissez la propriété paused.

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

export const startLabel = newLabel("start", [
    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
        }
    },
]);

Boucle

Définissez la propriété loop pour faire répéter la vidéo.

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

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

Redémarrer

Utilisez la méthode restart pour relancer la lecture depuis le début.

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

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

Sur cette page