Zastosowanie animacji kształtów w prezentacjach przy użyciu Java
Wprowadzenie
Animacje to efekty wizualne, które można zastosować do tekstów, obrazów, kształtów lub wykresów. Ożywiają prezentacje lub ich elementy.
Dlaczego używać animacji w prezentacjach?
Używając animacji, możesz
- kontrolować przepływ informacji
- podkreślać ważne punkty
- zwiększać zainteresowanie lub udział odbiorców
- uczynić treść łatwiejszą do odczytania, przyswojenia lub przetworzenia
- przyciągać uwagę czytelników lub widzów do ważnych części w prezentacji
PowerPoint oferuje wiele opcji i narzędzi do animacji oraz efektów animacji w kategoriach wejścia, wyjścia, podkreślenia i ścieżek ruchu.
Animacje w Aspose.Slides
- Aspose.Slides dostarcza klasy i typy potrzebne do pracy z animacjami w przestrzeni nazw
Aspose.Slides.Animation, - Aspose.Slides udostępnia ponad 150 efektów animacji w wyliczeniu EffectType. Są to praktycznie te same (lub równoważne) efekty używane w PowerPoint.
Zastosowanie animacji do pola tekstowego
Aspose.Slides for Java pozwala zastosować animację do tekstu w kształcie.
- Utwórz instancję klasy Presentation.
- Uzyskaj referencję do slajdu za pomocą jego indeksu.
- Dodaj
rectangleIAutoShape. - Dodaj tekst do IAutoShape.TextFrame.
- Pobierz główną sekwencję efektów.
- Dodaj efekt animacji do IAutoShape.
- Ustaw właściwość
TextAnimation.BuildTypena wartość z wyliczeniaBuildType. - Zapisz prezentację na dysku jako plik PPTX.
Ten kod Java pokazuje, jak zastosować efekt Fade do AutoShape i ustawić animację tekstu na wartość By 1st Level Paragraphs:
// Tworzy klasę prezentacji, która reprezentuje plik prezentacji.
Presentation pres = new Presentation();
try {
ISlide sld = pres.getSlides().get_Item(0);
// Dodaje nowy AutoShape z tekstem
IAutoShape autoShape = sld.getShapes().addAutoShape(ShapeType.Rectangle, 20, 20, 150, 100);
ITextFrame textFrame = autoShape.getTextFrame();
textFrame.setText("First paragraph \nSecond paragraph \n Third paragraph");
// Pobiera główną sekwencję slajdu.
ISequence sequence = sld.getTimeline().getMainSequence();
// Dodaje efekt animacji Fade do kształtu
IEffect effect = sequence.addEffect(autoShape, EffectType.Fade, EffectSubtype.None, EffectTriggerType.OnClick);
// Animuje tekst kształtu według paragrafów pierwszego poziomu
effect.getTextAnimation().setBuildType(BuildType.ByLevelParagraphs1);
// Zapisuje plik PPTX na dysku
pres.save(path + "AnimText_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Zastosowanie animacji do PictureFrame
- Utwórz instancję klasy Presentation.
- Uzyskaj referencję do slajdu za pomocą jego indeksu.
- Dodaj lub pobierz PictureFrame na slajdzie.
- Pobierz główną sekwencję efektów.
- Dodaj efekt animacji do PictureFrame.
- Zapisz prezentację na dysku jako plik PPTX.
Ten kod Java pokazuje, jak zastosować efekt Fly do ramki obrazu:
// Tworzy klasę prezentacji, która reprezentuje plik prezentacji.
Presentation pres = new Presentation();
try {
// Wczytuje obraz do dodania do kolekcji obrazów prezentacji
IPPImage picture;
IImage image = Images.fromFile("aspose-logo.jpg");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// Dodaje ramkę obrazu do slajdu
IPictureFrame picFrame = pres.getSlides().get_Item(0).getShapes().addPictureFrame(ShapeType.Rectangle, 50, 50, 100, 100, picture);
// Pobiera główną sekwencję slajdu.
ISequence sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();
// Dodaje efekt animacji Fly z lewej do ramki obrazu
IEffect effect = sequence.addEffect(picFrame, EffectType.Fly, EffectSubtype.Left, EffectTriggerType.OnClick);
// Zapisuje plik PPTX na dysku
pres.save(path + "AnimImage_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Zastosowanie animacji do kształtu
- Utwórz instancję klasy Presentation.
- Uzyskaj referencję do slajdu za pomocą jego indeksu.
- Dodaj
rectangleIAutoShape. - Dodaj
BevelIAutoShape (po kliknięciu tego obiektu animacja zostanie uruchomiona). - Utwórz sekwencję efektów na kształcie bevel.
- Utwórz niestandardowy
UserPath. - Dodaj polecenia przemieszczania do
UserPath. - Zapisz prezentację na dysku jako plik PPTX.
Ten kod Java pokazuje, jak zastosować efekt PathFootball (ścieżka football) do kształtu:
// Tworzy instancję klasy Presentation, która reprezentuje plik PPTX.
Presentation pres = new Presentation();
try {
ISlide sld = pres.getSlides().get_Item(0);
// Tworzy efekt PathFootball dla istniejącego kształtu od podstaw.
IAutoShape ashp = sld.getShapes().addAutoShape(ShapeType.Rectangle, 150, 150, 250, 25);
ashp.addTextFrame("Animated TextBox");
// Dodaje efekt animacji PathFootBall
pres.getSlides().get_Item(0).getTimeline().getMainSequence().addEffect(ashp, EffectType.PathFootball,
EffectSubtype.None, EffectTriggerType.AfterPrevious);
// Tworzy pewnego rodzaju "przycisk".
IShape shapeTrigger = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Bevel, 10, 10, 20, 20);
// Tworzy sekwencję efektów dla tego przycisku.
ISequence seqInter = pres.getSlides().get_Item(0).getTimeline().getInteractiveSequences().add(shapeTrigger);
// Tworzy niestandardową ścieżkę użytkownika. Nasz obiekt zostanie przemieszczony dopiero po kliknięciu przycisku.
IEffect fxUserPath = seqInter.addEffect(ashp, EffectType.PathUser, EffectSubtype.None, EffectTriggerType.OnClick);
// Dodaje polecenia ruchu, ponieważ utworzona ścieżka jest pusta.
IMotionEffect motionBvh = ((IMotionEffect)fxUserPath.getBehaviors().get_Item(0));
Point2D.Float[] pts = new Point2D.Float[1];
pts[0] = new Point2D.Float(0.076f, 0.59f);
motionBvh.getPath().add(MotionCommandPathType.LineTo, pts, MotionPathPointsType.Auto, true);
pts[0] = new Point2D.Float(-0.076f, -0.59f);
motionBvh.getPath().add(MotionCommandPathType.LineTo, pts, MotionPathPointsType.Auto, false);
motionBvh.getPath().add(MotionCommandPathType.End, null, MotionPathPointsType.Auto, false);
// Zapisuje plik PPTX na dysku
pres.save("AnimExample_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Pobranie efektów animacji zastosowanych do kształtu
Poniższe przykłady pokazują, jak używać metody getEffectsByShape z interfejsu ISequence do pobrania wszystkich efektów animacji zastosowanych do kształtu.
Przykład 1: Pobranie efektów animacji zastosowanych do kształtu na normalnym slajdzie
Poprzednio nauczyłeś się, jak dodawać efekty animacji do kształtów w prezentacjach PowerPoint. Poniższy przykład kodu pokazuje, jak pobrać efekty zastosowane do pierwszego kształtu na pierwszym normalnym slajdzie w prezentacji AnimExample_out.pptx.
Presentation presentation = new Presentation("AnimExample_out.pptx");
try {
ISlide firstSlide = presentation.getSlides().get_Item(0);
// Pobiera główną sekwencję animacji slajdu.
ISequence sequence = firstSlide.getTimeline().getMainSequence();
// Pobiera pierwszy kształt na pierwszym slajdzie.
IShape shape = firstSlide.getShapes().get_Item(0);
// Pobiera efekty animacji zastosowane do kształtu.
IEffect[] shapeEffects = sequence.getEffectsByShape(shape);
if (shapeEffects.length > 0)
System.out.println("The shape " + shape.getName() + " has " + shapeEffects.length + " animation effects.");
} finally {
if (presentation != null) presentation.dispose();
}
Przykład 2: Pobranie wszystkich efektów animacji, w tym dziedziczonych z placeholderów
Jeśli kształt na normalnym slajdzie ma placeholdery znajdujące się na slajdzie układu i/lub slajdzie głównym, a efekty animacji zostały dodane do tych placeholderów, wszystkie efekty kształtu będą odtwarzane podczas pokazu, w tym te dziedziczone z placeholderów.
Załóżmy, że mamy plik prezentacji PowerPoint sample.pptx zawierający jeden slajd z jedynym kształtem stopki o tekście “Made with Aspose.Slides” oraz zastosowanym efektem Random Bars.

Załóżmy również, że efekt Split został zastosowany do placeholdera stopki na slajdzie layout.

I w końcu, efekt Fly In został zastosowany do placeholdera stopki na slajdzie master.

Poniższy przykład kodu pokazuje, jak używać metody getBasePlaceholder z interfejsu IShape do uzyskania dostępu do placeholderów kształtu i pobrania efektów animacji zastosowanych do kształtu stopki, w tym dziedziczonych z placeholderów znajdujących się na slajdach układu i głównym.
Presentation presentation = new Presentation("sample.pptx");
ISlide slide = presentation.getSlides().get_Item(0);
// Pobierz efekty animacji kształtu na normalnym slajdzie.
IShape shape = slide.getShapes().get_Item(0);
IEffect[] shapeEffects = slide.getTimeline().getMainSequence().getEffectsByShape(shape);
// Pobierz efekty animacji placeholdera na slajdzie układu.
IShape layoutShape = shape.getBasePlaceholder();
IEffect[] layoutShapeEffects = slide.getLayoutSlide().getTimeline().getMainSequence().getEffectsByShape(layoutShape);
// Pobierz efekty animacji placeholdera na slajdzie głównym.
IShape masterShape = layoutShape.getBasePlaceholder();
IEffect[] masterShapeEffects = slide.getLayoutSlide().getMasterSlide().getTimeline().getMainSequence().getEffectsByShape(masterShape);
System.out.println("Main sequence of shape effects:");
printEffects(masterShapeEffects);
printEffects(layoutShapeEffects);
printEffects(shapeEffects);
presentation.dispose();
static void printEffects(IEffect[] effects)
{
for (IEffect effect : effects)
{
String typeName = EffectType.getName(EffectType.class, effect.getType());
String subtypeName = EffectSubtype.getName(EffectSubtype.class, effect.getSubtype());
System.out.println(typeName + " " + subtypeName);
}
}
Output:
Main sequence of shape effects:
Fly Bottom
Split VerticalIn
RandomBars Horizontal
Zmienianie właściwości czasu efektu animacji
Aspose.Slides for Java pozwala zmienić właściwości Timing efektu animacji.
To jest panel Animation Timing w Microsoft PowerPoint:

Oto zestawienia pomiędzy Timing w PowerPoint a właściwościami Effect.Timing:
- Lista rozwijana PowerPoint Timing Start odpowiada właściwości Effect.Timing.TriggerType .
- PowerPoint Timing Duration odpowiada właściwości Effect.Timing.Duration . Czas trwania animacji (w sekundach) to całkowity czas potrzebny na wykonanie jednego cyklu animacji.
- PowerPoint Timing Delay odpowiada właściwości Effect.Timing.TriggerDelayTime .
Tak zmieniasz właściwości Timing efektu:
- Apply lub pobierz efekt animacji.
- Ustaw nowe wartości właściwości Effect.Timing zgodnie z potrzebami.
- Zapisz zmodyfikowany plik PPTX.
// Tworzy instancję klasy prezentacji, która reprezentuje plik prezentacji.
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
// Pobiera główną sekwencję slajdu.
ISequence sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();
// Pobiera pierwszy efekt głównej sekwencji.
IEffect effect = sequence.get_Item(0);
// Zmienia TriggerType efektu na uruchamianie po kliknięciu
effect.getTiming().setTriggerType(EffectTriggerType.OnClick);
// Zmienia czas trwania efektu
effect.getTiming().setDuration(3f);
// Zmienia TriggerDelayTime efektu
effect.getTiming().setTriggerDelayTime(0.5f);
// Zapisuje plik PPTX na dysku
pres.save("AnimExample_changed.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Dźwięk efektu animacji
Aspose.Slides udostępnia te właściwości, aby umożliwić pracę z dźwiękami w efektach animacji:
Dodaj dźwięk efektu animacji
Ten kod Java pokazuje, jak dodać dźwięk efektu animacji i zatrzymać go, gdy rozpocznie się kolejny efekt:
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
// Dodaje dźwięk do kolekcji audio prezentacji
IAudio effectSound = pres.getAudios().addAudio(Files.readAllBytes(Paths.get("sampleaudio.wav")));
ISlide firstSlide = pres.getSlides().get_Item(0);
// Pobiera główną sekwencję slajdu.
ISequence sequence = firstSlide.getTimeline().getMainSequence();
// Pobiera pierwszy efekt głównej sekwencji
IEffect firstEffect = sequence.get_Item(0);
// Sprawdza, czy efekt nie ma dźwięku
if (!firstEffect.getStopPreviousSound() && firstEffect.getSound() == null)
{
// Dodaje dźwięk do pierwszego efektu
firstEffect.setSound(effectSound);
}
// Pobiera pierwszą interaktywną sekwencję slajdu.
ISequence interactiveSequence = firstSlide.getTimeline().getInteractiveSequences().get_Item(0);
// Ustawia flagę efektu "Stop previous sound"
interactiveSequence.get_Item(0).setStopPreviousSound(true);
// Zapisuje plik PPTX na dysku
pres.save("AnimExample_Sound_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Wyodrębnij dźwięk efektu animacji
- Utwórz instancję klasy Presentation .
- Uzyskaj referencję do slajdu przez jego indeks.
- Pobierz główną sekwencję efektów.
- Wyodrębnij wbudowany w każdy efekt animacji setSound(IAudio value) .
Ten kod Java pokazuje, jak wyodrębnić dźwięk osadzony w efekcie animacji:
// Tworzy instancję klasy prezentacji, która reprezentuje plik prezentacji.
Presentation presentation = new Presentation("EffectSound.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
// Pobiera główną sekwencję slajdu.
ISequence sequence = slide.getTimeline().getMainSequence();
for (IEffect effect : sequence)
{
if (effect.getSound() == null)
continue;
// Wyodrębnia dźwięk efektu jako tablicę bajtów
byte[] audio = effect.getSound().getBinaryData();
}
} finally {
if (presentation != null) presentation.dispose();
}
Po animacji
Aspose.Slides for Java pozwala zmienić właściwość After animation efektu animacji.
To jest panel Effect After animation oraz rozszerzone menu w Microsoft PowerPoint:

Lista rozwijana PowerPoint Effect After animation odpowiada następującym właściwościom:
- Właściwość setAfterAnimationType(int value) opisująca typ po‑animacji:
- More Colors w PowerPoint odpowiada typowi AfterAnimationType.Color;
- Don’t Dim w PowerPoint odpowiada typowi AfterAnimationType.DoNotDim (domyślny typ po‑animacji);
- Hide After Animation w PowerPoint odpowiada typowi AfterAnimationType.HideAfterAnimation;
- Hide on Next Mouse Click w PowerPoint odpowiada typowi AfterAnimationType.HideOnNextMouseClick.
- Właściwość setAfterAnimationColor(IColorFormat value) definiująca format koloru po‑animacji. Działa ona w połączeniu z typem AfterAnimationType.Color. Jeśli zmienisz typ na inny, kolor po‑animacji zostanie wyczyszczony.
Ten kod Java pokazuje, jak zmienić efekt po‑animacji:
// Tworzy instancję klasy prezentacji, która reprezentuje plik prezentacji.
Presentation pres = new Presentation("AnimImage_out.pptx");
try {
ISlide firstSlide = pres.getSlides().get_Item(0);
// Pobiera pierwszy efekt głównej sekwencji
IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);
// Zmienia typ po‑animacji na Color
firstEffect.setAfterAnimationType(AfterAnimationType.Color);
// Ustawia kolor przyciemnienia po‑animacji
firstEffect.getAfterAnimationColor().setColor(Color.BLUE);
// Zapisuje plik PPTX na dysku
pres.save("AnimImage_AfterAnimation.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Animuj tekst
Aspose.Slides udostępnia te właściwości, aby umożliwić pracę z blokiem Animate text efektu animacji:
- setAnimateTextType(int value) opisująca typ animacji tekstu efektu. Tekst w kształcie może być animowany:
- Wszystko jednocześnie (AnimateTextType.AllAtOnce)
- Słowo po słowie (AnimateTextType.ByWord)
- Litera po literze (AnimateTextType.ByLetter)
- setDelayBetweenTextParts(float value) ustawia opóźnienie między częściami animowanego tekstu (słowami lub literami). Dodatnia wartość określa procent czasu trwania efektu, ujemna – opóźnienie w sekundach.
Tak możesz zmienić właściwości Animate text efektu:
- Apply lub pobierz efekt animacji.
- Ustaw właściwość setBuildType(int value) na wartość BuildType.AsOneObject, aby wyłączyć tryb animacji By Paragraphs.
- Ustaw nowe wartości właściwości setAnimateTextType(int value) oraz setDelayBetweenTextParts(float value).
- Zapisz zmodyfikowany plik PPTX.
// Tworzy instancję klasy prezentacji, która reprezentuje plik prezentacji.
Presentation pres = new Presentation("AnimTextBox_out.pptx");
try {
ISlide firstSlide = pres.getSlides().get_Item(0);
// Pobiera pierwszy efekt głównej sekwencji
IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);
// Zmienia typ animacji tekstu efektu na "As One Object"
firstEffect.getTextAnimation().setBuildType(BuildType.AsOneObject);
// Zmienia typ animacji tekstu efektu na "By word"
firstEffect.setAnimateTextType(AnimateTextType.ByWord);
// Ustawia opóźnienie między słowami na 20% czasu trwania efektu
firstEffect.setDelayBetweenTextParts(20f);
// Zapisuje plik PPTX na dysku
pres.save("AnimTextBox_AnimateText.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
FAQ
Jak mogę zapewnić, że animacje zostaną zachowane po opublikowaniu prezentacji w Internecie?
Export to HTML5 i włącz opcje odpowiedzialne za animacje shape oraz transition. Zwykły HTML nie odtwarza animacji slajdów, natomiast HTML5 tak.
Jak zmiana kolejności warstw (z‑order) kształtów wpływa na animację?
Kolejność animacji i kolejność rysowania są niezależne: efekt kontroluje czas i typ pojawiania/zanikania, a z‑order określa, co co przykrywa. Widoczny rezultat wynika z ich kombinacji. (To ogólne zachowanie PowerPoint; model efektów i kształtów Aspose.Slides podąża za tą samą logiką.)
Czy istnieją ograniczenia przy konwertowaniu animacji na wideo dla niektórych efektów?
Ogólnie animacje są wspierane, ale w rzadkich przypadkach lub przy specyficznych efektach mogą być renderowane inaczej. Zaleca się przetestowanie używanych efektów oraz wersji biblioteki.