flag-cloth

Inicio rápido

Renderiza una bandera arrastrable y sujeta por la izquierda con TypeScript o React.

TypeScript sin framework

Asigna un tamaño real al contenedor y pásalo a createFlagCloth.

<div id="flag" style="width: 720px; height: 480px"></div>
import { createFlagCloth } from 'flag-cloth';

const flag = createFlagCloth({
  container: document.querySelector<HTMLElement>('#flag')!,
  texture: '/my-flag.webp',
  width: 3,
  height: 2,
  segments: { x: 32, y: 20 },
  attachment: 'left',
  wind: {
    direction: [1, 0.08, 0.18],
    strength: 7,
    turbulence: 0.35,
  },
  interaction: { enabled: true, dragRadius: 1 },
});

await flag.ready;

La instancia comienza automáticamente. Utiliza pause(), resume(), reset(), setWind(), setTexture() o destroy() cuando lo necesites.

Los valores width y height describen la tela en unidades de simulación. El canvas usa el tamaño CSS de #flag. Consulta Sujeciones y puntos fijos para fijar partes de un borde o coordenadas concretas, y React para conocer canvasWidth y canvasHeight.

React

Importa el punto de entrada de React. canvasWidth y canvasHeight definen el tamaño del contenedor; width y height siguen describiendo la tela simulada.

import { FlagCloth } from 'flag-cloth/react';

export function Banner() {
  return (
    <FlagCloth
      texture="/my-flag.webp"
      canvasWidth="100%"
      canvasHeight={480}
      width={3}
      height={2}
      segments={{ x: 32, y: 20 }}
      attachment="left"
      wind={{
        direction: [1, 0.08, 0.18],
        strength: 7,
        turbulence: 0.35,
      }}
      interaction={{ enabled: true, dragRadius: 1 }}
    />
  );
}

El componente crea la instancia principal al montarse, actualiza las opciones mutables cuando cambian las props y destruye la instancia al desmontarse. Usa una ref cuando necesites métodos como reset() o setTexture().

Limpieza en la API vanilla

Llama siempre a destroy() cuando elimines la vista propietaria. Este método cancela la animación, desconecta los observadores, elimina los listeners del puntero y de visibilidad, y libera los recursos de WebGL.

En esta página