如何在Adobe Animate中通过函数控制主时间轴与关联元件播放状态
实现方案(基于Adobe Animate ActionScript 3.0)
前置准备
首先给主时间轴上的两个角色Movie Clip元件设置唯一实例名,比如分别命名为charMC1、charMC2,确保两个角色MC的总帧数和主时间轴音频对应的总帧数完全一致。
核心代码实现
在主时间轴的帧脚本中添加如下代码,定义同步控制的自定义函数:
1. 同步暂停函数
function syncPause():void { // 暂停主时间轴,流式音频会随主时间轴自动暂停 stop(); // 同步暂停两个角色元件 charMC1.stop(); charMC2.stop(); // 如需同时停止所有非流式音效,可取消注释下行代码 // SoundMixer.stopAll(); }
2. 同步播放函数
function syncPlay():void { // 播放主时间轴 play(); // 强制角色元件跳转到主时间轴当前帧后再播放,避免帧偏移 charMC1.gotoAndPlay(currentFrame); charMC2.gotoAndPlay(currentFrame); }
触发控制示例
如果需要通过按钮触发控制,给按钮设置实例名(比如暂停按钮为pauseBtn、播放按钮为playBtn)后添加事件监听即可:
import flash.events.MouseEvent; pauseBtn.addEventListener(MouseEvent.CLICK, handlePause); playBtn.addEventListener(MouseEvent.CLICK, handlePlay); function handlePause(e:MouseEvent):void { syncPause(); } function handlePlay(e:MouseEvent):void { syncPlay(); }
注意事项
- 流式音频默认和主时间轴帧绑定,不需要额外写音频控制逻辑,主时间轴启停会自动同步音频状态
- 播放函数中添加
gotoAndPlay(currentFrame)的逻辑是为了避免多次暂停播放后出现角色帧和主时间轴偏移的问题,保证口型永远和音频对齐 - 如果角色MC内部还有嵌套的口型动画MC,参照上述逻辑给嵌套MC也添加同步跳转代码即可
内容的提问来源于stack exchange,提问作者user3718236
相关产品推荐
相关产品推荐

