<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 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

    Flex中定制帶圖標的Tooltip

    Posted on 2012-02-09 17:44 TWaver 閱讀(1852) 評論(0)  編輯  收藏
    “定制”無疑是TWaver中最大的一特色,無論是node,link,attachment,就連tooltip也同樣可以定制,“定制”可以顯示出更強更復雜的一些功能,今天給大家?guī)砹艘粋€定制Tooltip的例子。

    啥也不多說,先看看效果:


    下面我們來細細分析一下這個功能的實現(xiàn)。tooltip的特點是當鼠標滑過時顯示,滑出時不顯示。因此我們可以定義一個tooltip組件,監(jiān)聽network的mouse move事件,如果鼠標下有網元,就顯示tooltip組件并動態(tài)計算tooltip的位置,沒有就隱藏tooltip組件。
     1this.network.addEventListener(MouseEvent.MOUSE_MOVE, function(e:MouseEvent):void
     2updateToolTip(e);
     3});
     4
     5private function updateToolTip(e:MouseEvent):void {
     6    var element:IElement = network.getElementByMouseEvent(e, true5);
     7    if(lastElement == element){
     8        return;
     9    }

    10    lastElement = element;
    11    if(element is Link){
    12        var point:Point = network.getLogicalPoint(e);
    13        customTooltip.x = point.x - customTooltip.measuredWidth / 2;
    14        customTooltip.y = point.y - customTooltip.measuredHeight - 10;
    15        customTooltip.setText(element.getClient('message'));
    16        customTooltip.visible = true;
    17    }
    else{
    18        customTooltip.visible = false;
    19    }

    20}

    21

    我們來詳細了解一下如何來實現(xiàn)tooltip組件,首先定義一個tooltip類,繼承于canvas。這樣就可以將tooltip直接加到network.topCanvas上。
    1public class CustomToolTip extends Canvas {}

    tooltip組件上不需要交互動作和滾動條,因此可以將這些屏蔽:
    1public function CustomToolTip() {
    2 this.mouseEnabled = false;
    3 this.mouseChildren = false;
    4 this.horizontalScrollPolicy = ScrollPolicy.OFF;
    5 this.verticalScrollPolicy = ScrollPolicy.OFF;
    6 this.init();
    7}

    8

    重點是tooltip的繪制問題,我們需要將圖標和文字加到tooltip組件上,并且在添加圖標和文字時,需要計算一下位置
    1
    2var messageImage:Image = new Image();
    3messageImage.source =new messageIcon();
    4messageImage.x = _hmargin;
    5messageImage.y = _vmargin;
    6this.addChild(messageImage);
    7
    8_message = new Label();
    9_message.x = _hmargin + _iconWidth + _hgap;
    10_message.y = _vmargin;
    11this.addChild(_message);
    12

    然后我們需要繪制一個如tooltip形狀的圖形。先來分析一個,tooltip就是一個矩形框,為了好看一點可以搞個圓角矩形,矩形下方有一個小三角的圖形。接下來就可以通過畫筆將這些圖形繪制出來:
    1
    2//獲取畫筆
    3var g:Graphics = this.graphics;
    4//設置畫筆的線寬為1
    5var lineWidth:Number = 1;
    6//設置畫筆的樣式
    7g.lineStyle(lineWidth, 0, 0.5, true, "normal", CapsStyle.ROUND, JointStyle.ROUND);
    8//設置填充色
    9Utils.beginFill(g, 0xFFFFFF, 1, 0, 0, _width, _height, Consts.GRADIENT_LINEAR_EAST, 0xCCCCCC, 1);
    10//繪制圓角矩形
    11g.drawRoundRect(lineWidth, lineWidth, _width - lineWidth * 2, _height - lineWidth * 2 - _arrowHeight, 10, 10);
    12//繪制矩形下的小三角
    13g.moveTo(_arrowStart, _height - lineWidth - _arrowHeight);
    14g.lineTo(_arrowStart, _height);
    15g.lineTo(_arrowStart + _arrowWidth, _height - lineWidth - _arrowHeight);
    16g.endFill();
    17//繪制小三角和矩形的連接線的顏色
    18g.lineStyle(1, 0xFFFFFF);
    19g.moveTo(_arrowStart, _height - lineWidth - _arrowHeight);
    20g.lineTo(_arrowStart + _arrowWidth, _height - lineWidth - _arrowHeight);
    21

    這樣tooltip就定制好了,最后還需要將網元和tooltip上顯示的內容綁定
    1link.setClient('message', '3333M');
    2customTooltip.setText(element.getClient('message'));

    完整代碼見附件:CustomTooltipDemo

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


    網站導航:
     
    主站蜘蛛池模板: 在线播放免费人成毛片乱码| 国产精品白浆在线观看免费| 一级毛片免费视频| 无限动漫网在线观看免费| 亚洲国产日韩在线观频| 亚洲福利一区二区| 免费一级毛片在线播放视频免费观看永久 | 在线免费中文字幕| 四虎在线播放免费永久视频| 亚洲国产精品自在在线观看 | 免费观看无遮挡www的视频| 四虎永久在线精品视频免费观看| 亚洲va久久久噜噜噜久久狠狠| 国产亚洲精品VA片在线播放| 成人片黄网站色大片免费观看cn| 久久久久国产精品免费免费搜索 | 国产精品亚洲自在线播放页码| 久久www免费人成看国产片| 成人毛片18女人毛片免费96| 亚洲国产婷婷六月丁香| 亚洲成av人片在线天堂无| 99精品视频在线免费观看 | 亚洲av无码成人精品区在线播放| 亚洲视频在线免费看| 一级毛片a免费播放王色| 性做久久久久久久免费看| 亚洲成AV人片在线播放无码| 国产亚洲欧美日韩亚洲中文色| 最近中文字幕免费2019| 国产亚洲精品AA片在线观看不加载| 亚洲熟女精品中文字幕| 99久热只有精品视频免费观看17| 亚洲精品国产va在线观看蜜芽| 亚洲人成无码网站在线观看| 8x成人永久免费视频| 亚洲永久无码3D动漫一区| 国产亚洲精品成人久久网站| 一区二区无码免费视频网站| 亚洲成人午夜在线| 成人精品视频99在线观看免费| 国产精品极品美女免费观看|