fsys.openXml.pptx.animation 是生成器与编辑器共用的整形状/逐段落时间轴与切换构建,不加载 Office、MSXML、ZIP 读取器或 .NET。
paragraphCount,可选 paragraphIndices(递增、不重复、从1开始的非空段序号);builder/editor 自动生成。参数、触发器语义和已支持效果见 生成器动画。不要将 COM MsoAnimEffect 数值作为本 API 名称或直接当 XML presetID。
import fsys.openXml.pptx.animation;
var xml,err=fsys.openXml.pptx.animation.timing(
[{target="T";effect="fade";trigger="click";duration=0.5}],
[{id=2;name="T";hasText=true}]
);
if(xml===null) return null,err;
return xml;
byParagraph=true:首次用 trigger/delay,后续用 paragraphTrigger(click/with/after,默认 click)与 paragraphDelay(默认0秒)。每段独立,不按缩进层级合组;builder/editor 略过空段,软换行不拆段。paragraph=N:仅指定第 N 段,序号从1开始;与 byParagraph 互斥。仅支持 entrance/exit 的 appear/fade/fly/wipe/zoom;不支持 spin/grow 的逐段落模式。transition({effect="morph";option="byObject";duration=1.4}):option 为 byObject/byWord/byChar。p159 优先,p14 淡出保留精确时长,标准 Fallback 为 fade;所有分支保留 advanceAfter=0 / advanceOnClick=false。!! 前缀形状名,例如 !!Focus;不保证任意版本或任意对象都能平滑插值。import fsys.openXml.pptx.animation;
var xml,err=fsys.openXml.pptx.animation.timing(
[{target="Body";effect="fade";byParagraph=true;paragraphTrigger="after";duration=0.5;paragraphDelay=0.2}],
[{id=2;name="Body";hasText=true;paragraphCount=3}]
);
if(xml===null) return null,err;
return xml;
不合并已有时间轴、不渲染动画。输出为可编辑 OOXML,不是视频帧。本机 PowerPoint 16 已验证逐段点击和 Morph 中间帧;WPS/旧 Office 的实际回退尚未验收。