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

            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 閱讀(978) 評論(0)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 蒙山县| 西和县| 革吉县| 乌苏市| 深圳市| 雷波县| 竹山县| 太康县| 高台县| 天镇县| 承德市| 元朗区| 澎湖县| 体育| 张家川| 泽库县| 南丹县| 福清市| 封丘县| 商都县| 玉树县| 武城县| 体育| 丰顺县| 翁牛特旗| 娄底市| 沁水县| 兴山县| 乃东县| 诏安县| 安乡县| 洛扎县| 南投县| 湘西| 鸡东县| 常山县| 南雄市| 上虞市| 武平县| 久治县| 秭归县|