TWaver - 專注UI技術

          http://twaver.servasoft.com/
          posts - 171, comments - 191, trackbacks - 0, articles - 2
            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

          如何實現link多層bundle

          Posted on 2013-07-22 15:33 TWaver 閱讀(1725) 評論(0)  編輯  收藏
          TWaver默認的Link只能分組bundle,沒有分層bundle(也就是展開一層后,再展開一層,或合并一層后,再合并一層),因為在多層bundle中,在中間層中,無法自動分辨是想合并還是展開。這里寫個例子,屏蔽了默認的雙擊Link展開或者合并LinkBundle,通過按鈕實現多層bundle(這里實現了兩層的合并或展開)。

          TWaver中相同Styles.LINK_BUNDLE_ID才能bundle,所以第一層Link分組設置Styles.LINK_BUNDLE_ID



           1 for(var i:int=0; i<4; i++){
           2         var link:Link = new Link(node, node2);
           3         link.name = "link " + i;
           4         if(i%2 == 0){
           5             link.setStyle(Styles.LINK_BUNDLE_ID, "bundle1");
           6             link.setStyle(Styles.LINK_COLOR, 0xFF0000);
           7         }else{
           8             link.setStyle(Styles.LINK_BUNDLE_ID, "bundle2");
           9             link.setStyle(Styles.LINK_COLOR, 0x0000FF);
          10         }
          11         box.add(link);
          12 }

          第一層合并或展開,可以直接使用TWaver方法

          1 link.reverseBundleExpanded();

          第二層合并,需要記錄上一層的Styles.LINK_BUNDLE_ID,因為在展開時需要恢復原本的Styles.LINK_BUNDLE_ID,并需要設置Styles.LINK_BUNDLE_EXPANDED為false,最后重新設置所有Link的Styles.LINK_BUNDLE_ID為相同的值
          1 e.setStyle(Styles.LINK_BUNDLE_ID, e.getClient("original_bundle_id"));
          2 e.setStyle(Styles.LINK_BUNDLE_EXPANDED, false);
          3 e.setStyle(Styles.LINK_BUNDLE_ID, "bundle");

          從完全合并第一次展開的時候,需要恢復原本的Styles.LINK_BUNDLE_ID,并將所有Link的original_bundle_id設置為null,設置e.setStyle(Styles.LINK_BUNDLE_EXPANDED, false);(展開后為第一層的合并狀態)
          1 e.setStyle(Styles.LINK_BUNDLE_ID,&nbsp;e.getClient("original_bundle_id"));
          2 e.setClient("original_bundle_id", null);
          3 e.setStyle(Styles.LINK_BUNDLE_EXPANDED, false);

          見實現方法
           1 private function bundle(expand:Boolean):void {
           2         var link:Link = network.selectionModel.lastData as Link;
           3         if(link == null){
           4             return;
           5         }
           6         if(link.getStyle(Styles.LINK_BUNDLE_EXPANDED)){
           7             if(!expand){
           8                 link.reverseBundleExpanded();
           9              }
          10          }else{
          11              if(expand){
          12                  if(link.getClient("original_bundle_id") == null){
          13                      link.reverseBundleExpanded();
          14                  }else{
          15                      getSharedLinks(link.fromNode,
          16                         link.toNode).forEach(function(e:IElement):void {
          17                          e.setStyle(Styles.LINK_BUNDLE_ID,
          18                          e.getClient("original_bundle_id"));
          19                          e.setClient("original_bundle_id", null);
          20                          e.setStyle(Styles.LINK_BUNDLE_EXPANDED, false);
          21                      });
          22                  }
          23              }else{
          24                  getSharedLinks(link.fromNode,
          25                     link.toNode).forEach(function(e:IElement):void {
          26                      e.setClient("original_bundle_id",
          27                      e.getStyle(Styles.LINK_BUNDLE_ID));
          28                      e.setStyle(Styles.LINK_BUNDLE_ID, "bundle");
          29                      e.setStyle(Styles.LINK_BUNDLE_EXPANDED, false);
          30                  });
          31              }
          32          }
          33 }
          可以執行文件下載 LinkBundleDemo

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 新平| 塔河县| 海阳市| 尼玛县| 札达县| 海口市| 绥宁县| 渭源县| 青铜峡市| 福州市| 衡南县| 万山特区| 朝阳县| 佛山市| 永昌县| 崇信县| 榕江县| 城固县| 合山市| 新邵县| 寿宁县| 城市| 松原市| 兰州市| 建平县| 兴义市| 政和县| 合水县| 兰西县| 保亭| 漯河市| 饶平县| 洞头县| 元朗区| 遂平县| 伊宁市| 凌海市| 襄城县| 泸州市| 施秉县| 紫云|