シェイプアニメーション
アニメーションは、テキスト、画像、シェイプ、またはチャートに適用できる視覚効果です。プレゼンテーションやその構成要素に命を吹き込みます。
プレゼンテーションでアニメーションを使用する理由は?
アニメーションを使用することで、あなたは
- 情報の流れをコントロールする
- 重要なポイントを強調する
- 聴衆の関心や参加を高める
- コンテンツを読みやすく、理解しやすく、処理しやすくする
- プレゼンテーション内の重要な部分に読者や視聴者の注意を引き付ける
PowerPointは、入場、退出、強調、および動きのパスカテゴリ全体で、アニメーションおよびアニメーション効果のための多くのオプションとツールを提供しています。
Aspose.Slidesのアニメーション
- Aspose.Slidesは、
Aspose.Slides.Animation
名前空間の下でアニメーションを操作するために必要なクラスとタイプを提供します。 - Aspose.Slidesは、EffectType列挙の下で150以上のアニメーション効果を提供します。これらの効果は基本的にPowerPointで使用されているものと同じ(または同等の)効果です。
テキストボックスにアニメーションを適用する
Aspose.Slides for PHP via Javaを使用すると、シェイプ内のテキストにアニメーションを適用できます。
- Presentationクラスのインスタンスを作成します。
- インデックスを通じてスライドの参照を取得します。
rectangle
IAutoShapeを追加します。- IAutoShape.TextFrameにテキストを追加します。
- メインの効果シーケンスを取得します。
- IAutoShapeにアニメーション効果を追加します。
TextAnimation.BuildType
プロパティをBuildType
列挙の値に設定します。- プレゼンテーションをPPTXファイルとしてディスクに書き込みます。
このPHPコードは、Fade
効果をAutoShapeに適用し、テキストアニメーションをBy 1st Level Paragraphs値に設定する方法を示しています:
# プレゼンテーションファイルを表すプレゼンテーションクラスをインスタンス化します。
$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);
# 1stレベル段落による形状テキストのアニメーション
$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("アニメーションテキストボックス");
# 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 for PHP via Javaを使用すると、アニメーション効果のタイミングプロパティを変更できます。
これはMicrosoft PowerPointのアニメーションタイミングペインです:
これらはPowerPointのタイミングとEffect.Timingプロパティとの対応関係です:
- PowerPointタイミングの開始ドロップダウンリストは、Effect.Timing.TriggerTypeプロパティと一致します。
- PowerPointタイミングの継続時間は、Effect.Timing.Durationプロパティと一致します。アニメーションの持続時間(秒単位)は、アニメーションが1サイクルを完了するのにかかる合計時間です。
- PowerPointタイミングの遅延は、Effect.Timing.TriggerDelayTimeプロパティと一致します。
これがEffect Timingプロパティを変更する方法です:
- アニメーションを適用またはアニメーション効果を取得します。
- 必要な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 for PHP via 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);
# アフターアニメーションタイプをColorに変更します
$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)は、アニメートテキスト部分(単語または文字)の間の遅延を設定します。正の値は効果持続時間の割合を指定します。負の値は秒単位の遅延を指定します。
これがEffect Animate textプロパティを変更する方法です:
- アニメーションを適用またはアニメーション効果を取得します。
- 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);
# 効果のテキストアニメーションタイプを「1つのオブジェクト」として変更します
$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();
}
}