Анимация Форм

Анимации — это визуальные эффекты, которые могут быть применены к текстам, изображениям, формам или диаграммам. Они придают жизнь презентациям или их компонентам.

Почему стоит использовать анимации в презентациях?

Используя анимации, вы можете

  • контролировать поток информации
  • подчеркивать важные моменты
  • увеличивать интерес или вовлеченность среди вашей аудитории
  • делать контент более читаемым, усваиваемым или обрабатываемым
  • привлекать внимание читателей или зрителей к важным частям презентации

PowerPoint предоставляет множество возможностей и инструментов для анимаций и эффектов анимации в категориях вход, выход, подчеркнуть и движение по траекториям.

Анимации в Aspose.Slides

  • Aspose.Slides предоставляет классы и типы, необходимые для работы с анимациями в пространстве имен Aspose.Slides.Animation,
  • Aspose.Slides предлагает более 150 эффектов анимации в перечислении EffectType. Эти эффекты в основном такие же (или эквивалентные) эффекты, используемые в PowerPoint.

Применение анимации к TextBox

Aspose.Slides для Android через Java позволяет вам применять анимацию к тексту в форме.

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на слайд по его индексу.
  3. Добавьте rectangle IAutoShape.
  4. Добавьте текст в IAutoShape.TextFrame.
  5. Получите основную последовательность эффектов.
  6. Добавьте эффект анимации к IAutoShape.
  7. Установите свойство TextAnimation.BuildType в значение из перечисления BuildType.
  8. Запишите презентацию на диск в виде файла PPTX.

Этот код на Java показывает, как применить эффект Fade к 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();

    // Добавляет эффект анимации Fade к форме
    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

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на слайд по его индексу.
  3. Добавьте или получите PictureFrame на слайде.
  4. Получите основную последовательность эффектов.
  5. Добавьте эффект анимации к PictureFrame.
  6. Запишите презентацию на диск в виде файла PPTX.

Этот код на Java показывает, как применить эффект Fly к рамке изображения:

// Создает экземпляр класса презентации, представляющий файл презентации.
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();

    // Добавляет эффект анимации Fly from Left к рамке изображения
    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();
}

Применение анимации к форме

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на слайд по его индексу.
  3. Добавьте rectangle IAutoShape.
  4. Добавьте Bevel IAutoShape (когда этот объект будет нажат, анимация будет проигрываться).
  5. Создайте последовательность эффектов на форме с закругленными углами.
  6. Создайте пользовательский UserPath.
  7. Добавьте команды для перемещения по UserPath.
  8. Запишите презентацию на диск в виде файла PPTX.

Этот код на Java показывает, как применить эффект PathFootball (путь футбольного мячика) к форме:

// Создает экземпляр класса Презентации, представляющий 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("Анимированный TextBox");

    // Добавляет эффект анимации 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 для Android через Java позволяет вам изменять свойства времени эффекта анимации.

Это панель времени анимации в Microsoft PowerPoint:

example1_image

Вот соответствия между временем PowerPoint и свойствами Effect.Timing :

  • Выпадающий список времени PowerPoint Начало соответствует свойству Effect.Timing.TriggerType .
  • Время PowerPoint Длительность соответствует свойству Effect.Timing.Duration . Длительность анимации (в секундах) — это общее время, необходимое для завершения анимации одного цикла.
  • Время PowerPoint Задержка соответствует свойству Effect.Timing.TriggerDelayTime .

Вот как вы можете изменить свойства времени эффекта:

  1. Примените или получите эффект анимации.
  2. Установите новые значения для свойств Effect.Timing , которые вам нужны.
  3. Сохраните измененный 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();
}

Извлечение звука эффекта анимации

  1. Создайте экземпляр класса Presentation .
  2. Получите ссылку на слайд по его индексу.
  3. Получите основную последовательность эффектов.
  4. Извлеките setSound(IAudio значение) встроенный в каждый эффект анимации.

Этот код на 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 для Android через Java позволяет вам изменять свойство после анимации эффектов анимации.

Это панель эффекта анимации и расширенное меню в Microsoft PowerPoint:

example1_image

Выпадающий список После анимации эффекта PowerPoint соответствует следующим свойствам:

Этот код на Java показывает, как изменить эффект после анимации:

// Создает экземпляр класса презентации, представляющий файл презентации
Presentation pres = new Presentation("AnimImage_out.pptx");
try {
    ISlide firstSlide = pres.getSlides().get_Item(0);

    // Получает первый эффект основной последовательности
    IEffect firstEffect = firstSlide.getTimeline().getMainSequence().get_Item(0);

    // Изменяет тип после анимации на Color
    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 предоставляет эти свойства, чтобы вы могли работать с блоком Анимировать текст эффекта анимации:

Вот как вы можете изменить свойства эффекта Анимировать текст:

  1. Примените или получите эффект анимации.
  2. Установите свойство setBuildType(int значение) в значение BuildType.AsOneObject , чтобы отключить режим анимации По абзацам.
  3. Установите новые значения для свойств setAnimateTextType(int значение) и setDelayBetweenTextParts(float значение) .
  4. Сохраните измененный 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();
}