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 閱讀(1729) 評論(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

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


          網站導航:
           
          主站蜘蛛池模板: 舟曲县| 台山市| 灵石县| 庐江县| 南通市| 五河县| 个旧市| 葫芦岛市| 从化市| 甘泉县| 乌兰察布市| 徐州市| 井冈山市| 南宁市| 洪江市| 任丘市| 江山市| 阿城市| 镇赉县| 和平区| 温宿县| 布拖县| 潢川县| 邳州市| 襄垣县| 淳化县| 益阳市| 黄骅市| 通江县| 北宁市| 天水市| 珠海市| 航空| 福鼎市| 桃园市| 静安区| 电白县| 雅江县| 甘孜| 河间市| 晋州市|