有才華的人,別忘記給滋潤你的那塊土壤施肥

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            28 隨筆 :: 5 文章 :: 147 評論 :: 0 Trackbacks
                對于某些頁面,對應的ToolBar上的按鈕要置灰(即enabled=false),那么此時對應的圖片也要變成灰色,而我又不想給每個按鈕去再弄一個灰色按鈕(主要不會PS),再者以后的系統是讓用戶可以自定義上傳用戶喜歡的圖片,這樣每次都要上傳兩張圖片,甚是麻煩。
            
                在這里想到一個辦法那就是利用Button的filters的屬性來使其圖片跟著按鈕的狀態自動改變,先看效果圖:

                在這里主要利用ColorMatrixFilter,該類是將 4 x 5的 矩陣轉換應用于輸入圖像上的每個像素的 RGBA 顏色和 Alpha 值,以生成具有一組新的 RGBA 顏色和 Alpha 值的結果。可以允許飽和度更改、色相旋轉、亮度為 Alpha 以及各種其它效果。它可以應用與基于DisplayObject 的子類,以及BitmapData 對象,這兩類的使用:
               1)、DisplayObject 的子類:使用filters 的屬性
               2)、BitmapData :使用 applyFilter() 方法獲得一個新的過濾對象
                
              下面看代碼:
          <?xml version="1.0" encoding="utf-8"?>
          <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
              
          <mx:Script>
                  
          <![CDATA[
                      import mx.core.IFlexDisplayObject;
                      [Embed('assets
          /google.gif')] 
                      private 
          var google:Class; 

                      private 
          var rLum:Number = 0.2225
                      private 
          var gLum:Number = 0.7169
                      private 
          var bLum:Number = 0.0606;  
                      [Bindable] 
                      private 
          var bwMatrix:Array = [rLum, gLum, bLum, 00
                                      rLum, gLum, bLum, 
          00
                                      rLum, gLum, bLum, 
          00
                                      
          00010];  
                      private 
          var _colorMatrix:ColorMatrixFilter;
                         
                     private 
          function get colorMatrix():ColorMatrixFilter
                     
          {
                          
          if(!_colorMatrix)
                          
          {
                               _colorMatrix 
          = new ColorMatrixFilter();
                               _colorMatrix.matrix 
          =  bwMatrix;
                          }

                             
          return _colorMatrix;
                     }

                     [Bindable]
                     private  
          var enable:Boolean = true;
                  ]]
          >
              
          </mx:Script>
              
          <mx:VBox>
                  
          <mx:Button id="btn1" icon="{google}" enabled="{enable}" 
                              filters
          ="{btn1.enabled ? null : [colorMatrix]}"/>
                  
          <mx:Button id="btn2" icon="{google}" enabled="{!enable}"
                              filters
          ="{btn2.enabled ? null : [colorMatrix]}"/>    
                  
          <mx:Button label="切換" click="{enable = !enable}"/>
              
          </mx:VBox>
          </mx:Application>

          針對不同對象也可以將其封裝到一個類中去,如對于按鈕就可以進行如下封裝,這樣就可以直接用這個類了,而不用分別設置了:
          package com.kissjava.controls
          {
              import flash.filters.ColorMatrixFilter;
              
              import mx.controls.Button;

              public class KJButton extends Button
              
          {
                  public 
          function KJButton()
                  
          {
                      super();
                  }

                  private 
          var rLum:Number = 0.2225
                  private 
          var gLum:Number = 0.7169
                  private 
          var bLum:Number = 0.0606;  
                  [Bindable] 
                  private 
          var bwMatrix:Array = [rLum, gLum, bLum, 00
                                  rLum, gLum, bLum, 
          00
                                  rLum, gLum, bLum, 
          00
                                  
          00010];  
                  private 
          var _colorMatrix:ColorMatrixFilter;
                         
                 private 
          function get colorMatrix():ColorMatrixFilter
                 
          {
                      
          if(!_colorMatrix)
                      
          {
                           _colorMatrix 
          = new ColorMatrixFilter();
                           _colorMatrix.matrix 
          =  bwMatrix;
                      }

                         
          return _colorMatrix;
                 }

                  override public 
          function set enabled(value:Boolean):void
                  
          {
                      super.enabled 
          = velue;
                      
          this.filters = value ? null : [colorMatrix]
                  }

              }

          }
          posted on 2009-04-12 12:31 kissjava 閱讀(983) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 苏州市| 澄迈县| 南靖县| 会理县| 武义县| 阜南县| 呈贡县| 长岭县| 南雄市| 昆山市| 民权县| 长治县| 武邑县| 石台县| 连城县| 清流县| 盘锦市| 尉氏县| 宣城市| 高邮市| 永丰县| 汉川市| 临江市| 焉耆| 石林| 科技| 蕉岭县| 伊春市| 冀州市| 攀枝花市| 新乡市| 墨玉县| 四会市| 博客| 英德市| 彩票| 鹤岗市| 霍山县| 雅安市| 高要市| 左贡县|