Diaátmenetek kezelése prezentációkban PHP használatával

Áttekintés

A diaátmenetek szabályozzák, hogyan jelennek meg a diák a diavetítés során. Az Aspose.Slides for PHP via Java segítségével minden dia számára kiválaszthat egy átmeneti effektust, beállíthatja a továbbhaladást egérkattintással vagy időzítővel, és módosíthatja az effektusra jellemző beállításokat. Ez a cikk PHP példákat használ az átmenetek alkalmazására, az átmenetek pontos időtartamának beállítására, a dia időzítésének kezelésére, valamint két dia közötti Morph átmenet létrehozására. A példák 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 érje el a dia átmeneti beállításait a getSlideShowTransition segítségével. Használja a setType metódust egy értékkel a TransitionType felsoroltából, majd mentse a prezentációt.

Az alábbi példa egy Circle átmenetet alkalmaz az első diára és egy Comb átmenetet a másodikra. Használjon egy input.pptx fájlt, amely legalább két diát tartalmaz.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\TransitionType;

$presentation = new Presentation("input.pptx");
try {
    if (java_values($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 {
        echo "The input presentation must contain at least two slides." . PHP_EOL;
    }
} finally {
    $presentation->dispose();
}

Haladó diaátmenet hozzáadása

Beállíthatja, mennyi ideig marad a dia a képernyőn, és hogy egérkattintás vagy időzítő léptesse-e a diavetítést. A következő metódusok szabályozzák ezt a viselkedést:

Engedélyezze mindkét, a kattintást és az időzítést, hogy a néző kattintással vagy a várakozással léphessen tovább. Ha csak az időzítőt szeretné használni, adja át a false értéket a setAdvanceOnClick metódusnak. A késleltetés határozza meg, mikor lép tovább a diavetítés; nem a vizuális átmeneti effektus időtartamát állítja be.

Ez a példa három első diára különböző effektusokat rendel, és 3, 5, illetve 7 másodperc után automatikusan előrehaladást engedélyez. Az egérkattintás is előreléphet ezeken a diákon. Használjon egy input.pptx fájlt, amely legalább három diát tartalmaz.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\TransitionType;

$presentation = new Presentation("input.pptx");
try {
    if (java_values($presentation->getSlides()->size()) >= 3) {
        $firstTransition = $presentation->getSlides()->get_Item(0)->getSlideShowTransition();
        $firstTransition->setType(TransitionType::Circle);
        $firstTransition->setAdvanceOnClick(true);
        $firstTransition->setAdvanceAfter(true);
        $firstTransition->setAdvanceAfterTime(3000);

        $secondTransition = $presentation->getSlides()->get_Item(1)->getSlideShowTransition();
        $secondTransition->setType(TransitionType::Comb);
        $secondTransition->setAdvanceOnClick(true);
        $secondTransition->setAdvanceAfter(true);
        $secondTransition->setAdvanceAfterTime(5000);

        $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 {
        echo "The input presentation must contain at least three slides." . PHP_EOL;
    }
} finally {
    $presentation->dispose();
}

Annak ellenőrzéséhez, hogy az időzített előrehaladás engedélyezve van-e, hívja a getAdvanceAfter metódust. Egy tárolt késleltetés önmagában nem jelzi, hogy a timer aktív.

A következő példa megnyitja a fent mentett fájlt, jelentéseket készít minden engedélyezett időzítőről, és letiltja az automatikus előrehaladást azokra a diákra, amelyek késleltetése több mint két másodperc. Ezekhez a diákhoz engedélyezi az egérkattintást, majd menti a frissített beállításokat.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation("advanced-transitions.pptx");
try {
    for ($slideIndex = 0; $slideIndex < java_values($presentation->getSlides()->size()); $slideIndex++) {
        $slide = $presentation->getSlides()->get_Item($slideIndex);
        $transition = $slide->getSlideShowTransition();

        if (java_values($transition->getAdvanceAfter())) {
            echo "Slide " . java_values($slide->getSlideNumber()) . ": advance after " . java_values($transition->getAdvanceAfterTime()) . " ms." . PHP_EOL;

            if (java_values($transition->getAdvanceAfterTime()) > 2000) {
                $transition->setAdvanceAfter(false);
                $transition->setAdvanceOnClick(true);
            }
        }
    }

    $presentation->save("adjusted-transitions.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Az átmenet időzítésének pontos szabályozása

Használja a setDuration metódust egy átmeneti effektus pontos hosszának (milliszekundumban) megadásához. A dia getSlideShowTransition metódusa ezeket a beállításokat a SlideShowTransition objektumon keresztül teszi elérhetővé:

Módszer Cél
setDuration Beállítja az átmeneti effektus időtartamát milliszekundumban.
setAdvanceAfterTime Beállítja a késleltetést, mielőtt a dia automatikusan továbbhalad, milliszekundumban. Állítsa true-ra a setAdvanceAfter hívásával a timer aktiválásához.
setSpeed Kiválaszt egy előre definiált sebesség kategóriát a TransitionSpeed enumból: Slow, Medium vagy Fast. Akkor használatos, ha nincs megadva pontos időtartam.

A setDuration csak az átmeneti effektust szabályozza; nem határozza meg, mennyi ideig látható a dia. Az automatikus előrehaladási késleltetést külön kell beállítani. Ha nincs expliciten meghatározott időtartam, az Aspose.Slides a átmenet típusából és a getSpeed értékből számolja ki a hatás időtartamát.

Azonos időtartam alkalmazása minden diára

Az egységes ritmus érdekében alkalmazzon ugyanazt az effektust és ugyanazt a pontos időtartamot minden diára. Ez a példa betölti a input.pptx fájlt, a TransitionType enumerációból a Fade‑t választja, és minden átmenetnek 750 milliszekundumos időtartamot ad. Külön engedélyezi az automatikus előrehaladást 5 000 milliszekundum után, és letiltja az egérkattintással történő előrehaladást, majd menti az eredményt PPTX‑ként.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\TransitionType;

$presentation = new Presentation("input.pptx");
try {
    for ($slideIndex = 0; $slideIndex < java_values($presentation->getSlides()->size()); $slideIndex++) {
        $slide = $presentation->getSlides()->get_Item($slideIndex);
        $transition = $slide->getSlideShowTransition();
        $transition->setType(TransitionType::Fade);
        $transition->setDuration(750);

        // Állítsa be az automatikus előrehaladá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();
}

Eltérő időtartamok beállítása egyedi diákhoz

Különböző diák különböző effektus időtartamokat használhatnak. Például egy címdia rövid átmenetet, egy szekcióbevezető dia pedig hosszabb átmenetet kaphat. Ez a példa 500 milliszekundumot állít be az első diára és 1 200 milliszekundumot a másodikra. Használjon egy input.pptx fájlt, amely legalább két diát tartalmaz.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\TransitionType;

$presentation = new Presentation("input.pptx");
try {
    if (java_values($presentation->getSlides()->size()) >= 2) {
        $firstTransition = $presentation->getSlides()->get_Item(0)->getSlideShowTransition();
        $firstTransition->setType(TransitionType::Fade);
        $firstTransition->setDuration(500);

        $secondTransition = $presentation->getSlides()->get_Item(1)->getSlideShowTransition();
        $secondTransition->setType(TransitionType::Push);
        $secondTransition->setDuration(1200);

        $presentation->save("individual-transition-durations.pptx", SaveFormat::Pptx);
    } else {
        echo "The input presentation must contain at least two slides." . PHP_EOL;
    }
} finally {
    $presentation->dispose();
}

Átmenetek összehangolása animált kimenettel

Animált GIF‑hez /slides/hu/php-java/convert-powerpoint-to-animated-gif/, HTML5‑ös prezentációhoz /slides/hu/php-java/export-to-html5/ vagy videóhoz /slides/hu/php-java/convert-powerpoint-to-video/ exportáláskor állítsa be a pontos átmeneti időtartamokat, hogy a kívánt ritmust elérje. Például használjon 600 milliszekundumos elhalványulást a jelenetek között, és külön állítsa be minden dia előrehaladási késleltetését, hogy elegendő idő legyen a narrációra vagy a tartalomra.

GIF‑ és videó esetén koordinálja a kimeneti képkockasebességet az effektus időtartamával: 600 milliszekundum 30 fps‑nél 18 képkockának felel meg. HTML5‑ben engedélyezze az animált átmeneteket az exportálási beállításokban. Ellenőrizze a választott exportformátum által támogatott effektusokat és időzítési lehetőségeket, majd tekintse meg az előnézetet a szinkronizáció ellenőrzéséhez.

Meglévő átmeneti időtartam kiolvasása

Módosítás előtt hívja a getDuration metódust, hogy megállapítsa, tárolva van-e explicit érték. A -1 érték azt jelenti, hogy nincs explicit időtartam beállítva; egy nem negatív érték a tárolt időtartamot adja vissza milliszekundumban. A nem beállított érték nem a lejátszási idő, mivel az Aspose.Slides a átmenet típusából és a getSpeed értékből számítja ki. Egy átmenet típus beállítása inicializálhat egy időtartamot, ezért először ellenőrizze az eredeti beállításokat.

use aspose\slides\Presentation;

$presentation = new Presentation("input.pptx");
try {
    for ($slideIndex = 0; $slideIndex < java_values($presentation->getSlides()->size()); $slideIndex++) {
        $slide = $presentation->getSlides()->get_Item($slideIndex);
        $transition = $slide->getSlideShowTransition();
        $duration = java_values($transition->getDuration());

        if ($duration >= 0) {
            echo "Slide " . java_values($slide->getSlideNumber()) . ": stored transition duration is " . $duration . " ms." . PHP_EOL;
        } else {
            echo "Slide " . java_values($slide->getSlideNumber()) . ": no explicit duration; timing depends on transition type " . java_values($transition->getType()) . " and speed " . java_values($transition->getSpeed()) . "." . PHP_EOL;
        }
    }
} finally {
    $presentation->dispose();
}

Morph átmenet

A Morph átmenet animálja az objektumok változásait egymást követő diák között. Egy egyszerű Morph hatás létrehozásához klónozzon egy diát, mozdítsa vagy méretezze át az objektumot a klónon, és alkalmazza a Morph átmenetet a második diára. Így a megfelelő objektumok animálódnak az eredeti és a módosított állapotuk között.

Az alábbi példa egy szövegdobozt tartalmazó diát hoz létre, klónozza a diát, majd a klónon megváltoztatja a doboz pozícióját és méretét. Ezután a TransitionType enumerációból a Morph‑ot választja ki a második diára. Nyissa meg a mentett fájlt egy Morph‑ot támogató prezentációs nézőben, hogy lássa a hatást a diavetítés során.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\ShapeType;
use aspose\slides\TransitionType;

$presentation = new Presentation();
try {
    $firstSlide = $presentation->getSlides()->get_Item(0);
    $rectangle = $firstSlide->getShapes()->addAutoShape(ShapeType::Rectangle, 100, 100, 400, 100);
    $rectangle->getTextFrame()->setText("Morph transition");

    $secondSlide = $presentation->getSlides()->addClone($firstSlide);
    $movedRectangle = $secondSlide->getShapes()->get_Item(0);
    $movedRectangle->setX(java_values($movedRectangle->getX()) + 100);
    $movedRectangle->setY(java_values($movedRectangle->getY()) + 50);
    $movedRectangle->setWidth(java_values($movedRectangle->getWidth()) - 200);
    $movedRectangle->setHeight(java_values($movedRectangle->getHeight()) - 10);

    $secondSlide->getSlideShowTransition()->setType(TransitionType::Morph);

    $presentation->save("morph-transition.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Morph átmenet típusok

A TransitionMorphType enumeráció szabályozza, hogyan párosítja és animálja a Morph a tartalmat:

  • ByObject minden alakzatot egy egész objektumként kezel.
  • ByWord a szöveget szavak alapján animálja, ahol lehetséges.
  • ByChar a szöveget karakterek alapján animálja, ahol lehetséges.

Használja a setType metódust a Morph kiválasztásához, mielőtt a getValue meghívásra kerülne. A visszakapott érték egy MorphTransition objektum, 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ára szavak alapján történő Morph animációt állít be.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\TransitionMorphType;
use aspose\slides\TransitionType;

$presentation = new Presentation("morph-transition.pptx");
try {
    if (java_values($presentation->getSlides()->size()) >= 2) {
        $transition = $presentation->getSlides()->get_Item(1)->getSlideShowTransition();
        $transition->setType(TransitionType::Morph);
        $morphTransition = $transition->getValue();

        if (!java_is_null($morphTransition)) {
            $morphTransition->setMorphType(TransitionMorphType::ByWord);
            $presentation->save("morph-by-word.pptx", SaveFormat::Pptx);
        } else {
            echo "Morph transition options are unavailable." . PHP_EOL;
        }
    } else {
        echo "The input presentation must contain at least two slides." . PHP_EOL;
    }
} finally {
    $presentation->dispose();
}

Átmeneti effektusok beállítása

Néhány átmenet további lehetőségeket tesz elérhetővé, 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 által kiválasztott átmenettől függnek. Előbb állítsa be a típust, majd használja a megfelelő átmenet objektumot a getValue metódusból.

Az alábbi példa egy Cut átmenetet alkalmaz az input.pptx első diájára. A OptionalBlackTransition setFromBlack metódusát hívja meg, így az átmenet fekete képernyőről indul.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
use aspose\slides\TransitionType;

$presentation = new Presentation("input.pptx");
try {
    $transition = $presentation->getSlides()->get_Item(0)->getSlideShowTransition();
    $transition->setType(TransitionType::Cut);
    $cutTransition = $transition->getValue();

    if (!java_is_null($cutTransition)) {
        $cutTransition->setFromBlack(true);
        $presentation->save("cut-from-black.pptx", SaveFormat::Pptx);
    } else {
        echo "Cut transition options are unavailable." . PHP_EOL;
    }
} finally {
    $presentation->dispose();
}

GYIK

Vezérelhetem-e a diaátmenet lejátszási sebességét?

Igen. Használja a setDuration metódust, ha pontos effektus időtartamot (milliszekundumban) kell megadnia. Használja a setSpeed metódust, ha egy előre definiált TransitionSpeed kategória (Slow, Medium vagy Fast) elegendő, és nincs explicit időtartam beállítva. Ezek a beállítások az átmeneti effektust szabályozzák az automatikus előrehaladási késleltetéstől függetlenül.

Csatolhatok-e hangot egy átmenethez és ismételhetem-e?

Igen. Rendeljen beágyazott hangot a setSound metódussal, adj át a TransitionSoundMode enumerációból a StartSound értéket a setSoundMode metódusnak, és engedélyezze a setSoundLoop metódussal a true értéket. A hang addig ismétlődik, amíg a diavetítésben a következő hangesemény nem következik be.

Mi a leggyorsabb módja annak, hogy ugyanazt az átmenetet alkalmazzam minden dián?

Iteráljon végig a prezentáció getSlides gyűjteményén, és minden dia átmenetén hívja meg a setType metódust ugyanazzal az értékkel. Állítson be minden időzítési és effektus opciót ugyanabban a ciklusban, hogy a viselkedés konzisztens maradjon a diák között.

Hogyan ellenőrizhetem, hogy melyik átmenet van beállítva egy dián?

Hívja meg a getType metódust a dia getSlideShowTransition eredményén. Ez egy értéket ad vissza a TransitionType enumerációból; a None azt jelenti, hogy nincs alkalmazva átmeneti effektus.