在animatecc脚本之外访问createjs函数

时间:2018-11-02 10:00:09

标签: javascript frame-rate createjs

我现在在这个主题上搜索了很长时间,似乎没有解决该问题的方法。但是,在结案之前,我想在这里举例说明问题,以确保没有遗漏任何东西。 问题:我有一个嵌入iframe元素的adoani animatecc图形。该图形是由我目前工作的一家公司的编辑创建的。我的主管现在要我从创建的animatecc图形外部停止动画。因此,基本上我想访问Ticker元素,该元素包含有关fps速率的信息,以便更改其值,从而使动画停止。 无论如何,在通过adobe工具生成该图形之后,似乎无法干预该图形。你们中有人有同样的问题并且能够解决吗?

如果有人有任何解决方案或建议来解决此问题,这将有很大的帮助。

预先感谢大家, 祝你有美好的一天。

2 个答案:

答案 0 :(得分:0)

好的, 和往常一样,发布该问题后,我现在找到了一个可行的解决方案,我想在这里与大家分享,以防万一有人遇到类似问题。

解决方案:

在iframe渲染animatecc图形后,您将拥有一个adobean对象,可以使用该对象 adobean = document.getElementsByTagName("iframe")[0].contentWindow.AdobeAn

该对象具有功能getComposition,可让您获取animatecc element的某些组件。

一个组件是舞台组件,可以通过getStage()调用进行检索。舞台本身具有子节点,其中之一是tickEnabled布尔属性。

adobean.getComposition(adobean.bootcompsLoaded[0]).getStage().children[0].tickEnabled = false;
这行代码将我刚才描述的内容可视化。将值设置为false时,动画将停止。

重要的是您要等到iframe加载完毕,否则该adobean便无法定义。

因此,我希望这可以对你们中的一个有所帮助,因为它肯定会为我节省一个星期的研究时间。

祝你有美好的一天!

答案 1 :(得分:0)

如果您在同一域中,则应该能够访问嵌入式iframe上下文。

var context = document.getElementById("iframe").contentWindow;

从那里开始,就像重置股票代码一样简单。 createjs对象是窗口中的全局对象,所有CreateJS内容都位于该窗口中。

context.createjs.Ticker.reset();

您还提到降低帧速率-可能也可以工作:

context.createjs.Ticker.timingMode = "interval"; // Required as RAF can't change framerate
context.createjs.Ticker.framerate = 0.0001; // 0 will cause a division by 0 error probably

最后一个注意事项:股票行情代码确实支持“暂停”,但实际上并没有停止报价,这取决于开发人员根据代码行情事件来实现暂停。

希望有帮助!