Adobe Edge-没有预加载器

时间:2014-02-15 08:19:39

标签: preloader adobe-edge

我想在我的网站/ webapp上整合一堆“边缘动画”,但所有<edgeid>_edgePreload.js都令人头疼。总而言之,我真正想做的是:

  1. 包括jquery和edge本身一次,
  2. 通过Ajax和
  3. 加载<egde_id_egde.js个文件
  4. 最后动态创作,
  5. 这样我就可以在需要时启动/停止/暂停它们,而根本不使用预加载器脚本。

    简而言之:

    如何»注册«组合定义,如此处生成的定义文件中所述:

    Edge.registerCompositionDefn(compId, symbols, fonts, resources, opts);

    这样

    Edge.getComposition(<id>)确实会返回合成,而不使用预加载器?

    顺便说一句: 我稍微踩过源代码,发现构图定义没有okToPlay属性,是什么造成了边缘拒绝返回作文。

1 个答案:

答案 0 :(得分:3)

根据我的经验,您无法真正做到这一点,但您可以使用Coordinated Preloading来模拟效果。

如果要加载合成,请先将其添加到您的头部:

<script>    window.AdobeEdge = window.AdobeEdge || {};    window.AdobeEdge.bootstrapLoading = true; </script>

现在bootstrapLoading已启用,当您要插入某个comp时,请创建一个div,其中包含您在Edge中设置的类,例如,假设您有一个my_comp1.html,其中包含类的阶段edge_my_comp1(默认值类似于EDGE-28326120

<div id="Stage" class="edge_my_comp1"> </div>

现在使用yepnope或其他条件JavaScript加载程序按需加载合成:

var loadedComps = {};
yepnope({load: "my_comp1_edgePreload.js",
                    callback: function(url, result, key){     
                 //when the script is loaded, run these:      
                         AdobeEdge.loadResources();
                         AdobeEdge.playWhenReady();

                        AdobeEdge.bootstrapCallback(function(compID){
                            //then
                            loadedComps[compID] = (AdobeEdge.getComposition(compID)); 
                         });   
             }});

现在您可以稍后使用

访问您的comp
 loadedComps["edge_my_comp1"].play()

根据我的经验,您仍然需要为您的&lt;添加一个预加载器。头&gt; (例如,一个空的虚拟预加载器),否则AdobeEdge.bootstrapCallback - 回调永远不会触发,从而使您隐藏stage,但不会为(reference)设置动画。

加载合成后,请注意您无法再次加载它:相反,您需要停止并隐藏合成,然后再次显示并再次播放它时。