Анимация Форм
Анимации — это визуальные эффекты, которые можно применять к текстам, изображениям, фигурам или диаграммам. Они оживляют презентации или их составные части.
Почему стоит использовать анимации в презентациях?
С помощью анимаций вы можете
- контролировать поток информации
- подчеркивать важные моменты
- увеличивать интерес или участие вашей аудитории
- облегчать восприятие или усвоение материала
- привлекать внимание ваших читателей или зрителей к важным частям презентации
PowerPoint предоставляет множество вариантов и инструментов для анимаций и эффектов анимации в категориях вход, выход, акцент и движущиеся пути.
Анимации в Aspose.Slides
- Aspose.Slides предоставляет классы и типы, необходимые для работы с анимациями в пространстве имен
Aspose.Slides.Animation
, - Aspose.Slides предоставляет более 150 эффектов анимации в перечислении EffectType. Эти эффекты по сути такие же (или эквивалентные), как и эффекты, используемые в PowerPoint.
Применить анимацию к TextBox
Aspose.Slides для PHP через Java позволяет вам применять анимацию к тексту в фигуре.
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте
rectangle
IAutoShape. - Добавьте текст к IAutoShape.TextFrame.
- Получите основную последовательность эффектов.
- Добавьте эффект анимации к IAutoShape.
- Установите свойство
TextAnimation.BuildType
в значение из перечисленияBuildType
. - Запишите презентацию на диск в виде файла PPTX.
Этот код PHP показывает, как применить эффект Fade
к AutoShape и установить анимацию текста на значение По 1-му уровню абзацев:
# Создает экземпляр класса презентации, представляющего файл презентации.
$pres = new Presentation();
try {
$sld = $pres->getSlides()->get_Item(0);
# Добавляет новую AutoShape с текстом
$autoShape = $sld->getShapes()->addAutoShape(ShapeType::Rectangle, 20, 20, 150, 100);
$textFrame = $autoShape->getTextFrame();
$textFrame->setText("Первый абзац \nВторой абзац \nТретий абзац");
# Получает основную последовательность слайда.
$sequence = $sld->getTimeline()->getMainSequence();
# Добавляет эффект анимации Fade к фигуре
$effect = $sequence->addEffect($autoShape, EffectType::Fade, EffectSubType::None, EffectTriggerType::OnClick);
# Анимирует текст фигуры по 1-му уровню абзацев
$effect->getTextAnimation()->setBuildType(BuildType::ByLevelParagraphs1);
# Сохраняет файл PPTX на диск
$pres->save($path . "AnimText_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Применить анимацию к PictureFrame
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте или получите PictureFrame на слайде.
- Получите основную последовательность эффектов.
- Добавьте эффект анимации к PictureFrame.
- Запишите презентацию на диск в виде файла PPTX.
Этот код PHP показывает, как применить эффект Fly
к рамке изображения:
# Создает экземпляр класса презентации, представляющего файл презентации.
$pres = new Presentation();
try {
# Загружает изображение, которое будет добавлено в коллекцию изображений презентации
$picture;
$image = Images->fromFile("aspose-logo.jpg");
try {
$picture = $pres->getImages()->addImage($image);
} finally {
if (!java_is_null($image)) {
$image->dispose();
}
}
# Добавляет рамку изображения на слайд
$picFrame = $pres->getSlides()->get_Item(0)->getShapes()->addPictureFrame(ShapeType::Rectangle, 50, 50, 100, 100, $picture);
# Получает основную последовательность слайда.
$sequence = $pres->getSlides()->get_Item(0)->getTimeline()->getMainSequence();
# Добавляет эффект анимации Fly излево к рамке изображения
$effect = $sequence->addEffect($picFrame, EffectType::Fly, EffectSubType::Left, EffectTriggerType::OnClick);
# Сохраняет файл PPTX на диск
$pres->save($path . "AnimImage_out.pptx", SaveFormat::Pptx);
} catch (JavaException $e) {
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Применить анимацию к фигуре
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте
rectangle
IAutoShape. - Добавьте
Bevel
IAutoShape (когда на этот объект щелкают, анимация воспроизводится). - Создайте последовательность эффектов на фигуре с закругленными краями.
- Создайте пользовательский
UserPath
. - Добавьте команды для перемещения по
UserPath
. - Запишите презентацию на диск в виде файла PPTX.
Этот код PHP показывает, как применить эффект PathFootball
(футбольная траектория) к фигуре:
# Создает экземпляр класса презентации, представляющего файл PPTX.
$pres = new Presentation();
try {
$sld = $pres->getSlides()->get_Item(0);
# Создает эффект PathFootball для существующей фигуры с нуля.
$ashp = $sld->getShapes()->addAutoShape(ShapeType::Rectangle, 150, 150, 250, 25);
$ashp->addTextFrame("Анимированный TextBox");
# Добавляет эффект анимации PathFootBall
$pres->getSlides()->get_Item(0)->getTimeline()->getMainSequence()->addEffect($ashp, EffectType::PathFootball, EffectSubType::None, EffectTriggerType::AfterPrevious);
# Создает своего рода "кнопку".
$shapeTrigger = $pres->getSlides()->get_Item(0)->getShapes()->addAutoShape(ShapeType::Bevel, 10, 10, 20, 20);
# Создает последовательность эффектов для этой кнопки.
$seqInter = $pres->getSlides()->get_Item(0)->getTimeline()->getInteractiveSequences()->add($shapeTrigger);
# Создает пользовательский путь. Наш объект будет перемещаться только после нажатия на кнопку.
$fxUserPath = $seqInter->addEffect($ashp, EffectType::PathUser, EffectSubType::None, EffectTriggerType::OnClick);
# Добавляет команды для перемещения, так как созданный путь пуст.
$motionBhv = $fxUserPath->getBehaviors()->get_Item(0);
$pts = new Point2DFloat[1];
$pts[0] = new Point2DFloat(0.076, 0.59);
$motionBhv->getPath()->add(MotionCommandPathType::LineTo, $pts, MotionPathPointsType::Auto, true);
$pts[0] = new Point2DFloat(-0.076, -0.59);
$motionBhv->getPath()->add(MotionCommandPathType::LineTo, $pts, MotionPathPointsType::Auto, false);
$motionBhv->getPath()->add(MotionCommandPathType::End, null, MotionPathPointsType::Auto, false);
# Записывает файл PPTX на диск
$pres->save("AnimExample_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Получить примененные эффекты анимации к фигуре
Вы можете решить узнать все эффекты анимации, примененные к одной фигуре.
Этот код PHP показывает, как получить все эффекты, примененные к конкретной фигуре:
# Создает экземпляр класса презентации, представляющего файл презентации.
$pres = new Presentation("AnimExample_out.pptx");
$Array = new java_class("java.lang.reflect.Array");
try {
$firstSlide = $pres->getSlides()->get_Item(0);
# Получает основную последовательность слайда.
$sequence = $firstSlide->getTimeline()->getMainSequence();
# Получает первую фигуру на слайде.
$shape = $firstSlide->getShapes()->get_Item(0);
# Получает все эффекты анимации, примененные к фигуре.
$shapeEffects = $sequence->getEffectsByShape($shape);
if (java_values($Array->getLength($shapeEffects)) > 0) {
echo("Фигура " . $shape->getName() . " имеет " . $Array->getLength($shapeEffects) . " эффекта анимации.");
}
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Изменить свойства времени эффекта анимации
Aspose.Slides для PHP через Java позволяет вам изменять временные свойства эффекта анимации.
Это панель времени анимации в Microsoft PowerPoint:
Вот соответствия между временем PowerPoint и свойствами Effect.Timing :
- Выпадающий список Начало времени PowerPoint соответствует свойству Effect.Timing.TriggerType .
- Продолжительность времени PowerPoint соответствует свойству Effect.Timing.Duration . Продолжительность анимации (в секундах) — это общее время, необходимое для завершения одного цикла анимации.
- Задержка времени PowerPoint соответствует свойству Effect.Timing.TriggerDelayTime .
Вот как вы изменить свойства времени эффекта:
- Примените или получите эффект анимации.
- Установите новые значения для необходимых вам свойств Effect.Timing .
- Сохраните измененный файл PPTX.
Этот код PHP демонстрирует операцию:
# Создает экземпляр класса презентации, представляющего файл презентации.
$pres = new Presentation("AnimExample_out.pptx");
try {
# Получает основную последовательность слайда.
$sequence = $pres->getSlides()->get_Item(0)->getTimeline()->getMainSequence();
# Получает первый эффект основной последовательности.
$effect = $sequence->get_Item(0);
# Изменяет TriggerType эффекта на "сначала после нажатия"
$effect->getTiming()->setTriggerType(EffectTriggerType::OnClick);
# Изменяет продолжительность эффекта
$effect->getTiming()->setDuration(3.0);
# Изменяет TriggerDelayTime эффекта
$effect->getTiming()->setTriggerDelayTime(0.5);
# Сохраняет файл PPTX на диск
$pres->save("AnimExample_changed.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Звук эффекта анимации
Aspose.Slides предоставляет следующие свойства, чтобы вы могли работать со звуками в эффектах анимации:
Добавить звук эффекта анимации
Этот код PHP показывает, как добавить звук к эффекту анимации и остановить его, когда начнется следующий эффект:
$pres = new Presentation("AnimExample_out.pptx");
try {
# Добавляет аудио в коллекцию аудиофайлов презентации
$Array = new JavaClass("java.lang.reflect.Array");
$Byte = (new JavaClass("java.lang.Byte"))->TYPE;
try {
$dis = new Java("java.io.DataInputStream", new Java("java.io.FileInputStream", "sampleaudio.wav"));
$bytes = $Array->newInstance($Byte, $dis->available());
$dis->readFully($bytes);
} finally {
if (!java_is_null($dis)) $dis->close();
}
$effectSound = $pres->getAudios()->addAudio($bytes);
$firstSlide = $pres->getSlides()->get_Item(0);
# Получает основную последовательность слайда.
$sequence = $firstSlide->getTimeline()->getMainSequence();
# Получает первый эффект основной последовательности
$firstEffect = $sequence->get_Item(0);
# Проверяет эффект на "Без звука"
if (java_is_null(!$firstEffect->getStopPreviousSound() && $firstEffect->getSound())) {
# Добавляет звук для первого эффекта
$firstEffect->setSound($effectSound);
}
# Получает первую интерактивную последовательность слайда.
$interactiveSequence = $firstSlide->getTimeline()->getInteractiveSequences()->get_Item(0);
# Устанавливает эффект "Остановить предыдущий звук"
$interactiveSequence->get_Item(0)->setStopPreviousSound(true);
# Записывает файл PPTX на диск
$pres->save("AnimExample_Sound_out.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Извлечь звук эффекта анимации
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Получите основную последовательность эффектов.
- Извлеките setSound(IAudio value) звук, встроенный в каждый эффект анимации.
Этот код PHP показывает, как извлечь звук, встроенный в эффект анимации:
# Создает экземпляр класса презентации, представляющего файл презентации.
$presentation = new Presentation("EffectSound.pptx");
try {
$slide = $presentation->getSlides()->get_Item(0);
# Получает основную последовательность слайда.
$sequence = $slide->getTimeline()->getMainSequence();
foreach($sequence as $effect) {
if (java_is_null($effect->getSound())) {
continue;
}
# Извлекает звук эффекта в массиве байтов
$audio = $effect->getSound()->getBinaryData();
}
} finally {
if (!java_is_null($presentation)) {
$presentation->dispose();
}
}
После анимации
Aspose.Slides для PHP через Java позволяет вам изменять свойства “После анимации” эффекта анимации.
Это панель эффектов анимации и расширенное меню в Microsoft PowerPoint:
Выпадающий список После анимации эффекта PowerPoint соответствует следующим свойствам:
- setAfterAnimationType(int value) свойство, которое описывает тип после анимации :
- PowerPoint Дополнительные цвета соответствует типу AfterAnimationType::Color ;
- Элемент списка PowerPoint Не затемнять соответствует типу AfterAnimationType::DoNotDim (тип по умолчанию после анимации);
- Элемент PowerPoint Скрыть после анимации соответствует типу AfterAnimationType::HideAfterAnimation ;
- Элемент PowerPoint Скрыть при следующем щелчке мышью соответствует типу AfterAnimationType::HideOnNextMouseClick ;
- setAfterAnimationColor(IColorFormat value) свойство, которое определяет цвет после эффектов анимации. Это свойство работает в сочетании с типом AfterAnimationType::Color . Если вы измените тип на другой, цвет после анимации будет очищен.
Этот код PHP показывает, как изменить эффект после анимации:
# Создает экземпляр класса презентации, представляющего файл презентации.
$pres = new Presentation("AnimImage_out.pptx");
try {
$firstSlide = $pres->getSlides()->get_Item(0);
# Получает первый эффект основной последовательности
$firstEffect = $firstSlide->getTimeline()->getMainSequence()->get_Item(0);
# Изменяет тип анимации после нажатия на цвет
$firstEffect->setAfterAnimationType(AfterAnimationType::Color);
# Устанавливает цвет затемнения после анимации
$firstEffect->getAfterAnimationColor()->setColor(java("java.awt.Color")->BLUE);
# Записывает файл PPTX на диск
$pres->save("AnimImage_AfterAnimation.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}
Анимировать текст
Aspose.Slides предоставляет следующие свойства, позволяющие вам работать с блоком Анимация текста эффекта анимации:
- setAnimateTextType(int value) , который описывает тип анимации текста эффекта. Текст фигуры может быть анимирован:
- Все сразу (AnimateTextType::AllAtOnce тип)
- По словам (AnimateTextType::ByWord тип)
- По буквам (AnimateTextType::ByLetter тип)
- setDelayBetweenTextParts(float value) задает задержку между анимированными частями текста (словами или буквами). Положительное значение указывает на процент от длительности эффекта. Отрицательное значение указывает задержку в секундах.
Вот как вы можете изменить свойства анимации текста эффекта:
- Примените или получите эффект анимации.
- Установите свойство setBuildType(int value) в значение BuildType::AsOneObject , чтобы отключить режим анимации По абзацам.
- Установите новые значения для свойств setAnimateTextType(int value) и setDelayBetweenTextParts(float value) .
- Сохраните измененный файл PPTX.
Этот код PHP демонстрирует операцию:
# Создает экземпляр класса презентации, представляющего файл презентации.
$pres = new Presentation("AnimTextBox_out.pptx");
try {
$firstSlide = $pres->getSlides()->get_Item(0);
# Получает первый эффект основной последовательности
$firstEffect = $firstSlide->getTimeline()->getMainSequence()->get_Item(0);
# Изменяет тип анимации текста эффекта на "Как один объект"
$firstEffect->getTextAnimation()->setBuildType(BuildType::AsOneObject);
# Изменяет тип анимации текста эффекта на "По словам"
$firstEffect->setAnimateTextType(AnimateTextType::ByWord);
# Устанавливает задержку между словами на 20% от длительности эффекта
$firstEffect->setDelayBetweenTextParts(20.0);
# Записывает файл PPTX на диск
$pres->save("AnimTextBox_AnimateText.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($pres)) {
$pres->dispose();
}
}