Анимация форм
Анимации — это визуальные эффекты, которые можно применять к текстам, изображениям, формам или диаграммам. Они придают жизнь презентациям или их элементам.
Почему стоит использовать анимации в презентациях?
С помощью анимаций вы можете
- контролировать поток информации
- подчеркивать важные моменты
- увеличить интерес или участие вашей аудитории
- упростить чтение, усвоение или обработку контента
- привлекать внимание ваших читателей или зрителей к важным частям презентации
PowerPoint предоставляет множество вариантов и инструментов для анимаций и анимационных эффектов в категориях вход, выход, подчеркивание и попутные пути.
Анимации в Aspose.Slides
- Aspose.Slides предоставляет классы и типы, необходимые для работы с анимациями в пространстве имен
Aspose.Slides.Animation
, - Aspose.Slides предоставляет более 150 анимационных эффектов в перечислении EffectType. Эти эффекты по сути такие же (или эквивалентные) как эффекты, используемые в PowerPoint.
Применить анимацию к текстовому полю
Aspose.Slides для Java позволяет вам применять анимацию к тексту в форме.
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте
прямоугольник
IAutoShape. - Добавьте текст в IAutoShape.TextFrame.
- Получите основную последовательность эффектов.
- Добавьте анимационный эффект к IAutoShape.
- Установите свойство
TextAnimation.BuildType
на значение из перечисленияBuildType
. - Запишите презентацию на диск в виде файла PPTX.
Этот Java-код показывает, как применить эффект Скрытие
к AutoShape и установить анимацию текста на значение По 1-му уровню абзацев:
// Создает экземпляр класса презентации, который представляет файл презентации.
Presentation pres = new Presentation();
try {
ISlide sld = pres.getSlides().get_Item(0);
// Добавляет новую AutoShape с текстом
IAutoShape autoShape = sld.getShapes().addAutoShape(ShapeType.Rectangle, 20, 20, 150, 100);
ITextFrame textFrame = autoShape.getTextFrame();
textFrame.setText("Первый абзац \nВторой абзац \nТретий абзац");
// Получает основную последовательность слайда.
ISequence sequence = sld.getTimeline().getMainSequence();
// Добавляет эффект анимации Скрытие к форме
IEffect 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 (pres != null) pres.dispose();
}
Применить анимацию к PictureFrame
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте или получите PictureFrame на слайде.
- Получите основную последовательность эффектов.
- Добавьте анимационный эффект к PictureFrame.
- Запишите презентацию на диск в виде файла PPTX.
Этот Java-код показывает, как применить эффект Лететь
к рамке изображения:
// Создает экземпляр класса презентации, который представляет файл презентации.
Presentation pres = new Presentation();
try {
// Загружает изображение для добавления в коллекцию изображений презентации
IPPImage picture;
IImage image = Images.fromFile("aspose-logo.jpg");
try {
picture = pres.getImages().addImage(image);
} finally {
if (image != null) image.dispose();
}
// Добавляет рамку изображения на слайд
IPictureFrame picFrame = pres.getSlides().get_Item(0).getShapes().addPictureFrame(ShapeType.Rectangle, 50, 50, 100, 100, picture);
// Получает основную последовательность слайда.
ISequence sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();
// Добавляет эффект анимации Лететь слева к рамке изображения
IEffect effect = sequence.addEffect(picFrame, EffectType.Fly, EffectSubtype.Left, EffectTriggerType.OnClick);
// Сохраняет файл PPTX на диск
pres.save(path + "AnimImage_out.pptx", SaveFormat.Pptx);
} catch(IOException e) {
} finally {
if (pres != null) pres.dispose();
}
Применить анимацию к форме
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд по его индексу.
- Добавьте
прямоугольник
IAutoShape. - Добавьте
Bevel
IAutoShape (когда на этот объект нажимают, анимация воспроизводится). - Создайте последовательность эффектов на форме с закругленными углами.
- Создайте пользовательский
UserPath
. - Добавьте команды для перемещения к
UserPath
. - Запишите презентацию на диск в виде файла PPTX.
Этот Java-код показывает, как применить эффект PathFootball
(путь футбольного мяча) к форме:
// Создает экземпляр класса Presentation, который представляет файл PPTX.
Presentation pres = new Presentation();
try {
ISlide sld = pres.getSlides().get_Item(0);
// Создает эффект PathFootball для существующей формы с нуля.
IAutoShape ashp = sld.getShapes().addAutoShape(ShapeType.Rectangle, 150, 150, 250, 25);
ashp.addTextFrame("Анимированный текстовое поле");
// Добавляет эффект анимации PathFootBall
pres.getSlides().get_Item(0).getTimeline().getMainSequence().addEffect(ashp, EffectType.PathFootball,
EffectSubtype.None, EffectTriggerType.AfterPrevious);
// Создает некий "кнопку".
IShape shapeTrigger = pres.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Bevel, 10, 10, 20, 20);
// Создает последовательность эффектов для этой кнопки.
ISequence seqInter = pres.getSlides().get_Item(0).getTimeline().getInteractiveSequences().add(shapeTrigger);
// Создает пользовательский путь. Наш объект будет перемещаться только после нажатия кнопки.
IEffect fxUserPath = seqInter.addEffect(ashp, EffectType.PathUser, EffectSubtype.None, EffectTriggerType.OnClick);
// Добавляет команды для перемещения, так как созданный путь пуст.
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);
// Записывает файл PPTX на диск
pres.save("AnimExample_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Получить анимационные эффекты, примененные к форме
Вы можете узнать все анимационные эффекты, примененные к определенной форме.
Этот Java-код показывает, как получить все эффекты, примененные к конкретной форме:
// Создает экземпляр класса презентации, который представляет файл презентации.
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
ISlide firstSlide = pres.getSlides().get_Item(0);
// Получает основную последовательность слайда.
ISequence sequence = firstSlide.getTimeline().getMainSequence();
// Получает первую форму на слайде.
IShape shape = firstSlide.getShapes().get_Item(0);
// Получает все анимационные эффекты, примененные к форме.
IEffect[] shapeEffects = sequence.getEffectsByShape(shape);
if (shapeEffects.length > 0)
System.out.println("У формы " + shape.getName() + " есть " + shapeEffects.length + " анимационных эффекта.");
} finally {
if (pres != null) pres.dispose();
}
Изменение свойств времени анимационного эффекта
Aspose.Slides для Java позволяет изменять свойства времени анимационного эффекта.
Это панель времени анимации в Microsoft PowerPoint:
Вот соответствия между временем PowerPoint и свойствами Effect.Timing :
- Выпадающий список времени PowerPoint Начало соответствует свойству Effect.Timing.TriggerType .
- Время PowerPoint Длительность соответствует свойству Effect.Timing.Duration . Длительность анимации (в секундах) — это общее время, необходимое для завершения одного цикла анимации.
- Время PowerPoint Задержка соответствует свойству Effect.Timing.TriggerDelayTime .
Вот как изменить свойства времени эффекта:
- Примените или получите анимационный эффект.
- Установите новые значения для нужных вам свойств Effect.Timing .
- Сохраните измененный файл PPTX.
Этот Java-код демонстрирует операцию:
// Создает экземпляр класса презентации, который представляет файл презентации.
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
// Получает основную последовательность слайда.
ISequence sequence = pres.getSlides().get_Item(0).getTimeline().getMainSequence();
// Получает первый эффект основной последовательности.
IEffect effect = sequence.get_Item(0);
// Изменяет тип триггера эффекта, чтобы он начинался по щелчку
effect.getTiming().setTriggerType(EffectTriggerType.OnClick);
// Изменяет длительность эффекта
effect.getTiming().setDuration(3f);
// Изменяет время задержки триггера эффекта
effect.getTiming().setTriggerDelayTime(0.5f);
// Сохраняет файл PPTX на диск
pres.save("AnimExample_changed.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Звук анимационного эффекта
Aspose.Slides предоставляет эти свойства, чтобы позволить вам работать со звуками в анимационных эффектах:
Добавить звук анимационного эффекта
Этот Java-код показывает, как добавить звук анимационного эффекта и остановить его, когда начинается следующий эффект:
Presentation pres = new Presentation("AnimExample_out.pptx");
try {
// Добавляет аудио в коллекцию аудио презентации
IAudio effectSound = pres.getAudios().addAudio(Files.readAllBytes(Paths.get("sampleaudio.wav")));
ISlide firstSlide = pres.getSlides().get_Item(0);
// Получает основную последовательность слайда.
ISequence sequence = firstSlide.getTimeline().getMainSequence();
// Получает первый эффект основной последовательности
IEffect firstEffect = sequence.get_Item(0);
// Проверяет эффект на "Нет звука"
if (!firstEffect.getStopPreviousSound() && firstEffect.getSound() == null)
{
// Добавляет звук к первому эффекту
firstEffect.setSound(effectSound);
}
// Получает первую интерактивную последовательность слайда.
ISequence interactiveSequence = firstSlide.getTimeline().getInteractiveSequences().get_Item(0);
// Устанавливает флаг эффекта "Остановить предыдущий звук"
interactiveSequence.get_Item(0).setStopPreviousSound(true);
// Записывает файл PPTX на диск
pres.save("AnimExample_Sound_out.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}
Извлечь звук анимационного эффекта
- Создайте экземпляр класса Presentation .
- Получите ссылку на слайд по его индексу.
- Получите основную последовательность эффектов.
- Извлеките setSound(IAudio value) , встроенный в каждый анимационный эффект.
Этот Java-код показывает, как извлечь звук, встроенный в анимационный эффект:
// Создает экземпляр класса презентации, который представляет файл презентации.
Presentation presentation = new Presentation("EffectSound.pptx");
try {
ISlide slide = presentation.getSlides().get_Item(0);
// Получает основную последовательность слайда.
ISequence sequence = slide.getTimeline().getMainSequence();
for (IEffect effect : sequence)
{
if (effect.getSound() == null)
continue;
// Извлекает звук эффекта в виде байтового массива
byte[] audio = effect.getSound().getBinaryData();
}
} finally {
if (presentation != null) presentation.dispose();
}
После анимации
Aspose.Slides для Java позволяет изменять свойство после анимации анимационного эффекта.
Это панель анимационных эффектов и расширенное меню в Microsoft PowerPoint:
Выпадающий список После анимации в PowerPoint соответствует следующим свойствам:
- setAfterAnimationType(int value) свойству, которое описывает тип после анимации:
- PowerPoint Дополнительные цвета соответствует типу AfterAnimationType.Color ;
- Элемент списка PowerPoint Не затуманивать соответствует типу AfterAnimationType.DoNotDim (тип после анимации по умолчанию);
- Элемент PowerPoint Скрыть после анимации соответствует типу AfterAnimationType.HideAfterAnimation ;
- Элемент PowerPoint Скрыть при следующем щелчке мыши соответствует типу AfterAnimationType.HideOnNextMouseClick ;
- setAfterAnimationColor(IColorFormat value) свойству, которое определяет формат цвета после анимации. Это свойство работает совместно с типом AfterAnimationType.Color . Если вы измените тип на другой, цвет после анимации будет очищен.
Этот Java-код показывает, как изменить эффект после анимации:
// Создает экземпляр класса презентации, который представляет файл презентации
Presentation pres = new Presentation("AnimImage_out.pptx");
try {
ISlide firstSlide = pres.getSlides().get_Item(0);
// Получает первый эффект основной последовательности
IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);
// Изменяет тип анимации эффекта на Цвет
firstEffect.setAfterAnimationType(AfterAnimationType.Color);
// Устанавливает цвет тускления после анимации
firstEffect.getAfterAnimationColor().setColor(Color.BLUE);
// Записывает файл PPTX на диск
pres.save("AnimImage_AfterAnimation.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) 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.
Этот Java-код демонстрирует операцию:
// Создает экземпляр класса презентации, который представляет файл презентации.
Presentation pres = new Presentation("AnimTextBox_out.pptx");
try {
ISlide firstSlide = pres.getSlides().get_Item(0);
// Получает первый эффект основной последовательности
IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);
// Изменяет тип анимации текста эффекта на "Как один объект"
firstEffect.getTextAnimation().setBuildType(BuildType.AsOneObject);
// Изменяет тип анимации текста эффекта на "По словам"
firstEffect.setAnimateTextType(AnimateTextType.ByWord);
// Устанавливает задержку между словами на 20% от длительности эффекта
firstEffect.setDelayBetweenTextParts(20f);
// Записывает файл PPTX на диск
pres.save("AnimTextBox_AnimateText.pptx", SaveFormat.Pptx);
} finally {
if (pres != null) pres.dispose();
}