Diaátmenetek kezelése prezentációkban Java-val
Áttekintés
A diák áttűnései szabályozzák, hogyan jelennek meg a diák a diavetítés során. Az Aspose.Slides for Java segítségével minden diához kiválaszthat egy átmeneti hatást, beállíthatja a léptetést egérkattintással vagy időzítővel, és módosíthatja az adott hatáshoz tartozó beállításokat. Ez a cikk Java példákkal mutatja be az átmenetek alkalmazását, a pontos átmeneti időtartam megadását, a diák időzítésének kezelését, valamint egy Morph átmenet létrehozását két dia között. A példák azt is bemutatják, hogyan menthetők a beállítások PPTX fájlba.
Diaátmenet hozzáadása
Az átmenet alkalmazásához töltse be a prezentációt a Presentation osztállyal, és a dia átmeneti beállításaihoz férjen hozzá a getSlideShowTransition metóduson keresztül. Használja a setType metódust a TransitionType felsorolásból származó értékkel, majd mentse a prezentációt.
A következő példa Circle átmenetet alkalmaz az első diára és Comb átmenetet a másodikra. Használjon egy legalább két diát tartalmazó input.pptx fájlt.
import com.aspose.slides.*;
Presentation presentation = new Presentation("input.pptx");
try {
if (presentation.getSlides().size() >= 2) {
presentation.getSlides().get_Item(0).getSlideShowTransition().setType(TransitionType.Circle);
presentation.getSlides().get_Item(1).getSlideShowTransition().setType(TransitionType.Comb);
presentation.save("slide-transitions.pptx", SaveFormat.Pptx);
} else {
System.out.println("The input presentation must contain at least two slides.");
}
} finally {
presentation.dispose();
}
Haladó diaátmenet hozzáadása
Beállíthatja, hogy egy dia mennyi ideig marad a képernyőn, valamint hogy egérkattintás lépteti-e a diavetítést. A következő metódusok szabályozzák ezt a viselkedést:
- setAdvanceOnClick lehetővé teszi, hogy a néző egérkattintással léptessen.
- setAdvanceAfter engedélyezi az automatikus léptetést.
- setAdvanceAfterTime megadja az automatikus léptetés késleltetését ezredmásodpercben.
Engedélyezze mind a kattintás, mind az időzített léptetést, hogy a néző kattintással vagy a timerrel léphessen tovább. A csak időzítő használatához adjon át false értéket a setAdvanceOnClick metódusnak. A késleltetés azt szabályozza, mikor lép tovább a diavetítés; nem határozza meg a vizuális átmenet hatás időtartamát.
A következő példa különböző hatásokat rendel az első három diára, és automatikus léptetést engedélyez 3, 5 és 7 másodperc után. Egérkattintással is léphet ezeken a diákon. Használjon egy legalább három diát tartalmazó input.pptx fájlt.
import com.aspose.slides.*;
Presentation presentation = new Presentation("input.pptx");
try {
if (presentation.getSlides().size() >= 3) {
ISlideShowTransition firstTransition = presentation.getSlides().get_Item(0).getSlideShowTransition();
firstTransition.setType(TransitionType.Circle);
firstTransition.setAdvanceOnClick(true);
firstTransition.setAdvanceAfter(true);
firstTransition.setAdvanceAfterTime(3000);
ISlideShowTransition secondTransition = presentation.getSlides().get_Item(1).getSlideShowTransition();
secondTransition.setType(TransitionType.Comb);
secondTransition.setAdvanceOnClick(true);
secondTransition.setAdvanceAfter(true);
secondTransition.setAdvanceAfterTime(5000);
ISlideShowTransition thirdTransition = presentation.getSlides().get_Item(2).getSlideShowTransition();
thirdTransition.setType(TransitionType.Zoom);
thirdTransition.setAdvanceOnClick(true);
thirdTransition.setAdvanceAfter(true);
thirdTransition.setAdvanceAfterTime(7000);
presentation.save("advanced-transitions.pptx", SaveFormat.Pptx);
} else {
System.out.println("The input presentation must contain at least three slides.");
}
} finally {
presentation.dispose();
}
A timed léptetés engedélyezésének ellenőrzéséhez hívja a getAdvanceAfter metódust. A tárolt késleltetés önmagában nem jelzi, hogy az időzítő aktív.
A következő példa megnyitja a fent mentett fájlt, jelentést készít minden engedélyezett időzítőről, és letiltja az automatikus léptetést azoknál a diáknál, ahol a késleltetés több mint két másodperc. Engedélyezi a nézőknek az egérkattintást ezeken a diákon, majd elmenti a frissített beállításokat.
import com.aspose.slides.*;
Presentation presentation = new Presentation("advanced-transitions.pptx");
try {
for (ISlide slide : presentation.getSlides()) {
ISlideShowTransition transition = slide.getSlideShowTransition();
if (transition.getAdvanceAfter()) {
System.out.println("Slide " + slide.getSlideNumber() + ": advance after " + transition.getAdvanceAfterTime() + " ms.");
if (transition.getAdvanceAfterTime() > 2000) {
transition.setAdvanceAfter(false);
transition.setAdvanceOnClick(true);
}
}
}
presentation.save("adjusted-transitions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Az átmeneti időzítés pontos irányítása
A setDuration metódus segítségével adhatja meg az átmeneti hatás pontos hosszát ezredmásodpercben. A dia getSlideShowTransition metódusa ezen beállításokat a ISlideShowTransition interfészen keresztül teszi elérhetővé:
| Metódus | Leírás |
|---|---|
| setDuration | Beállítja magának az átmeneti hatás időtartamát ezredmásodpercben. |
| setAdvanceAfterTime | Beállítja az automatikus léptetés késleltetését ezredmásodpercben. A setAdvanceAfter metódus true értékével aktiválja az időzítőt. |
| setSpeed | Kiválaszt egy előre definiált sebességkategóriát a TransitionSpeed felsorolásból: Slow, Medium vagy Fast. Akkor használatos, ha nincs megadva pontos időtartam. |
[setDuration] csak az átmeneti hatást szabályozza; nem határozza meg, mennyi ideig látható a dia. Az automatikus léptetés késleltetését külön kell konfigurálni. Ha nincs explicit időtartam megadva, az Aspose.Slides az átmeneti típus és a getSpeed érték alapján számítja ki a hatás időtartamát.
Azonos időtartam alkalmazása minden diára
Az egységes tempó érdekében alkalmazzon ugyanazt a hatást és pontos időtartamot minden diára. Ez a példa betölti a input.pptx fájlt, a TransitionType közül a Fade értéket választja, és minden átmenetnek 750 ezredmásodperc időtartamot ad. Külön engedélyezi az automatikus léptetést 5 000 ezredmásodperc után, és letiltja az egérkattintásos léptetést, majd eredményt PPTX formátumban menti.
import com.aspose.slides.*;
Presentation presentation = new Presentation("input.pptx");
try {
for (ISlide slide : presentation.getSlides()) {
ISlideShowTransition transition = slide.getSlideShowTransition();
transition.setType(TransitionType.Fade);
transition.setDuration(750);
// Állítsa be az automatikus léptetést, az effektus időtartamától függetlenül.
transition.setAdvanceAfter(true);
transition.setAdvanceAfterTime(5000);
transition.setAdvanceOnClick(false);
}
presentation.save("precise-transitions.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Különböző időtartamok beállítása egyedi diákhoz
A különböző diák eltérő hatásidőket használhatnak. Például egy rövid átmenetet a címdiára, és hosszabb átmenetet egy szakasz bevezetőjére. Ez a példa 500 ezredmásodpercet állít be az első diára, és 1 200 ezredmásodpercet a másodikra. Használjon egy legalább két diát tartalmazó input.pptx fájlt.
import com.aspose.slides.*;
Presentation presentation = new Presentation("input.pptx");
try {
if (presentation.getSlides().size() >= 2) {
ISlideShowTransition firstTransition = presentation.getSlides().get_Item(0).getSlideShowTransition();
firstTransition.setType(TransitionType.Fade);
firstTransition.setDuration(500);
ISlideShowTransition secondTransition = presentation.getSlides().get_Item(1).getSlideShowTransition();
secondTransition.setType(TransitionType.Push);
secondTransition.setDuration(1200);
presentation.save("individual-transition-durations.pptx", SaveFormat.Pptx);
} else {
System.out.println("The input presentation must contain at least two slides.");
}
} finally {
presentation.dispose();
}
Az átmenetek koordinálása animált kimenettel
Animált GIF, HTML5 bemutató vagy videó előkészítésekor állítsa be a pontos átmeneti időtartamokat az exportálás előtt, hogy megfeleljenek a kívánt tempónak. Például 600 ezredmásodperces fade-t használjon a jelenetek között, és állítsa be minden dia léptetési késleltetését külön, hogy időt biztosítson a narrációnak vagy a tartalomnak. A GIF és videó esetében koordinálja a kimeneti képkockasebességet az effektus időtartamával: 600 ezredmásodperc 18 képkockának felel meg 30 fps-nél. HTML5-ben engedélyezze az animált átmeneteket az exportálási beállításokban. Ellenőrizze a választott exportformátum támogatott hatásait és időzítési beállításait, majd előnézete a kimenetnek a szinkronizáció ellenőrzéséhez.
Létező átmeneti időtartam beolvasása
Hívja a getDuration metódust az átmenet módosítása előtt, hogy megállapítsa, van-e explicit érték tárolva. A -1 érték azt jelenti, hogy nincs explicit időtartam megadva; egy nem negatív érték a tárolt időtartamot ezredmásodpercben adja meg. A be nem állított érték nem a számított lejátszási időtartam: az Aspose.Slides a átmeneti típus és a getSpeed érték alapján határozza meg azt. Egy átmeneti típus beállítása inicializálhat egy időtartamot, ezért először ellenőrizze az eredeti beállításokat.
import com.aspose.slides.*;
Presentation presentation = new Presentation("input.pptx");
try {
for (ISlide slide : presentation.getSlides()) {
ISlideShowTransition transition = slide.getSlideShowTransition();
int duration = transition.getDuration();
if (duration >= 0) {
System.out.println("Slide " + slide.getSlideNumber() + ": stored transition duration is " + duration + " ms.");
} else {
System.out.println("Slide " + slide.getSlideNumber() + ": no explicit duration; timing depends on transition type " + transition.getType() + " and speed " + transition.getSpeed() + ".");
}
}
} finally {
presentation.dispose();
}
Morph átmenet
A Morph átmenet animálja az egymást követő diákon lévő objektumok közötti változásokat. Egy egyszerű Morph hatás létrehozásához klónozzon egy diát, mozdítsa vagy méretezze át egy objektumot a klónon, majd alkalmazza a Morph átmenetet a második diára. Így a megfelelő objektumok animálódnak az eredeti és a módosított állapot között.
A következő példa egy szöveges téglalappal ellátott diát hoz létre, klónozza a diát, majd a klónon módosítja a téglalap pozícióját és méretét. Ezután a második diához a TransitionType felsorolásból a Morph-ot választja. Nyissa meg a mentett fájlt egy Morph-ot támogató prezentációs nézőben, hogy lássa az effektust a diavetítés alatt.
import com.aspose.slides.*;
Presentation presentation = new Presentation();
try {
ISlide firstSlide = presentation.getSlides().get_Item(0);
IAutoShape rectangle = firstSlide.getShapes().addAutoShape(ShapeType.Rectangle, 100, 100, 400, 100);
rectangle.getTextFrame().setText("Morph transition");
ISlide secondSlide = presentation.getSlides().addClone(firstSlide);
IShape movedRectangle = secondSlide.getShapes().get_Item(0);
movedRectangle.setX(movedRectangle.getX() + 100);
movedRectangle.setY(movedRectangle.getY() + 50);
movedRectangle.setWidth(movedRectangle.getWidth() - 200);
movedRectangle.setHeight(movedRectangle.getHeight() - 10);
secondSlide.getSlideShowTransition().setType(TransitionType.Morph);
presentation.save("morph-transition.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Morph átmenet típusok
A TransitionMorphType felsorolás szabályozza, hogyan párosítja és animálja a Morph a tartalmat:
- ByObject minden alakzatot egy egységes objektumnak tekint.
- ByWord szöveget animál a szavak egyeztetése alapján, ha lehetséges.
- ByChar szöveget animál a karakterek egyeztetése alapján, ha lehetséges.
Használja a setType metódust a Morph kiválasztásához, mielőtt a getValue metódust hívná. Az így kapott érték a IMorphTransition interfészt adja, amelynek a setMorphType metódusa választja ki a párosítási módot.
Ez a példa megnyitja az előző szakaszban létrehozott prezentációt, és a második diát úgy konfigurálja, hogy szóalapú Morph animációt használjon.
import com.aspose.slides.*;
Presentation presentation = new Presentation("morph-transition.pptx");
try {
if (presentation.getSlides().size() >= 2) {
ISlideShowTransition transition = presentation.getSlides().get_Item(1).getSlideShowTransition();
transition.setType(TransitionType.Morph);
ITransitionValueBase transitionValue = transition.getValue();
if (transitionValue instanceof IMorphTransition) {
IMorphTransition morphTransition = (IMorphTransition) transitionValue;
morphTransition.setMorphType(TransitionMorphType.ByWord);
presentation.save("morph-by-word.pptx", SaveFormat.Pptx);
} else {
System.out.println("Morph transition options are unavailable.");
}
} else {
System.out.println("The input presentation must contain at least two slides.");
}
} finally {
presentation.dispose();
}
Átmeneti hatások beállítása
Egyes átmenetek további beállítási lehetőségeket kínálnak, például irányt vagy azt, hogy a hatás fekete képernyőről indul-e. Az elérhető opciók a setType metódussal kiválasztott átmenettől függnek. Először állítsa be a típust, majd a getValue metódusból kapott megfelelő interfészt használja.
A következő példa a input.pptx első diájára Cut átmenetet alkalmaz. A setFromBlack metódust az IOptionalBlackTransition interfészen keresztül hívja, hogy az átmenet fekete képernyőről induljon.
import com.aspose.slides.*;
Presentation presentation = new Presentation("input.pptx");
try {
ISlideShowTransition transition = presentation.getSlides().get_Item(0).getSlideShowTransition();
transition.setType(TransitionType.Cut);
ITransitionValueBase transitionValue = transition.getValue();
if (transitionValue instanceof IOptionalBlackTransition) {
IOptionalBlackTransition cutTransition = (IOptionalBlackTransition) transitionValue;
cutTransition.setFromBlack(true);
presentation.save("cut-from-black.pptx", SaveFormat.Pptx);
} else {
System.out.println("Cut transition options are unavailable.");
}
} finally {
presentation.dispose();
}
FAQ
Le tudom-e szabályozni egy diaátmenet lejátszási sebességét?
Igen. Ha pontos hatásidőt kell megadni ezredmásodpercben, használja a setDuration metódust. Ha egy előre definiált TransitionSpeed kategória – Slow, Medium vagy Fast – elegendő, és nincs explicit időtartam megadva, használja a setSpeed metódust. Ezek a beállítások az átmeneti hatást szabályozzák, függetlenül az automatikus léptetés késleltetésétől.
Csatolhatok hangot egy átmenethez, és ismételhetem?
Igen. Beágyazott hangot a setSound metódussal rendelhet, a TransitionSoundMode felsorolásból a StartSound értéket adja a setSoundMode metódusnak, és a setSoundLoop metódust true-val engedélyezi. A hang addig ismétlődik, amíg a diavetítésben a következő hangesemény meg nem jelenik.
Mi a leggyorsabb módja annak, hogy ugyanazt az átmenetet alkalmazzam minden diára?
Iteráljon a prezentáció getSlides gyűjteményén, és hívja a setType metódust ugyanazzal az értékkel minden dia átmenetéhez. Állítsa be a időzítési és effektus beállításokat ugyanabban a ciklusban, hogy a viselkedés minden dián konzisztens legyen.
Hogyan ellenőrizhetem, hogy melyik átmenet van jelenleg beállítva egy dián?
Hívja a getType metódust a dia getSlideShowTransition eredményén. A metódus a TransitionType felsorolás egy értékét adja vissza; a None azt jelenti, hogy nincs átmeneti hatás alkalmazva.