如何更改发布模板 html 以使用 $ANIMATE_CC_SCRIPTS 令牌中的函数?

How to change a publish template html to use a function that's within $ANIMATE_CC_SCRIPTS token?

不久前,当 html5 被添加到 iOS 主屏幕时,我发现了一个小错误。打开 Web 应用程序后,在屏幕方向更改期间,canvas 无法正确缩放。

这是因为 Animate 的 resizeCanvas 代码触发速度太快。所以我在 resizeCanvas 里面加了一个 setTimeout 稍微延迟一下:



每次导出后我都在编辑 html 文件。但现在是我制作自定义发布模板的时候了。不过,我在尝试使代码正常工作时遇到了障碍。

在默认模板 html 中,resizeCanvas 函数在 Animate 的 javascript $ANIMATE_CC_SCRIPTS[=63 中=] token/variable:



在我的自定义发布模板中,我在 $ANIMATE_CC_SCRIPTS 标记后添加了一个脚本。它不起作用:

// Added below $ANIMATE_CC_SCRIPTS in the template html
<script>
    window.addEventListener('resize', delayedResizeCanvas);
    function delayedResizeCanvas() {
        setTimeout(function(){
            resizeCanvas();
        }, 100);
    }
</script>

代码似乎唯一有效的方法是当我在 resizeCanvas 中添加 setTimeout 时。我只能在导出 之后执行此操作。

我试图查看保存模板 javascript tokens/variables 的 Animate 文件夹。我想我应该复制一个副本并将其重命名为 $ANIMATE_CC_SCRIPTS_2 这样我就不会弄乱默认的。但是找不到。

有没有办法让 setTimeout 代码在 resizeCanvas 之外工作?
或者编辑 javascript $ANIMATE_CC_SCRIPTS token/variable?


更新: 感谢 Muhammed Maruf,将 setTimeout 添加到 AdobeAn.makeResponsive 函数有效。我可以将这个脚本添加到我的自定义发布模板中,不需要编辑任何导出的 html 文件。

<script>
    window.addEventListener('resize', delayedResizeCanvas);
    function delayedResizeCanvas() {
        setTimeout(function(){
            AdobeAn.makeResponsive(true,'both',true,1,[canvas,anim_container,dom_overlay_container]);
        }, 100);
    }
</script>

更新二:看来这个方法只对单帧有效。对于时间轴跨多个帧播放的电影项目,它会触发一次或两次,然后 canvas 将不再重新缩放。

resizeCanvas 中添加 setTimeout 使 canvas 比例一致,但我只需要编辑 html 每次导出后手动归档。

这似乎几乎不可能,但我找到了其他方法来解决您的问题。在.html 页面中有一个名为“AdobeAn.makeResponsive”的函数。您可以在程序中需要的框架中调用它,因为它在那里被调用。 比如到了第5帧的时候,我是这样调用的;

AdobeAn.makeResponsive(false,'both',false,1,[canvas,anim_container,dom_overlay_container]);