我现在在这个主题上搜索了很长时间,似乎没有解决该问题的方法。但是,在结案之前,我想在这里举例说明问题,以确保没有遗漏任何东西。 问题:我有一个嵌入iframe元素的adoani animatecc图形。该图形是由我目前工作的一家公司的编辑创建的。我的主管现在要我从创建的animatecc图形外部停止动画。因此,基本上我想访问Ticker元素,该元素包含有关fps速率的信息,以便更改其值,从而使动画停止。 无论如何,在通过adobe工具生成该图形之后,似乎无法干预该图形。你们中有人有同样的问题并且能够解决吗?
如果有人有任何解决方案或建议来解决此问题,这将有很大的帮助。
预先感谢大家, 祝你有美好的一天。
答案 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
最后一个注意事项:股票行情代码确实支持“暂停”,但实际上并没有停止报价,这取决于开发人员根据代码行情事件来实现暂停。
希望有帮助!