Alakzatanimációk alkalmazása prezentációkban JavaScript segítségével

Bevezetés

Az animációk vizuális hatások, amelyeket szövegekre, képekre, alakzatokra vagy diagramokra lehet alkalmazni. Életet lehelnek a prezentációkba vagy azok összetevőibe.

Miért használjunk animációkat a prezentációkban?

  • az információáramlás irányítása
  • fontos pontok kiemelése
  • növeli a közönség érdeklődését vagy részvételét
  • a tartalmat könnyebben olvashatóvá, elsajátíthatóvá vagy feldolgozhatóvá teszi
  • felhívja az olvasók vagy nézők figyelmét a prezentáció fontos részeire

A PowerPoint számos beállítást és eszközt kínál az animációkhoz és animációs hatásokhoz a beérkezés, kilépés, kiemelés és mozgáspályák kategóriákban.

Animációk az Aspose.Slides-ban

  • Az Aspose.Slides biztosítja az animációkkal való munkához szükséges osztályokat és típusokat a Aspose.Slides.Animation névtérben,
  • Az Aspose.Slides több mint 150 animációs hatást biztosít a EffectType felsorolásban. Ezek a hatások lényegében ugyanazok (vagy ekvivalensak), mint a PowerPointban használtak.

Animáció alkalmazása szövegdobozra

Az Aspose.Slides for Node.js via Java lehetővé teszi animáció alkalmazását egy alakzat szövegére.

  1. Hozzon létre egy példányt a Presentation osztályból.
  2. Szerezzen be egy dia hivatkozást az indexe alapján.
  3. Adjon hozzá egy rectangle AutoShape-t.
  4. Adjon hozzá szöveget a AutoShape.addTextFrame segítségével.
  5. Szerezze meg a fő hatássorozatot.
  6. Adjon animációs hatást a AutoShape-hez.
  7. Hívja meg a TextAnimation.setBuildType metódust a BuildType felsorolásból származó értékkel.
  8. Írja a prezentációt a lemezre PPTX fájlként.

Ez a Javascript kód megmutatja, hogyan alkalmazza a Fade hatást az AutoShape-re, és hogyan állítja be a szöveganimációt a By 1st Level Paragraphs értékre:

// Példányosít egy prezentációs osztályt, amely egy prezentációs fájlt képvisel.
var pres = new aspose.slides.Presentation();
try {
    var sld = pres.getSlides().get_Item(0);
    // Új AutoShape-et ad hozzá szöveggel
    var autoShape = sld.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 20, 20, 150, 100);
    var textFrame = autoShape.getTextFrame();
    textFrame.setText("First paragraph \nSecond paragraph \n Third paragraph");
    // Lekéri a dia fő szekvenciáját.
    var sequence = sld.getTimeline().getMainSequence();
    // Fade animációs hatást ad a alakzathoz
    var effect = sequence.addEffect(autoShape, aspose.slides.EffectType.Fade, aspose.slides.EffectSubtype.None, aspose.slides.EffectTriggerType.OnClick);
    // Animálja az alakzat szövegét az első szintű bekezdések szerint
    effect.getTextAnimation().setBuildType(aspose.slides.BuildType.ByLevelParagraphs1);
    // Mentse a PPTX fájlt a lemezre
    pres.save(path + "AnimText_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Animáció alkalmazása képkeretre

  1. Hozzon létre egy példányt a Presentation osztályból.
  2. Szerezzen be egy dia hivatkozást az indexe alapján.
  3. Adjon hozzá vagy szerezzen be egy PictureFrame elemet a dián.
  4. Szerezze meg a fő hatássorozatot.
  5. Adjon animációs hatást a PictureFrame-hez.
  6. Írja a prezentációt a lemezre PPTX fájlként.

Ez a Javascript kód megmutatja, hogyan alkalmazza a Fly hatást egy képkeretre:

// Példányosít egy prezentációs osztályt, amely egy prezentációs fájlt képvisel.
var pres = new aspose.slides.Presentation();
try {
    // Képet betölt, amely a prezentáció képkollekciójába kerül.
    var picture;
    var image = aspose.slides.Images.fromFile("aspose-logo.jpg");
    try {
        picture = pres.getImages().addImage(image);
    } finally {
        if (image != null) {
            image.dispose();
        }
    }
    // Képkeretet ad hozzá a diára.
    var picFrame = pres.getSlides().get_Item(0).getShapes().addPictureFrame(aspose.slides.ShapeType.Rectangle, 50, 50, 100, 100, picture);
    // Lekéri a dia fő szekvenciáját.
    var sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();
    // Fly from Left animációs hatást ad a képkerethez.
    var effect = sequence.addEffect(picFrame, aspose.slides.EffectType.Fly, aspose.slides.EffectSubtype.Left, aspose.slides.EffectTriggerType.OnClick);
    // Elmenti a PPTX fájlt a lemezre.
    pres.save(path + "AnimImage_out.pptx", aspose.slides.SaveFormat.Pptx);
} catch (e) {console.log(e);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Animáció alkalmazása alakzatra

  1. Hozzon létre egy példányt a Presentation osztályból.
  2. Szerezzen be egy dia hivatkozást az indexe alapján.
  3. Adjon hozzá egy rectangle AutoShape-t.
  4. Adjon hozzá egy Bevel AutoShape elemet (amikor erre az objektumra kattintanak, az animáció lejátszódik).
  5. Hozzon létre egy hatássorozatot a bevel alakzaton.
  6. Hozzon létre egy egyéni UserPath-t.
  7. Adjon parancsokat a UserPath-ra való mozgáshoz.
  8. Írja a prezentációt a lemezre PPTX fájlként.

Ez a Javascript kód megmutatja, hogyan alkalmazza a PathFootball (path football) hatást egy alakzatra:

// Példányosít egy Presentation osztályt, amely egy PPTX fájlt képvisel.
var pres = new aspose.slides.Presentation();
try {
    var sld = pres.getSlides().get_Item(0);
    // PathFootball hatást hoz létre egy létező alakzatra a semmiből.
    var ashp = sld.getShapes().addAutoShape(aspose.slides.ShapeType.Rectangle, 150, 150, 250, 25);
    ashp.addTextFrame("Animated TextBox");
    // Adds the PathFootBall animation effect
    pres.getSlides().get_Item(0).getTimeline().getMainSequence().addEffect(ashp, aspose.slides.EffectType.PathFootball, aspose.slides.EffectSubtype.None, aspose.slides.EffectTriggerType.AfterPrevious);
    // Létrehoz egyfajta "gombot".
    var shapeTrigger = pres.getSlides().get_Item(0).getShapes().addAutoShape(aspose.slides.ShapeType.Bevel, 10, 10, 20, 20);
    // Létrehoz egy hatássorozatot ehhez a gombhoz.
    var seqInter = pres.getSlides().get_Item(0).getTimeline().getInteractiveSequences().add(shapeTrigger);
    // Egy egyéni felhasználói útvonalat hoz létre. Objektumunk csak a gomb megnyomása után lesz mozgatva.
    var fxUserPath = seqInter.addEffect(ashp, aspose.slides.EffectType.PathUser, aspose.slides.EffectSubtype.None, aspose.slides.EffectTriggerType.OnClick);
    // Parancsokat ad hozzá a mozgáshoz, mivel a létrehozott útvonal üres.
    var motionBhv = fxUserPath.getBehaviors().get_Item(0);
    var pts = java.newArray("com.aspose.slides.Point2DFloat", [java.newInstanceSync("com.aspose.slides.Point2DFloat", 0.076, 0.59)]);
    motionBhv.getPath().add(aspose.slides.MotionCommandPathType.LineTo, pts, aspose.slides.MotionPathPointsType.Auto, true);
    pts[0] = java.newInstanceSync("com.aspose.slides.Point2DFloat", java.newFloat(-0.076), java.newFloat(-0.59));
    motionBhv.getPath().add(aspose.slides.MotionCommandPathType.LineTo, pts, aspose.slides.MotionPathPointsType.Auto, false);
    motionBhv.getPath().add(aspose.slides.MotionCommandPathType.End, null, aspose.slides.MotionPathPointsType.Auto, false);
    // A PPTX fájlt lemezre írja
    pres.save("AnimExample_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Az alakzatra alkalmazott animációs hatások lekérdezése

A következő példák megmutatják, hogyan használhatja a getEffectsByShape metódust a Sequence osztályból az alakzatra alkalmazott összes animációs hatás lekérdezéséhez.

Példa 1: Animációs hatások lekérdezése egy alakzatra egy normál dián

Korábban megtanulta, hogyan adjunk animációs hatásokat az alakzatokhoz PowerPoint prezentációkban. A következő mintakód megmutatja, hogyan kaphatja meg az első alakzatra az első normál dián a AnimExample_out.pptx prezentációban alkalmazott hatásokat.

var presentation = new aspose.slides.Presentation("AnimExample_out.pptx");
try {
    var firstSlide = presentation.getSlides().get_Item(0);

    // Lekéri a dia fő animációs szekvenciáját.
    var sequence = firstSlide.getTimeline().getMainSequence();

    // Lekéri az első alakzatot az első dián.
    var shape = firstSlide.getShapes().get_Item(0);

    // Lekéri az alakzatra alkalmazott animációs hatásokat.
    var shapeEffects = sequence.getEffectsByShape(shape);

    if (shapeEffects.length > 0) {
        console.log("The shape", shape.getName(), "has", shapeEffects.length, "animation effects.");
    }
} finally {
    if (presentation != null) {
        presentation.dispose();
    }
}

Példa 2: Az összes animációs hatás lekérdezése, beleértve a helyőrzőkből örökölt hatásokat is

Ha egy alakzat egy normál dián helyőrzőkkel rendelkezik, amelyek a elrendezési dián és/vagy a mesterdián találhatók, és ezekhez a helyőrzőkhöz animációs hatásokat adtak hozzá, akkor a diavetítés során az alakzat minden hatása lejátszásra kerül, beleértve a helyőrzőkből örökölt hatásokat is.

Tételezzük fel, hogy van egy sample.pptx nevű PowerPoint prezentációfájlunk, amely egyetlen diát tartalmaz, azon csak egy lábléc alakzat a “Made with Aspose.Slides” szöveggel, és a Random Bars hatás van alkalmazva az alakzatra.

Slide shape animation effect

És tegyük fel, hogy a Split hatás alkalmazva van a lábléc helyőrzőre a layout dián.

Layout shape animation effect

Végül, a Fly In hatás legyen alkalmazva a lábléc helyőrzőre a master dián.

Master shape animation effect

A következő mintakód megmutatja, hogyan használhatja a getBasePlaceholder metódust a Shape osztályból a formahelyőrzők eléréséhez és a lábléc alakzatra alkalmazott animációs hatások lekérdezéséhez, beleértve a layout és master diákon található helyőrzőkből örökölt hatásokat is.

var presentation = new aspose.slides.Presentation("sample.pptx");

var slide = presentation.getSlides().get_Item(0);

// Get animation effects of the shape on the normal slide.
var shape = slide.getShapes().get_Item(0);
var shapeEffects = slide.getTimeline().getMainSequence().getEffectsByShape(shape);

// Get animation effects of the placeholder on the layout slide.
var layoutShape = shape.getBasePlaceholder();
var layoutShapeEffects = slide.getLayoutSlide().getTimeline().getMainSequence().getEffectsByShape(layoutShape);

// Get animation effects of the placeholder on the master slide.
var masterShape = layoutShape.getBasePlaceholder();
var masterShapeEffects = slide.getLayoutSlide().getMasterSlide().getTimeline().getMainSequence().getEffectsByShape(masterShape);

console.log("Main sequence of shape effects:");
printEffects(masterShapeEffects);
printEffects(layoutShapeEffects);
printEffects(shapeEffects);

presentation.dispose();
function printEffects(effects) {
    for (const effect of effects) {
        console.log("Type:", effect.getType() + ", subtype:", effect.getSubtype());
    }
}

Output:

Main sequence of shape effects:
Type: 47, subtype: 2              // Repülés, Alul
Type: 134, subtype: 45            // Szétválás, Függőlegesen be
Type: 126, subtype: 22            // Véletlenszerű sávok, Vízszintes

Animációs hatás időzítési tulajdonságainak módosítása

Az Aspose.Slides for Node.js via Java lehetővé teszi az animációs hatás időzítési tulajdonságainak módosítását.

Ez a Animáció Időzítés ablaktábla a Microsoft PowerPointban:

example1_image

Az alábbiak a megfelelő kapcsolatok a PowerPoint időzítés és a Effect.Timing tulajdonságok között:

  • A PowerPoint időzítés Start legördülő listája megfelel a Effect.Timing.TriggerType tulajdonságnak.
  • A PowerPoint időzítés Duration megfelel a Effect.Timing.Duration tulajdonságnak. Egy animáció időtartama (másodpercben) a teljes idő, amely szükséges az animáció egy ciklusának befejezéséhez.
  • A PowerPoint időzítés Delay megfelel a Effect.Timing.TriggerDelayTime tulajdonságnak.

Így módosíthatja az Effect Timing tulajdonságokat:

  1. Apply vagy szerezze meg az animációs hatást.
  2. Állítson be új értékeket a szükséges Effect.Timing tulajdonságokhoz.
  3. Mentse el a módosított PPTX fájlt.

Ez a Javascript kód demonstrálja a műveletet:

// Példányosít egy prezentációs osztályt, amely egy prezentációs fájlt képvisel.
var pres = new aspose.slides.Presentation("AnimExample_out.pptx");
try {
    // Lekéri a dia fő szekvenciáját.
    var sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();
    // Lekéri a fő szekvencia első hatását.
    var effect = sequence.get_Item(0);
    // Módosítja a hatás TriggerType-ot, hogy kattintásra induljon
    effect.getTiming().setTriggerType(aspose.slides.EffectTriggerType.OnClick);
    // Módosítja a hatás időtartamát
    effect.getTiming().setDuration(3.0);
    // Módosítja a hatás TriggerDelayTime értékét
    effect.getTiming().setTriggerDelayTime(0.5);
    // Elmenti a PPTX fájlt a lemezre
    pres.save("AnimExample_changed.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Animációs hatás hangja

Az Aspose.Slides ezeket a tulajdonságokat biztosítja a hangok kezeléséhez animációs hatásokban:

Animációs hatás hangjának hozzáadása

Ez a Javascript kód megmutatja, hogyan adjon hozzá animációs hatás hangot, és hogyan állítsa le azt, amikor a következő hatás elkezdődik:

var pres = new aspose.slides.Presentation("AnimExample_out.pptx");
try {
    // Audio hozzáadása a prezentáció audio gyűjteményéhez
    var effectSound = pres.getAudios().addAudio(java.newInstanceSync("java.io.FileInputStream", java.newInstanceSync("java.io.File", "sampleaudio.wav")));
    var firstSlide = pres.getSlides().get_Item(0);
    // Lekéri a dia fő szekvenciáját.
    var sequence = firstSlide.getTimeline().getMainSequence();
    // Lekéri a fő szekvencia első hatását
    var firstEffect = sequence.get_Item(0);
    // Ellenőrzi a hatást "No Sound" esetére
    if ((!firstEffect.getStopPreviousSound()) && (firstEffect.getSound() == null)) {
        // Hangot ad hozzá az első hatáshoz
        firstEffect.setSound(effectSound);
    }
    // Lekéri a dia első interaktív szekvenciáját.
    var interactiveSequence = firstSlide.getTimeline().getInteractiveSequences().get_Item(0);
    // Beállítja a hatás "Stop previous sound" jelzőjét
    interactiveSequence.get_Item(0).setStopPreviousSound(true);
    // A PPTX fájlt lemezre írja
    pres.save("AnimExample_Sound_out.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Animációs hatás hangjának kinyerése

  1. Hozzon létre egy példányt a Presentation osztályból.
  2. Szerezzen be egy dia hivatkozást az indexe alapján.
  3. Szerezze meg a fő hatássorozatot.
  4. Nyissa ki a setSound(IAudio value) minden animációs hatásba beágyazott hangot.

Ez a Javascript kód megmutatja, hogyan nyerje ki az animációs hatásba beágyazott hangot:

// Példányosít egy prezentációs osztályt, amely egy prezentációs fájlt képvisel.
var presentation = new aspose.slides.Presentation("EffectSound.pptx");
try {
    var slide = presentation.getSlides().get_Item(0);
    // Lekéri a dia fő szekvenciáját.
    var sequence = slide.getTimeline().getMainSequence();
    for (var i = 0; i < sequence.getCount(); i++) {
        var effect = sequence.get_Item(i);
        if (effect.getSound() == null) {
            continue;
        }
        // Kinyeri a hatás hangját bájt tömbbe
        var audio = effect.getSound().getBinaryData();
    }
} finally {
    if (presentation != null) {
        presentation.dispose();
    }
}

Animáció után

Az Aspose.Slides for Node.js via Java lehetővé teszi az animációs hatás After animation tulajdonságának módosítását.

Ez a Animation Effect panel és a kibővített menü a Microsoft PowerPointban:

example1_image

A PowerPoint Effect After animation legördülő lista a következő tulajdonságoknak felel meg:

Ez a Javascript kód megmutatja, hogyan változtasson egy after animation hatást:

// Példányosít egy prezentációs osztályt, amely egy prezentációs fájlt képvisel
var pres = new aspose.slides.Presentation("AnimImage_out.pptx");
try {
    var firstSlide = pres.getSlides().get_Item(0);
    // Lekéri a fő szekvencia első hatását
    var firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);
    // Módosítja az after animation típust Színre
    firstEffect.setAfterAnimationType(aspose.slides.AfterAnimationType.Color);
    // Beállítja az after animation sötétítési színét
    firstEffect.getAfterAnimationColor().setColor(java.getStaticFieldValue("java.awt.Color", "BLUE"));
    // Elmenti a PPTX fájlt a lemezre
    pres.save("AnimImage_AfterAnimation.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

Szöveg animálása

Az Aspose.Slides ezeket a tulajdonságokat biztosítja egy animációs hatás Animate text blokkjének kezeléséhez:

Így módosíthatja az Effect Animate text tulajdonságokat:

  1. Apply vagy szerezze meg az animációs hatást.
  2. Állítsa a setBuildType(int value) metódust a BuildType.AsOneObject értékre, hogy kikapcsolja a By Paragraphs animációs módot.
  3. Állítson be új értékeket a setAnimateTextType(int value) és a setDelayBetweenTextParts(float value) tulajdonságokhoz.
  4. Mentse el a módosított PPTX fájlt.

Ez a Javascript kód demonstrálja a műveletet:

// Példányosít egy prezentációs osztályt, amely egy prezentációs fájlt képvisel.
var pres = new aspose.slides.Presentation("AnimTextBox_out.pptx");
try {
    var firstSlide = pres.getSlides().get_Item(0);
    // Lekéri a fő szekvencia első hatását
    var firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);
    // Módosítja a hatás szöveganimáció típusát "As One Object"-ra
    firstEffect.getTextAnimation().setBuildType(aspose.slides.BuildType.AsOneObject);
    // Módosítja a hatás animált szöveg típusát "By word"-ra
    firstEffect.setAnimateTextType(aspose.slides.AnimateTextType.ByWord);
    // Beállítja a szavak közötti késleltetést a hatás időtartamának 20%-ára
    firstEffect.setDelayBetweenTextParts(20.0);
    // Elmenti a PPTX fájlt a lemezre
    pres.save("AnimTextBox_AnimateText.pptx", aspose.slides.SaveFormat.Pptx);
} finally {
    if (pres != null) {
        pres.dispose();
    }
}

GYIK

Hogyan biztosíthatom, hogy az animációk megmaradjanak a prezentáció webre publikálásakor?

Export to HTML5 és engedélyezze az options beállításokat, amelyek a shape és transition animációkért felelnek. A sima HTML nem játssza le a diák animációit, míg a HTML5 igen.

Hogyan befolyásolja az alakzatok z-rend (réteg sorrend) módosítása az animációt?

Az animáció és a rajzolási sorrend független egymástól: egy hatás szabályozza az időzítést és a megjelenés/eltűnés típusát, míg a z-order határozza meg, mi takarja meg mi­t. A látható eredményt a kettő kombinációja határozza meg. (Ez a PowerPoint általános viselkedése; az Aspose.Slides hatások‑és‑alakzatok modellje ugyanazt a logikát követi.)

Vannak korlátozások az animációk videóra konvertálásakor bizonyos hatások esetén?

Általánosságban elmondható, hogy a animations are supported (animációk támogatottak), de ritka esetekben vagy bizonyos hatásoknál eltérően jelenhetnek meg. Javasolt a használt hatásokkal és a könyvtár verziójával tesztelni.