2014-02-15 90 views
2

我想在我的网站/ webapp上集成一串»边缘动画«,但所有的<edgeid>_edgePreload.js都会导致头痛。总之,我真正希望做的是:Adob​​e Edge-no preloader

  1. 包括jQuery和边缘本身一次,
  2. 负荷<egde_id_egde.js通过Ajax文件和
  3. 终于动态创建的组成,

这样我就可以在需要时启动/停止/暂停它们,根本不使用预加载器脚本。

简而言之:

我怎样才能»注册«组成定义,在生成的定义文件进行在这里:

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

使

Edge.getComposition(<id>)做不使用预加载器就返回组合作品?

顺便说一句。:我是通过源代码加强了一下,发现组成定义没有一个okToPlay财产,是什么让边缘拒绝退货组成。

回答

3

从我的经验来看,你不能这么做,但你可以使用Coordinated Preloading来模拟效果。

如果要加载的组成,第一添加到您的头上:

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

既然bootstrapLoading启用,当你想插入一定的补偿,创建一个类一个div您设置在边缘,例如说你有一个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)); 
         }); 
      }}); 

现在您可以访问你的补偿后与

loadedComps["edge_my_comp1"].play() 

从我的经验,你还需要一个预加载器添加到您的<头>(例如,一个空的虚拟预加载器),因为否则AdobeEdge.bootstrapCallback回调永远不会火灾,从而让你隐藏stage,不动画(reference)

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