gpt4 book ai didi

javascript - Canvas 时间线不与音频同步

转载 作者:行者123 更新时间:2023-11-30 00:07:53 28 4
gpt4 key购买 nike

所以我遇到了一个问题,Adobe Animate 中的时间轴不与 CreateJS 中调用的音频同步。问题是帧速率被设置为 24fps 以匹配 Adob​​e Animate 时间轴 fps。如果帧速率低于 24fps,则音频将在时间线之前完成,导致按钮和视觉效果出现得比它们应有的时间晚得多。如果 fps 快于 24fps,音频将在时间线结束前被切断。

有人知道为什么或有解决办法吗?谢谢。

最佳答案

默认情况下,Animate 会为自动收报机设置帧速率,但不会为影片剪辑本身设置帧速率,它会尝试遵循自动收报机速率,直到绘制时间过长,此时它们会变慢。

要解决此问题,请设置 framerate on the movieclip本身除了在自动收报机上。

这将使影片剪辑丢弃任何必要的帧,以保持视频处于适当的帧速率,这可能会导致动画略微断断续续,但至少它们会以正确的速度播放,因此与任何音频播放相匹配。

如果您正在使用 Animate 创建的 html 输出文件,您可以在 handleComplete 函数中添加以下行:

function handleComplete(evt) {
//This function is always called, irrespective of the content. You can use the variable "stage" after it is created in token create_stage.
var queue = evt.target;
var ssMetadata = lib.ssMetadata;
for(i=0; i<ssMetadata.length; i++) {
ss[ssMetadata[i].name] = new createjs.SpriteSheet( {"images": [queue.getResult(ssMetadata[i].name)], "frames": ssMetadata[i].frames} )
}
exportRoot = new lib._MyAnimation_canvas();
stage = new createjs.Stage(canvas);
stage.addChild(exportRoot);
stage.enableMouseOver();

exportRoot.framerate = lib.properties.fps; // <-- ADD THIS LINE

//Registers the "tick" event listener.
fnStartAnimation = function() {
createjs.Ticker.setFPS(lib.properties.fps);
createjs.Ticker.addEventListener("tick", stage);
}

更复杂的动画可能需要在其他地方设置。如果你使用自己的其他js代码,你需要找到有问题的movieclip并在那里设置。

关于javascript - Canvas 时间线不与音频同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37798415/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com