<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    TWaver - 專注UI技術

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

    如何在TWaver Flex中定制Tree的tooltip

    Posted on 2012-09-20 10:10 TWaver 閱讀(1363) 評論(0)  編輯  收藏
    如果您顯示過Tree的ToolTip,會發現這個tooltip離鼠標太遠了;而且也無法跟隨鼠標一起移動;最重要的是,如果想動態更改tooltip也很麻煩。

    還是自定義ToolTip靈活:
    1. 設置tree.toolTipFunction,關閉默認的tooltip
    1 tree.toolTipFunction = function(element:IData):String {
    2     return null;
    3 }
    4 
    2. 監聽mousemove事件,動態顯示、隱藏以及更新tooltip
    1 tree.addEventListener(MouseEvent.MOUSE_MOVE, function(e:MouseEvent):void {
    2     handleMouseMove(e);
    3 });
    4 
    3. 由于tree.getTreeDataByMouseEvent方法中,即使鼠標在空白處也有返回值,所以需要特殊處理一下,判斷鼠標是否在icon或者text上:
     1 private function showToolTip():Boolean {
     2     var obj:InteractiveObject = null;
     3     var mousePoint:Point = new Point(stage.mouseX, stage.mouseY);
     4     var objects:Array = stage.getObjectsUnderPoint(mousePoint);
     5     for (var i:int = objects.length-1; i>=0; i--) {
     6         if (objects[i] is InteractiveObject) {
     7             obj = objects[i] as InteractiveObject;
     8             break;
     9         } else {
    10             if (objects[i] is Shape && (objects[i] as Shape).parent) {
    11                 obj = (objects[i] as Shape).parent;
    12                 break;
    13             }
    14         }
    15     }
    16     return obj is UIComponent || obj is UITextField;
    17 }

     效果如下:

    完整代碼:
      1 <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
      2                 xmlns:tw="http://www.servasoftware.com/2009/twaver/flex"
      3                 paddingLeft="0" paddingRight="0" paddingTop="0" paddingBottom="0" backgroundColor="#FFFFFF"
      4                 creationComplete="init()">
      5     <mx:Script>
      6         <![CDATA[
      7             import mx.core.IToolTip;
      8             import mx.core.UIComponent;
      9             import mx.core.UITextField;
     10             import mx.managers.ToolTipManager;
     11 
     12             import twaver.DataBox;
     13             import twaver.IData;
     14             import twaver.Link;
     15             import twaver.Node;
     16             import twaver.controls.TreeData;
     17 
     18             private var _toolTip:IToolTip;
     19             private var _lastData:IData = null;
     20             private var _timer:uint = 0;
     21 
     22             private function init():void {
     23                 var box:DataBox = tree.dataBox;
     24                 tree.toolTipFunction = function(element:IData):String {
     25                     return null;
     26                 };
     27                 tree.addEventListener(MouseEvent.MOUSE_MOVE, function(e:MouseEvent):void {
     28                     handleMouseMove(e);
     29                 });
     30                 tree.callLater2(function():void {
     31                     tree.expandAll();
     32                 });
     33 
     34                 var from:Node = new Node();
     35                 from.name = "From";
     36                 from.toolTip = "From";
     37                 from.centerLocation = new Point(100, 100);
     38                 box.add(from);
     39                 var to:Node = new Node();
     40                 to.name = "To";
     41                 to.toolTip = "To";
     42                 to.centerLocation = new Point(300, 400);
     43                 box.add(to);
     44                 var link:Link = new Link(from, to);
     45                 link.name = "Link";
     46                 link.toolTip = "Link";
     47                 box.add(link);
     48             }
     49 
     50             private function handleMouseMove(e:MouseEvent):void {
     51                 var treeData:TreeData = tree.getTreeDataByMouseEvent(e);
     52                 var data:IData = (showToolTip() && treeData && treeData.data) ? treeData.data : null;
     53                 if(data != null){
     54                     var x:Number = tree.mouseX + 10, y:Number = tree.mouseY + 10;
     55                     if(data != _lastData){
     56                         if(_toolTip != null){
     57                             ToolTipManager.destroyToolTip(_toolTip);
     58                         }
     59                         _toolTip = ToolTipManager.createToolTip(data.toolTip, x, y);
     60                         if(_timer){
     61                             clearTimeout(_timer);
     62                         }
     63                         _timer = setTimeout(function():void {
     64                             _timer = 0;
     65                             if(_toolTip){
     66                                 _toolTip.text = "test\n" + _toolTip.text;
     67                             }
     68                         }, 1000);
     69                     }else{
     70                         _toolTip.x = x;
     71                         _toolTip.y = y;
     72                     }
     73 
     74                 }else{
     75                     if(_toolTip != null){
     76                         ToolTipManager.destroyToolTip(_toolTip);
     77                     }
     78                     _toolTip = null;
     79                 }
     80                 _lastData = data;
     81             }
     82 
     83             private function showToolTip():Boolean {
     84                 var obj:InteractiveObject = null;
     85                 var mousePoint:Point = new Point(stage.mouseX, stage.mouseY);
     86                 var objects:Array = stage.getObjectsUnderPoint(mousePoint);
     87                 for (var i:int = objects.length-1; i>=0; i--) {
     88                     if (objects[i] is InteractiveObject) {
     89                         obj = objects[i] as InteractiveObject;
     90                         break;
     91                     } else {
     92                         if (objects[i] is Shape && (objects[i] as Shape).parent) {
     93                             obj = (objects[i] as Shape).parent;
     94                             break;
     95                         }
     96                     }
     97                 }
     98                 return obj is UIComponent || obj is UITextField;
     99             }
    100         ]]>
    101     </mx:Script>
    102     <tw:Tree id="tree" width="30%" height="100%"/>
    103 </mx:Application>
    104  完整代碼見附件:見原文最下方

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


    網站導航:
     
    主站蜘蛛池模板: 国产99在线|亚洲| 亚洲成?v人片天堂网无码| 久久精品国产亚洲香蕉| 国产乱子伦精品免费视频| 亚洲片一区二区三区| 亚洲第一视频在线观看免费| 插B内射18免费视频| 国产精品99久久免费观看| 日本久久久久亚洲中字幕| 久久青草亚洲AV无码麻豆| 一区二区三区四区免费视频| 色婷婷六月亚洲婷婷丁香| 国产成人一区二区三区视频免费| 亚洲国产香蕉碰碰人人| 1000部禁片黄的免费看| 亚洲色欲色欲www| 好爽又高潮了毛片免费下载| 亚洲av永久无码| 亚洲成a人在线看天堂无码| 国产男女爽爽爽免费视频| 国产精品亚洲а∨无码播放| 大地影院MV在线观看视频免费| 久久精品视频亚洲| 亚洲性线免费观看视频成熟 | 四虎亚洲精品高清在线观看| 在线v片免费观看视频| 老司机午夜精品视频在线观看免费| 亚洲精品国自产拍在线观看| 黄网站色视频免费在线观看的a站最新 | 久久丫精品国产亚洲av不卡| 亚洲中文无码a∨在线观看| 97人妻无码一区二区精品免费| 亚洲精品无码国产片| 亚洲一区日韩高清中文字幕亚洲| 大地资源中文在线观看免费版 | 91亚洲国产成人久久精品网址 | 女人18毛片特级一级免费视频| 青青视频免费在线| 亚洲精品成人av在线| 日产乱码一卡二卡三免费| 中文在线免费观看|