Toepassen van vormanimaties in presentaties met Java
Introductie
Animaties zijn visuele effecten die kunnen worden toegepast op teksten, afbeeldingen, vormen of grafieken. Ze geven leven aan presentaties of hun onderdelen.
Waarom animaties gebruiken in presentaties?
Door animaties te gebruiken kun je
- de stroom van informatie beheersen
- belangrijke punten benadrukken
- de interesse of deelname van uw publiek vergroten
- inhoud gemakkelijker leesbaar, assimileerbaar of verwerkbaar maken
- de aandacht van uw lezers of kijkers vestigen op belangrijke delen in een presentatie
PowerPoint biedt vele opties en tools voor animaties en animatie‑effecten binnen de categorieën entrance, exit, emphasis en motion paths.
Animaties in Aspose.Slides
- Aspose.Slides levert de klassen en typen die u nodig hebt om met animaties te werken onder de
Aspose.Slides.Animationnamespace, - Aspose.Slides biedt meer dan 150 animatie‑effecten via de EffectType‑enumeratie. Deze effecten zijn in wezen dezelfde (of gelijkwaardige) effecten die in PowerPoint worden gebruikt.
Animatie toepassen op een tekstvak
Aspose.Slides for Java maakt het mogelijk om animatie toe te passen op de tekst in een vorm.
- Maak een instantie van de Presentation klasse.
- Verkrijg een referentie naar een dia via de index.
- Voeg een
rectangleIAutoShape toe. - Voeg tekst toe aan IAutoShape.TextFrame.
- Haal de hoofdreeks van effecten op.
- Voeg een animatie‑effect toe aan IAutoShape.
- Stel de
TextAnimation.BuildTypeeigenschap in op de waarde uit deBuildType‑enumeratie. - Schrijf de presentatie naar schijf als een PPTX‑bestand.
Deze Java‑code laat zien hoe u het Fade‑effect toepast op een AutoShape en de tekstanimatie instelt op de waarde By 1st Level Paragraphs:
// Instantieert een presentatieklasse die een presentatiedocument vertegenwoordigt.
Presentation pres = new Presentation();
try {
ISlide sld = pres.getSlides().get_Item(0);
// Voegt een nieuwe AutoShape met tekst toe.
IAutoShape autoShape = sld.getShapes().addAutoShape(ShapeType.Rectangle, 20, 20, 150, 100);
ITextFrame textFrame = autoShape.getTextFrame();
textFrame.setText("First paragraph \nSecond paragraph \n Third paragraph");
// Haalt de hoofdreeks van de dia op.
ISequence sequence = sld.getTimeline().getMainSequence();
// Voegt Fade-animatie-effect toe aan de vorm.
IEffect effect = sequence.addEffect(autoShape, EffectType.Fade, EffectSubtype.None, EffectTriggerType.OnClick);
// Animeert de vormtekst per paragrafen van het eerste niveau.
effect.getTextAnimation().setBuildType(BuildType.ByLevelParagraphs1);
// Slaat het PPTX-bestand op naar schijf.
pres.save(path + "AnimText_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Animatie toepassen op een PictureFrame
- Maak een instantie van de Presentation klasse.
- Verkrijg een referentie naar een dia via de index.
- Voeg een PictureFrame toe aan of haal er een op de dia.
- Haal de hoofdreeks van effecten op.
- Voeg een animatie‑effect toe aan PictureFrame.
- Schrijf de presentatie naar schijf als een PPTX‑bestand.
Deze Java‑code laat zien hoe u het Fly‑effect toepast op een picture frame:
// Instantieert een presentatieklasse die een presentatiedocument vertegenwoordigt.
Presentation pres = new Presentation();
try {
// Laadt afbeelding die wordt toegevoegd aan de afbeeldingscollectie van de presentatie
IPPImage picture;
IImage image = Images.fromFile("aspose-logo.jpg");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// Voegt een afbeeldingsframe toe aan de dia
IPictureFrame picFrame = pres.getSlides().get_Item(0).getShapes().addPictureFrame(ShapeType.Rectangle, 50, 50, 100, 100, picture);
// Haalt de hoofdreeks van de dia op.
ISequence sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();
// Voegt Fly from Left animatie‑effect toe aan het afbeeldingsframe
IEffect effect = sequence.addEffect(picFrame, EffectType.Fly, EffectSubtype.Left, EffectTriggerType.OnClick);
// Slaat het PPTX-bestand op naar schijf
pres.save(path + "AnimImage_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Animatie toepassen op een vorm
- Maak een instantie van de Presentation klasse.
- Verkrijg een referentie naar een dia via de index.
- Voeg een
rectangleIAutoShape toe. - Voeg een
BevelIAutoShape toe (wanneer dit object wordt aangeklikt, wordt de animatie afgespeeld). - Maak een reeks effecten aan op de bevel‑vorm.
- Maak een aangepaste
UserPath. - Voeg opdrachten toe voor het bewegen naar de
UserPath. - Schrijf de presentatie naar schijf als een PPTX‑bestand.
Deze Java‑code laat zien hoe u het PathFootball‑effect toepast op een vorm:
// Instantieer een Presentation-klasse die een PPTX-bestand vertegenwoordigt.
Presentation pres = new Presentation();
try {
ISlide sld = pres.getSlides().get_Item(0);
// Creëert het PathFootball-effect voor een bestaande vorm vanaf nul.
IAutoShape ashp = sld.getShapes().addAutoShape(ShapeType.Rectangle, 150, 150, 250, 25);
ashp.addTextFrame("Animated TextBox");
// Voegt het PathFootBall-animatie-effect toe
pres.getSlides().get_Item(0).getTimeline().getMainSequence().addEffect(ashp, EffectType.PathFootball,
EffectSubtype.None, EffectTriggerType.AfterPrevious);
// Creëert een soort "knop".
IShape shapeTrigger = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Bevel, 10, 10, 20, 20);
// Creëert een reeks effecten voor deze knop.
ISequence seqInter = pres.getSlides().get_Item(0).getTimeline().getInteractiveSequences().add(shapeTrigger);
// Creëert een aangepaste gebruikerspad. Ons object wordt pas verplaatst nadat de knop is aangeklikt.
IEffect fxUserPath = seqInter.addEffect(ashp, EffectType.PathUser, EffectSubtype.None, EffectTriggerType.OnClick);
// Voegt opdrachten toe voor verplaatsing omdat het aangemaakte pad leeg is.
IMotionEffect motionBhv = ((IMotionEffect)fxUserPath.getBehaviors().get_Item(0));
Point2D.Float[] pts = new Point2D.Float[1];
pts[0] = new Point2D.Float(0.076f, 0.59f);
motionBhv.getPath().add(MotionCommandPathType.LineTo, pts, MotionPathPointsType.Auto, true);
pts[0] = new Point2D.Float(-0.076f, -0.59f);
motionBhv.getPath().add(MotionCommandPathType.LineTo, pts, MotionPathPointsType.Auto, false);
motionBhv.getPath().add(MotionCommandPathType.End, null, MotionPathPointsType.Auto, false);
// Schrijft het PPTX‑bestand naar schijf
pres.save("AnimExample_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Animatie‑effecten ophalen die op een vorm zijn toegepast
De volgende voorbeelden laten zien hoe u de getEffectsByShape‑methode van de ISequence interface gebruikt om alle animatie‑effecten op te halen die op een vorm zijn toegepast.
Voorbeeld 1: Animatie‑effecten ophalen die op een vorm op een normale dia zijn toegepast
Eerder heeft u geleerd hoe u animatie‑effecten aan vormen in PowerPoint‑presentaties toevoegt. De volgende voorbeeldcode laat zien hoe u de effect‑toepassingen op de eerste vorm van de eerste normale dia in de presentatie AnimExample_out.pptx ophaalt.
Presentation presentation = new Presentation("AnimExample_out.pptx");
try {
ISlide firstSlide = presentation.getSlides().get_Item(0);
// Haalt de hoofdanimatiesequentie van de dia op.
ISequence sequence = firstSlide.getTimeline().getMainSequence();
// Haalt de eerste vorm op de eerste dia op.
IShape shape = firstSlide.getShapes().get_Item(0);
// Haalt de animatie-effecten op die op de vorm zijn toegepast.
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();
}
Voorbeeld 2: Alle animatie‑effecten ophalen, inclusief die van placeholders
Als een vorm op een normale dia placeholders heeft die op de layout‑dia en/of master‑dia staan, en er animatie‑effecten aan deze placeholders zijn toegevoegd, dan worden alle effect‑toepassingen van de vorm afgespeeld tijdens de diavoorstelling, inclusief die die van de placeholders zijn geërfd.
Stel dat we een PowerPoint‑bestand sample.pptx hebben met één dia die alleen een voettekst‑vorm bevat met de tekst “Made with Aspose.Slides” en het Random Bars‑effect op die vorm is toegepast.

Stel bovendien dat het Split‑effect op de voettekst‑placeholder op de layout‑dia is toegepast.

En tenslotte is het Fly In‑effect op de voettekst‑placeholder op de master‑dia toegepast.

De volgende voorbeeldcode laat zien hoe u de getBasePlaceholder‑methode van de IShape interface gebruikt om de shape‑placeholders te benaderen en de animatie‑effecten op te halen die op de voettekst‑vorm zijn toegepast, inclusief die geërfd van placeholders op layout‑ en master‑dia’s.
Presentation presentation = new Presentation("sample.pptx");
ISlide slide = presentation.getSlides().get_Item(0);
// Haal de animatie-effecten van de vorm op op de normale dia.
IShape shape = slide.getShapes().get_Item(0);
IEffect[] shapeEffects = slide.getTimeline().getMainSequence().getEffectsByShape(shape);
// Haal de animatie-effecten van de placeholder op op de layout-dia.
IShape layoutShape = shape.getBasePlaceholder();
IEffect[] layoutShapeEffects = slide.getLayoutSlide().getTimeline().getMainSequence().getEffectsByShape(layoutShape);
// Haal de animatie-effecten van de placeholder op op de master-dia.
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
Eigenschappen van de timing van animatie‑effecten wijzigen
Aspose.Slides for Java maakt het mogelijk de timing‑eigenschappen van een animatie‑effect te wijzigen.
Dit is het Animation Timing‑venster in Microsoft PowerPoint:

Dit zijn de overeenkomsten tussen PowerPoint Timing en de eigenschappen van Effect.Timing :
- PowerPoint Timing Start‑keuzelijst komt overeen met de eigenschap Effect.Timing.TriggerType.
- PowerPoint Timing Duration komt overeen met de eigenschap Effect.Timing.Duration. De duur van een animatie (in seconden) is de totale tijd die een animatie nodig heeft om één cyclus te voltooien.
- PowerPoint Timing Delay komt overeen met de eigenschap Effect.Timing.TriggerDelayTime.
Zo wijzigt u de timing‑eigenschappen van een effect:
- Pas het animatie‑effect toe of haal het op.
- Stel nieuwe waarden in voor de Effect.Timing‑eigenschappen die u nodig hebt.
- Sla het gewijzigde PPTX‑bestand op.
Deze Java‑code demonstreert de bewerking:
// Instantieert een presentatie‑klasse die een presentatiedocument vertegenwoordigt.
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
// Haalt de hoofdreeks van de dia op.
ISequence sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();
// Haalt het eerste effect van de hoofdreeks op.
IEffect effect = sequence.get_Item(0);
// Wijzigt het TriggerType van het effect zodat het start bij een klik
effect.getTiming().setTriggerType(EffectTriggerType.OnClick);
// Wijzigt de duur van het effect
effect.getTiming().setDuration(3f);
// Wijzigt de TriggerDelayTime van het effect
effect.getTiming().setTriggerDelayTime(0.5f);
// Slaat het PPTX‑bestand op naar schijf
pres.save("AnimExample_changed.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Geluid voor animatie‑effect
Aspose.Slides biedt deze eigenschappen om met geluiden in animatie‑effecten te werken:
Geluid aan een animatie‑effect toevoegen
Deze Java‑code laat zien hoe u een geluid aan een animatie‑effect toevoegt en stopt wanneer het volgende effect begint:
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
// Voegt audio toe aan de audio-collectie van de presentatie
IAudio effectSound = pres.getAudios().addAudio(Files.readAllBytes(Paths.get("sampleaudio.wav")));
ISlide firstSlide = pres.getSlides().get_Item(0);
// Haalt de hoofdreeks van de dia op.
ISequence sequence = firstSlide.getTimeline().getMainSequence();
// Haalt het eerste effect van de hoofdreeks op
IEffect firstEffect = sequence.get_Item(0);
// Controleert of het effect geen geluid heeft
if (!firstEffect.getStopPreviousSound() && firstEffect.getSound() == null)
{
// Voegt geluid toe aan het eerste effect
firstEffect.setSound(effectSound);
}
// Haalt de eerste interactieve reeks van de dia op.
ISequence interactiveSequence = firstSlide.getTimeline().getInteractiveSequences().get_Item(0);
// Stelt de vlag "Stop vorige geluid" in voor het effect
interactiveSequence.get_Item(0).setStopPreviousSound(true);
// Schrijft het PPTX-bestand naar schijf
pres.save("AnimExample_Sound_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Geluid uit een animatie‑effect extraheren
- Maak een instantie van de Presentation klasse.
- Verkrijg een referentie naar een dia via de index.
- Haal de hoofdreeks van effecten op.
- Extraheer het aan elk animatie‑effect gekoppelde setSound(IAudio value) geluid.
Deze Java‑code laat zien hoe u het in een animatie‑effect ingebedde geluid extraheert:
// Instantieert een presentatieklasse die een presentatiedocument vertegenwoordigt.
Presentation presentation = new Presentation("EffectSound.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
// Haalt de hoofdreeks van de dia op.
ISequence sequence = slide.getTimeline().getMainSequence();
for (IEffect effect : sequence)
{
if (effect.getSound() == null)
continue;
// Extraheert het effectgeluid in een byte array
byte[] audio = effect.getSound().getBinaryData();
}
} finally {
if (presentation != null) presentation.dispose();
}
Na de animatie
Aspose.Slides for Java maakt het mogelijk de eigenschap After animation van een animatie‑effect te wijzigen.
Dit is het Animation Effect‑venster en het uitgebreide menu in Microsoft PowerPoint:

De keuzelijst After animation in PowerPoint komt overeen met deze eigenschappen:
- eigenschap setAfterAnimationType(int value) die het type after‑animation beschrijft:
- PowerPoint More Colors komt overeen met het type AfterAnimationType.Color;
- PowerPoint Don’t Dim komt overeen met het type AfterAnimationType.DoNotDim (standaard after‑animation type);
- PowerPoint Hide After Animation komt overeen met het type AfterAnimationType.HideAfterAnimation;
- PowerPoint Hide on Next Mouse Click komt overeen met het type AfterAnimationType.HideOnNextMouseClick.
- eigenschap setAfterAnimationColor(IColorFormat value) die een after‑animation‑kleurformaat definieert. Deze eigenschap werkt samen met het type AfterAnimationType.Color. Als u het type wijzigt, wordt de after‑animation‑kleur gewist.
Deze Java‑code laat zien hoe u een after‑animation‑effect wijzigt:
// Instantieert een presentatieklasse die een presentatiedocument vertegenwoordigt
Presentation pres = new Presentation("AnimImage_out.pptx");
try {
ISlide firstSlide = pres.getSlides().get_Item(0);
// Haalt het eerste effect van de hoofdreeks op
IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);
// Wijzigt het after animation type naar Color
firstEffect.setAfterAnimationType(AfterAnimationType.Color);
// Stelt de after animation dimkleur in
firstEffect.getAfterAnimationColor().setColor(Color.BLUE);
// Schrijft het PPTX-bestand naar schijf
pres.save("AnimImage_AfterAnimation.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Tekst animeren
Aspose.Slides biedt deze eigenschappen om met het Animate text‑blok van een animatie‑effect te werken:
- setAnimateTextType(int value) die het type animatietekst van het effect beschrijft. De vorm‑tekst kan geanimeerd worden:
- Alles tegelijk (AnimateTextType.AllAtOnce)
- Per woord (AnimateTextType.ByWord)
- Per letter (AnimateTextType.ByLetter)
- setDelayBetweenTextParts(float value) stelt een vertraging in tussen de geanimeerde tekstonderdelen (woorden of letters). Een positieve waarde geeft een percentage van de effectduur aan; een negatieve waarde geeft de vertraging in seconden aan.
Zo wijzigt u de eigenschappen Animate text van een effect:
- Pas het animatie‑effect toe of haal het op.
- Stel de eigenschap setBuildType(int value) in op de waarde BuildType.AsOneObject om de By Paragraphs‑animatiemodus uit te schakelen.
- Stel nieuwe waarden in voor de eigenschappen setAnimateTextType(int value) en setDelayBetweenTextParts(float value).
- Sla het gewijzigde PPTX‑bestand op.
Deze Java‑code demonstreert de bewerking:
// Instantieert een presentatieklasse die een presentatiedocument vertegenwoordigt.
Presentation pres = new Presentation("AnimTextBox_out.pptx");
try {
ISlide firstSlide = pres.getSlides().get_Item(0);
// Haalt het eerste effect van de hoofdreeks op
IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);
// Wijzigt het effecttekstanimatietype naar "As One Object"
firstEffect.getTextAnimation().setBuildType(BuildType.AsOneObject);
// Wijzigt het effect Animatietekst‑type naar "By word"
firstEffect.setAnimateTextType(AnimateTextType.ByWord);
// Stelt de vertraging tussen woorden in op 20% van de effectduur
firstEffect.setDelayBetweenTextParts(20f);
// Schrijft het PPTX‑bestand naar schijf
pres.save("AnimTextBox_AnimateText.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
FAQ
Hoe kan ik ervoor zorgen dat animaties behouden blijven bij het publiceren van de presentatie op het web?
Export to HTML5 en schakel de options in die verantwoordelijk zijn voor shape en transition animaties. Gewone HTML speelt geen dia‑animaties af, HTML5 wel.
Hoe beïnvloedt het wijzigen van de z‑order (laagvolgorde) van vormen de animatie?
Animatie‑ en tekenvolgorde zijn onafhankelijk: een effect bepaalt het tijdstip en type van verschijnen/verdwijnen, terwijl z-order bepaalt wat wat bedekt. Het zichtbare resultaat wordt bepaald door hun combinatie. (Dit is het algemene gedrag van PowerPoint; het Aspose.Slides‑model voor effecten‑en‑vormen volgt dezelfde logica.)
Zijn er beperkingen bij het converteren van animaties naar video voor bepaalde effecten?
In het algemeen worden animaties ondersteund, maar zeldzame gevallen of specifieke effecten kunnen anders worden gerenderd. Het wordt aangeraden de gebruikte effecten en de bibliotheekversie te testen.