StartPage.tsx

Обзор

Компонент StartPage.tsx представляет собой стартовую страницу веб-приложения, реализованную с использованием React и TypeScript. Его основная задача — предоставить пользователю приветственный интерфейс с анимациями и интерактивными эффектами, а также обеспечить запуск игры через кнопку "Start Game". Компонент динамически загружает и инициализирует внешние библиотеки анимаций (GSAP и AOS), создает визуальные частицы и реализует плавные переходы и реакции на взаимодействия пользователя (наведение мыши, клик, движение мыши). Также предусмотрена кнопка входа через социальные сети с сопутствующими анимациями.


Подробное описание

Интерфейс StartPageProps

interface StartPageProps {
  onStartGame: () => void;
}

Компонент StartPage

const StartPage: React.FC<StartPageProps> = ({ onStartGame }) => { ... }

Основной React-функциональный компонент, отвечающий за визуализацию и логику стартовой страницы.

Внутренние переменные и ссылки


Жизненный цикл и загрузка библиотек

useEffect(() => {
  const loadScripts = async () => { ... };
  loadScripts();

  return () => {
    if (window.gsap) {
      window.gsap.killTweensOf('*');
    }
  };
}, []);

Функция initializeAnimations

const initializeAnimations = () => { ... };

Функция createParticles

const createParticles = () => { ... };

Функция setupInteractiveEffects

const setupInteractiveEffects = () => { ... };

Функция createRippleEffect

const createRippleEffect = (e: MouseEvent) => { ... };

Обработчик handleStartGameClick

const handleStartGameClick = () => { ... };

Обработчик handleSocialLogin

const handleSocialLogin = () => { ... };

JSX-разметка

Компонент рендерит следующие основные части:


Взаимодействие с другими частями системы


Важные детали реализации


Пример использования компонента

import React from 'react';
import StartPage from './StartPage';

const App = () => {
  const handleGameStart = () => {
    console.log('Игра запущена');
    // Здесь логика перехода на игровой экран
  };

  return <StartPage onStartGame={handleGameStart} />;
};

export default App;

Диаграмма структуры компонента

componentDiagram
    StartPage <|-- React.FC

    StartPage : +props.onStartGame()
    StartPage : -containerRef: HTMLDivElement
    StartPage : -logoRef: HTMLImageElement
    StartPage : -particlesRef: HTMLDivElement
    StartPage : +useEffect(loadScripts)
    StartPage : +initializeAnimations()
    StartPage : +createParticles()
    StartPage : +setupInteractiveEffects()
    StartPage : +createRippleEffect(event)
    StartPage : +handleStartGameClick()
    StartPage : +handleSocialLogin()

    StartPage --> GSAP[GSAP (Animation Library)]
    StartPage --> AOS[AOS (Animate On Scroll)]
    StartPage --> DOM[DOM Elements (logo, particles, buttons)]

Итог

StartPage.tsx — это высокоинтерактивный и анимированный стартовый экран приложения, сочетающий динамическую загрузку библиотек, сложные анимации и удобный пользовательский интерфейс. Он служит точкой входа пользователя в игру, обеспечивая приятный визуальный опыт и плавные переходы. Компонент легко расширяем и интегрируется с остальной частью приложения через callback onStartGame.