मुख्य सामग्री पर जाएँ
CrossFly 100% ओपन सोर्सGitHub पर फ़ॉलो करें
CrossFlyCrossFly
शुरू करें

यह पृष्ठ पुर्तगाली से मशीन-अनुवादित है और इसमें त्रुटियाँ हो सकती हैं। पुर्तगाली संस्करण प्रामाणिक है।

मान एनिमेशन

तीनों एनिमेटर समय के साथ एक संख्या को इंटरपोलेट करते हैं। वे कुछ भी नहीं बनाते: onUpdate में आप getValue() पढ़ते हैं और उसे जहाँ चाहें लागू करते हैं (alpha, स्थिति, रंग…)। चूँकि रेंडर माँग पर होता है, कॉलबैक में Component.repaint() कॉल करें।

तुलना

क्लास परास (range) वक्र दोहराता है? किसके लिए उपयोग करें
AlphaAnimation [0,1] ease-in-out घन (cubic) नहीं (onComplete है) फ़ेड, अपारदर्शिता, हाइलाइट
PositionAnimation मुक्त रैखिक नहीं (onComplete है) पिक्सेल में स्थानांतरण, स्लाइड
LoopAnimation [0,1] रैखिक या eased हाँ, अनंत पल्स, ग्लो, लोडिंग

पूरा उदाहरण (कॉपी करें, पेस्ट करें और चलाएँ)

package com.exemplo;

import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.animation.*;   // AlphaAnimation, PositionAnimation, LoopAnimation
import dev.crossfly.util.*;           // Debug

/** चलाने योग्य मुख्य स्क्रीन। launcher (classname) की ओर संकेत करें और चलाएँ: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
   @Override
   public void onShow() throws Exception
   {
      super.onShow();
      setLayout(new VerticalLayout());

      // AlphaAnimation — एक लेबल का fade-in (0.3s में 0→1)
      Label card = new Label("Olá");
      add(LAY_AUTO, card);
      AlphaAnimation fade = new AlphaAnimation(0f, 1f, 0.3f);
      fade.onUpdate(() -> { card.alpha(fade.getValue()); Component.repaint(); })
          .onComplete(() -> Debug.log("fade concluído"))
          .start();

      // PositionAnimation — दाईं ओर से आते हुए पैनल को स्लाइड करता है (पिक्सेल में, मुक्त)
      Label painel = new Label("Painel");
      add(LAY_AUTO, painel);
      int y0 = painel.y, w = painel.width, h = painel.height;
      PositionAnimation slide = new PositionAnimation(Screen.width, 0, 0.4f);
      slide.onUpdate(() -> { painel.setBounds((int) slide.getValue(), y0, w, h); Component.repaint(); })
           .start();

      // LoopAnimation — अपारदर्शिता का सतत स्पंदन (1s चक्र, सुगम, अनंत)
      Label ponto = new Label("●");
      add(LAY_AUTO, ponto);
      LoopAnimation pulse = new LoopAnimation(1.0f, 60f, true);
      pulse.onUpdate(() -> { ponto.alpha(0.4f + 0.6f * pulse.getValue()); Component.repaint(); })
           .start();
   }
}

नीचे दिए गए स्निपेट सिर्फ़ मूल भाग दिखाते हैं (जो onShow() के अंदर जाता है)। चलाने के लिए, इन्हें ऊपर वाले MainWindow कंकाल में रखें।

AlphaAnimation — fade-in

Label card = new Label("Olá");
AlphaAnimation fade = new AlphaAnimation(0f, 1f, 0.3f);   // 0.3s में 0→1
fade.onUpdate(() -> { card.alpha(fade.getValue()); Component.repaint(); })
    .onComplete(() -> Debug.log("fade concluído"))
    .start();

कंस्ट्रक्टर: AlphaAnimation(start, end, duration) (60 FPS) या (start, end, duration, fps)।

PositionAnimation — किसी पैनल को स्लाइड करना (पिक्सेल में)

int y0 = painel.y, w = painel.width, h = painel.height;
PositionAnimation slide = new PositionAnimation(Screen.width, 0, 0.4f);  // दाईं ओर से आता है
slide.onUpdate(() -> { painel.setBounds((int) slide.getValue(), y0, w, h); Component.repaint(); })
     .start();

यह [0,1] तक सीमित नहीं है और रैखिक है — निर्देशांक के लिए आदर्श।

LoopAnimation — निरंतर पल्स

LoopAnimation pulse = new LoopAnimation(1.0f, 60f, true);   // 1s चक्र, 60 FPS, सुगम
pulse.onUpdate(() -> { float v = 0.4f + 0.6f * pulse.getValue(); ponto.alpha(v); Component.repaint(); })
     .start();
// pulse.stop();   // स्क्रीन से निकलते समय रोकें

कंस्ट्रक्टर: LoopAnimation(duration) (रैखिक, 60 FPS) या (duration, fps, easeInOut)। इसमें onComplete नहीं है (stop() तक हमेशा चलता है)।

सामान्य नियंत्रण

start() · stop() (Alpha/Position में onComplete ट्रिगर करता है) · cancel() (ट्रिगर नहीं करता) · isRunning() · getValue()।

सर्वोत्तम अभ्यास

  • onUpdate में हमेशा Component.repaint() — रेंडर माँग पर होता है।
  • स्क्रीन से बाहर जाते समय (onRemove() में) लूप रोकें (stop()), नहीं तो Timer चलता रहेगा।
  • बाद में stop()/cancel() कर पाने के लिए एनिमेशन को किसी वेरिएबल/फ़ील्ड में रखें।

आम गलतियाँ

  • PositionAnimation को [0,1] परास की अपेक्षा में उपयोग करना — यह मुक्त है; क्लैंप AlphaAnimation करता है।
  • repaint() भूल जाना और “एनिमेशन दिखता नहीं”।
  • setAlpha(...) कॉल करना (पुराने Javadoc से) — वास्तविक विधि alpha(float) है।

यह भी देखें

क्या यह पृष्ठ उपयोगी था?