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

    自定義告警染色

    Posted on 2012-05-03 14:13 TWaver 閱讀(2051) 評論(3)  編輯  收藏
    在TWaver中,拓撲上的告警呈現的方式是多種多樣的,最常見、最通用的是在原來的圖片上疊加上告警級別所對應的顏色,這種方式在TWaver的各個分支版本中都是支持的,呈現效果如下圖所示:

    另外還有兩種是將告警顏色添加在網元的前景或背景上,效果如下:
        我們主要來看默認的渲染方式,這種方式是采取圖片顏色疊加處理,也就是在原來網元的圖片上疊加上告警的顏色,對于大部分的圖片來說是沒有什么問題的,比如任意從網上找兩種圖片進行告警渲染:
         看得出來效果還是可以的,兩張圖片的染色都沒有保持著告警的顏色。但有些圖片的渲染就不是那么讓人滿意了,從客戶那邊取過來一個icon圖片做了一下測試,結果發現:
     
        圖中對于Major,Minor和custom這三種級別的告警渲染的顏色和冒泡的顏色顯然有些不同。對于這種情況該如何處理呢,經查閱API獲得TWaver可以自定義告警染色的規則,默認采用了Defaults中的PIXEL_FILTER_FUNCTION,我們來看看默認的實現:
    1 function(sourceColor:uint, filterColor:uint):uint {
    2 var r:uint = (sourceColor &gt;&gt; 16) &amp; 0xFF;
    3 var g:uint = (sourceColor &gt;&gt; <img src="http://twaver.servasoft.com/wp-includes/images/smilies/icon_cool.gif" alt="8)" class="wp-smiley"> &amp; 0xFF;
    4 var b:uint = sourceColor &amp; 0xFF;
    5 sourceColor = (r * 77 + g * 151 + b * 28) &gt;&gt; 8;
    6 sourceColor = (sourceColor &lt;&lt; 16) | (sourceColor &lt;&lt; 8 ) | sourceColor;
    7 return sourceColor &amp; filterColor;
    8 }

     有了這個方法之后,我們就可以對其進行定制,可以將這三種顏色進行一下特殊處理,直接返回告警的顏色
    1 var s:uint = (162 &lt;&lt; 16) | (193 &lt;&lt; <img src="http://twaver.servasoft.com/wp-includes/images/smilies/icon_cool.gif" alt="8)" class="wp-smiley"> | 210; twaver.Defaults.PIXEL_FILTER_FUNCTION = function(sourceColor:uint, filterColor:uint):uint {     if(sourceColor == s &amp;&amp; (filterColor == AlarmSeverity.MAJOR.color ||         filterColor == AlarmSeverity.MINOR.color         || filterColor == customAlarmSeverity.color)) {         return filterColor;     }     var r:uint = (sourceColor &gt;&gt; 16) &amp; 0xFF;
    2 var g:uint = (sourceColor &gt;&gt; <img src="http://twaver.servasoft.com/wp-includes/images/smilies/icon_cool.gif" alt="8)" class="wp-smiley"> &amp; 0xFF;
    3 var b:uint = sourceColor &amp; 0xFF;
    4 sourceColor = (r * 77 + g * 151 + b * 28) &gt;&gt; 8;
    5 sourceColor = (sourceColor &lt;&lt; 16) | (sourceColor &lt;&lt; 8 ) | sourceColor;
    6 return sourceColor &amp; filterColor;
    7 };

    運行后再來看看效果:

    最新附上完整的代碼供大家參考:
     1 <?xml version="1.0" encoding="utf-8"?>
     2 <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml"
     3                 xmlns:twaver="http://www.servasoftware.com/2009/twaver/flex"
     4                 width="100%" height="100%"
     5                 creationComplete="init()" backgroundColor="#FFFFFF" >
     6     <mx:Script>
     7         <![CDATA[
     8             import twaver.AlarmSeverity;
     9             import twaver.Defaults;
    10             import twaver.Node;
    11             import twaver.Utils;
    12             import twaver.Consts;
    13             import twaver.Styles;
    14 
    15             [Embed(source="/image/BTSGroup.png")]
    16             private static var bts:Class;
    17 
    18             [Embed(source="/image/network_server.png")]
    19             private static var wireless:Class;
    20 
    21             private static var customAlarmSeverity:AlarmSeverity = AlarmSeverity.register(3, 'custom', 'custom', 0xE4DC8A);
    22 
    23             private function init():void {
    24                 var s:uint = (162 << 16 ) | (193 << 8 ) | 210;
    25                 Utils.registerImageByClass('bts', bts);
    26                 Utils.registerImageByClass('wireless', wireless);
    27                 twaver.Defaults.PIXEL_FILTER_FUNCTION = function(sourceColor:uint, filterColor:uint):uint {
    28                     if(sourceColor == s && (filterColor == AlarmSeverity.MAJOR.color ||
    29                         filterColor == AlarmSeverity.MINOR.color
    30                         || filterColor == customAlarmSeverity.color)) {
    31                         return filterColor;
    32                     }
    33                     var r:uint = (sourceColor >> 16 ) & 0xFF;
    34                     var g:uint = (sourceColor >> 8 ) & 0xFF;
    35                     var b:uint = sourceColor & 0xFF;
    36                     sourceColor = (r * 77 + g * 151 + b * 28 ) >> 8;
    37                     sourceColor = (sourceColor << 16 ) | (sourceColor << 8 ) | sourceColor;
    38                     return sourceColor & filterColor;
    39                 };
    40 
    41                 addNode(AlarmSeverity.CRITICAL, 220, 100,'bts');
    42                 addNode(AlarmSeverity.MAJOR, 340, 100,'bts');
    43                 addNode(AlarmSeverity.MINOR, 460, 100,'bts');
    44                 addNode(AlarmSeverity.WARNING, 580, 100,'bts');
    45                 addNode(AlarmSeverity.INDETERMINATE, 700, 100,'bts');
    46 
    47                 addNode(AlarmSeverity.CRITICAL, 220, 250,'wireless');
    48                 addNode(AlarmSeverity.MAJOR, 340, 250,'wireless');
    49                 addNode(AlarmSeverity.MINOR, 460, 250,'wireless');
    50                 addNode(AlarmSeverity.WARNING, 580, 250,'wireless');
    51                 addNode(AlarmSeverity.INDETERMINATE, 700, 250,'wireless');
    52             }
    53 
    54             private function addNode(alarmSeverity:AlarmSeverity, x:Number, y:Number,image):void {
    55                 var node:Node = new Node();
    56                 node.image = image;
    57                 if(image == "bts"){
    58                     node.setStyle(Styles.INNER_STYLE, Consts.INNER_STYLE_SHAPE);
    59                     node.setStyle(Styles.INNER_SHAPE, Consts.SHAPE_CIRCLE);
    60                     node.setStyle(Styles.INNER_GRADIENT, Consts.GRADIENT_RADIAL_CENTER);
    61                     node.setStyle(Styles.INNER_GRADIENT_ALPHA, 0.5);
    62                     node.setStyle(Styles.INNER_ALPHA, 0.8);
    63                     node.setStyle(Styles.INNER_PADDING, -6);
    64                     node.setStyle(Styles.INNER_BACK, false);
    65                 }else if(image == "wireless"){
    66                     node.setStyle(Styles.INNER_STYLE, Consts.INNER_STYLE_SHAPE);
    67                     node.setStyle(Styles.INNER_SHAPE, Consts.SHAPE_DIAMOND);
    68                     node.setStyle(Styles.INNER_GRADIENT, Consts.GRADIENT_RADIAL_SOUTHWEST);
    69                     node.setStyle(Styles.INNER_PADDING_TOP, 10);
    70                     node.setStyle(Styles.INNER_PADDING_BOTTOM, -5);
    71                     node.setStyle(Styles.INNER_PADDING_LEFT, -20);
    72                     node.setStyle(Styles.INNER_PADDING_RIGHT, -20);
    73                 }
    74 
    75                 node.name = alarmSeverity.name ;
    76                 node.location = new Point(x, y);
    77                 node.alarmState.setNewAlarmCount(alarmSeverity, 22);
    78                 network.elementBox.add(node);
    79             }
    80         ]]>
    81     </mx:Script>
    82     <twaver:Network id="network" width="100%" height="100%" />
    83 </mx:HBox>
     

    評論

    # re: 自定義告警染色  回復  更多評論   

    2012-05-09 13:09 by 上海婚慶公司
    這個有點復雜的

    # re: 自定義告警染色  回復  更多評論   

    2012-05-14 12:37 by 35crmo合金管
    這個代碼有點復雜

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


    網站導航:
     
    主站蜘蛛池模板: 免费v片视频在线观看视频| 1000部拍拍拍18勿入免费凤凰福利| 成人在线免费观看| 456亚洲人成影院在线观| 无码精品A∨在线观看免费| 亚洲日韩乱码中文无码蜜桃| 亚洲精品在线免费观看| 亚洲中文字幕无码中文字| 成人免费视频软件网站| 国产成人 亚洲欧洲| 亚洲精品偷拍视频免费观看| 永久免费无码网站在线观看个| 亚洲国产人成中文幕一级二级| 亚洲视频在线免费| 亚洲AV无码一区东京热| 7723日本高清完整版免费| 亚洲日韩精品无码专区加勒比 | 色多多www视频在线观看免费| 免费国产不卡午夜福在线| 国产成人无码免费看片软件| 亚洲AV无码不卡在线播放| 免费福利网站在线观看| 在线亚洲v日韩v| 亚洲午夜未满十八勿入网站2| 18女人水真多免费高清毛片| 亚洲欧美日韩综合久久久| 亚洲国产精品碰碰| 日韩精品无码专区免费播放| 亚洲av午夜精品无码专区| 免费A级毛片无码A| 特级精品毛片免费观看| 亚洲熟女精品中文字幕| 国产av无码专区亚洲国产精品| 99在线观看免费视频| 亚洲精品成a人在线观看☆| 亚洲欧洲自拍拍偷午夜色无码| 国产曰批免费视频播放免费s| 深夜A级毛片视频免费| 亚洲天天做日日做天天欢毛片| 日韩免费视频网站| 99久9在线|免费|