• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            xiaoguozi's Blog
            Pay it forword - 我并不覺的自豪,我所嘗試的事情都失敗了······習(xí)慣原本生活的人不容易改變,就算現(xiàn)狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預(yù)料,人們需要更細(xì)心的觀察別人,要隨時注意才能保護(hù)別人,因為他們未必知道自己要什么·····
            ActionScript 3.0中,可以創(chuàng)建位圖圖像,還可以把外部的位圖圖像加載到Flash Player中。使用位圖類,可以處理位圖的像素和雜點。通過濾鏡類,還可以增加位圖的各種濾鏡效果。
            19.1  位圖類
            常用的有關(guān)位圖的類有三個:Bitmap類、BitmapData類和BitmapDataChannel類。Bitmap類用來顯示位圖圖像,BitmapData類用來處理位圖,BitmapDataChannel類是個枚舉值,表示使用的通道。
             19.1.1  Bitmap
            Bitmap類表示位圖圖像的顯示對象。可以使用Bitmap類的構(gòu)造函數(shù)創(chuàng)建圖像,也可以使用Loader類加載外部圖像。Bitmap類常用的屬性如表19.1所示。
            表19.1  Bitmap類常用的屬性
               
               
            bitmapData
            被引用的BitmapData對象
            pixelSnapping
            控制Bitmap對象是否貼緊至最近的像素
            smoothing
            控制在縮放時是否對位圖進(jìn)行平滑處理
             19.1.2  BitmapData
            BitmapData類用來處理Bitmap對象的數(shù)據(jù)。BitmapData類可以在程序運行時,任意調(diào)整位圖的大小、透明度、像素等。BitmapData類常用的屬性如表19.2所示,常用的方法如表19.3所示。
            表19.2  BitmapData類常用的屬性
               
               
            height
            位圖圖像的高度
            rect
            定義位圖圖像大小和位置的矩形
            transparent
            定義位圖圖像是否支持每個像素具有不同的透明度
            width
            位圖圖像的寬度
            表19.3  BitmapData對象常用的方法
               
               
            applyFilter
            取得一個源圖像和一個濾鏡對象,并生成過濾的圖像
            clone
            返回一個新的BitmapData對象,它是對原始實例的克隆,包含與原始實例所含位圖完全相同的副本
            colorTransform
            使用ColorTransform對象調(diào)整位圖圖像的指定區(qū)域中的顏色值
            compare
            比較兩個BitmapData對象
            copyChannel
            將數(shù)據(jù)從另一個BitmapData對象或當(dāng)前BitmapData對象的一個通道傳輸?shù)疆?dāng)前BitmapData對象的某個通道中
            copyPixels
            為沒有拉伸、旋轉(zhuǎn)或色彩效果的圖像之間的像素處理提供一個快速例程
            dispose
            釋放用來存儲BitmapData對象的內(nèi)存
            draw
            使用Flash Player矢量渲染器在位圖圖像上繪制source顯示對象
            fillRect
            使用指定的ARGB顏色填充一個矩形像素區(qū)域
            floodFill
            對圖像執(zhí)行傾倒填充操作,從(x, y)坐標(biāo)開始,填充一種特定的顏色
            generateFilterRect
            已知BitmapData對象、源矩形和濾鏡對象,確定applyFilter()方法調(diào)用所影響的目標(biāo)矩形
            getColorBoundsRect
            確定矩形區(qū)域是將位圖圖像中指定顏色的所有像素完全包括起來(如果將findColor參數(shù)設(shè)置為true),還是將不包括指定顏色的所有像素完全包括起來(如果將findColor參數(shù)設(shè)置為false
            getPixel
            返回一個整數(shù),它表示BitmapData對象中在特定點(x, y 處的RGB 像素值
            getPixel32
            返回一個ARGB顏色值,它包含Alpha通道數(shù)據(jù)和RGB數(shù)據(jù)
            getPixels
            從像素數(shù)據(jù)的矩形區(qū)域生成一個字節(jié)數(shù)組
            hitTest
            在一個位圖圖像與一個點、矩形或其他位圖圖像之間執(zhí)行像素級的點擊檢測 
            lock
            鎖定圖像,以使引用BitmapData對象的任何對象(如Bitmap對象)在此BitmapData對象更改時不會更新
            merge
            對每個通道執(zhí)行從源圖像向目標(biāo)圖像的混合
            noise
            使用表示隨機(jī)雜點的像素填充圖像
            paletteMap
            重新映射一個具有最多四組調(diào)色板數(shù)據(jù)(每個通道一組)的圖像中的顏色通道值
            perlinNoise
            生成Perlin雜點圖像
            pixelDissolve
            執(zhí)行源圖像到目標(biāo)圖像的像素溶解,或使用同一圖像執(zhí)行像素溶解
            scroll
            按某一(x, y)像素量滾動圖像
            setPixel
            設(shè)置BitmapData對象的單個像素
            setPixel32
            設(shè)置BitmapData對象單個像素的顏色和Alpha透明度值
            setPixels
            將字節(jié)數(shù)組轉(zhuǎn)換為像素數(shù)據(jù)的矩形區(qū)域
            threshold
            根據(jù)指定的閾值測試圖像中的像素值,并將通過測試的像素設(shè)置為新的顏色值
            unlock
            解除鎖定圖像,以使引用BitmapData對象的任何對象(如Bitmap對象)在此BitmapData對象更改時更新
             19.1.3  創(chuàng)建位圖類
            通常情況下,Bitmap類和BitmapData類是結(jié)合在一起使用的。Bitmap類的構(gòu)造函數(shù)的語法格式如下所示:
            Bitmap(bitmapData:BitmapData = null, pixelSnapping:String = "auto", smoothing:Boolean = false)
            其各個參數(shù)的說明如下。
            —  bitmapData:被引用的BitmapData對象。
            —  pixelSnapping:默認(rèn)值為auto,表示Bitmap對象是否貼緊至最近的像素。
            —  smoothing:默認(rèn)值為false,表示在縮放時是否對位圖進(jìn)行平滑處理。
            BitmapData類的構(gòu)造函數(shù)的語法格式如下所示:
            BitmapData(width:int, height:int, transparent:Boolean = true, fillColor:uint = 0xFFFFFFFF)
            其各個參數(shù)的說明如下。
            —  width:位圖圖像的寬度,以像素為單位。
            —  height:位圖圖像的高度,以像素為單位。
            —  transparent:指定位圖圖像是否支持每個像素具有不同的透明度。
            —  fillColor:用于填充位圖圖像區(qū)域的32位ARGB顏色值。
            下面的示例使用兩個位圖類,創(chuàng)建一個矩形,代碼如下所示:
            package 
            {
                import flash.display.Sprite;
                import flash.display.Bitmap;
                import flash.display.BitmapData;
               
                public class BitmapExample extends Sprite
                {
                    /********************
                     * 構(gòu)造函數(shù)
                     * */
                    public function BitmapExample(
            )
                    {
                        // 創(chuàng)建BitmapData類
                        var bitmap:BitmapData = new BitmapData(400, 300, true, 0x500066FF);
                       
                        // 創(chuàng)建Bitmap類
                        var image:Bitmap = new Bitmap(bitmap);
                        // 設(shè)置顯示位置
                        image.x = 90;
                        image.y = 50;
                       
                        // 增加到舞臺
                        addChild(image);
                    }
                }
               
            }
            編譯代碼并運行,結(jié)果如圖19.1所示。
            圖19.1  創(chuàng)建位圖類
             19.1.4  加載外部圖像
            除了在內(nèi)部創(chuàng)建位圖之外,還可以加載外部的圖像到位圖中。加載外部的圖像,需要用到Loader對象。通過Loader對象的load()方法,可以加載外部的URL。下面的示例使用Loader對象,加載外部圖像到位圖中,代碼如下所示:
            package 
            {
                import flash.display.Sprite;
                import flash.display.Loader;
                import flash.events.Event;
                import flash.net.URLRequest;
                import flash.display.Bitmap;
                import flash.display.BitmapData;
               
                public class BitmapExample extends Sprite
                {
                    private var loader:Loader = new Loader();
                    /********************
                     * 構(gòu)造函數(shù)
                     * */
                    public function BitmapExample()
                    {
                        // 偵聽數(shù)據(jù)加載
                        loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
                        // 外部圖像URL
                        loader.load(new URLRequest("Bitmap.jpg"));
                    }
                    /********************
                     * 加載外部圖像到位圖
                     * */
                    public function onComplete(event:Event):void
                    {
                        // 創(chuàng)建位圖
                        var image:Bitmap = Bitmap(loader.content);
                        var bitmap:BitmapData = image.bitmapData;
                        addChild(image);
                       
                        // 設(shè)置
                        image.x = 20;
                        image.y = 30;
                    }
                }
               
            }
            編譯代碼并運行,結(jié)果如圖19.2所示。
            圖19.2  加載外部圖像
            19.2  像素的處理
            BitmapData類中,包含了一組用于像素處理的方法。使用這些方法可以處理單個像素,還可以處理像素數(shù)組。
             19.2.1  處理單個像素
            處理單個像素用到的方法包括:getPixel()、getPixel32()、setPixel()和setPixel32()。
            1getPixel()方法
            getPixel()方法表示在指定的點獲取位圖的RGB像素。此方法有兩個參數(shù),分別是指定點的橫坐標(biāo)和縱坐標(biāo)。其語法格式如下所示:
            getPixel(x:int, y:int):uint
            參數(shù)的詳細(xì)說明如下。
            —  x:指定點的橫坐標(biāo)。
            —  y:指定點的縱坐標(biāo)。
            下面的示例使用getPixel()方法獲取點(1,1)的RGB像素值,代碼如下所示:
            package 
            {
                import flash.display.Sprite;
                import flash.display.Bitmap;
                import flash.display.BitmapData;
               
                public class BitmapExample extends Sprite
                {
                    /********************
                     * 構(gòu)造函數(shù)
                     * */
                    public function BitmapExample()
                    {
                        // 創(chuàng)建BitmapData類
                        var bitmap:BitmapData = new BitmapData(400, 300, false, 0xCC66FF);
                       
                        // 設(shè)置像素
                        var i:uint = bitmap.getPixel(1, 1);
                       
                        // 輸出獲取的像素
                        trace(i.toString(16));
                    }
                }
               
            }
            編譯代碼并運行,輸出的效果如圖19.3所示。
            圖19.3  使用getPixel()方法處理單個像素
            2getPixel32()方法
            getPixel32()方法與getPixel()方法類似,區(qū)別是getPixel32()方法返回一個ARGB的像素值。其中返回值包含了透明度的值。其語法格式如下所示:
            getPixel32(x:int, y:int):uint
            參數(shù)的詳細(xì)說明如下。
            —  x:指定點的橫坐標(biāo)。
            —  y:指定點的縱坐標(biāo)。
            下面的示例使用getPixel32()方法,返回指定點的像素值,代碼如下所示:
            package 
            {
                import flash.display.Sprite;
                import flash.display.Bitmap;
                import flash.display.BitmapData;
               
                public class BitmapExample extends Sprite
                {
                    /********************
                     * 構(gòu)造函數(shù)
                     * */
                    public function BitmapExample()
                    {
                        // 創(chuàng)建BitmapData類
                        var bitmap:BitmapData = new BitmapData(400, 300, true, 0x50CC66FF);
                       
                        // 設(shè)置像素
                        var i:uint = bitmap.getPixel32(1, 1);
                       
                        // 輸出獲取的像素
                        trace(i.toString(16));
                    }
                }
               
            }
            編譯代碼并運行,輸出的結(jié)果如圖19.4所示。
            圖19.4  使用getPixel32()方法處理單個像素
            3setPixel()方法
            setPixel()方法用來設(shè)置BitmapData對象的單個像素。此方法有三個參數(shù),前兩個參數(shù)表示要設(shè)置單個像素的點,第三個參數(shù)color表示生成的像素RGB顏色。其語法格式如下所示:
            setPixel(x:int, y:int, color:uint):void
            參數(shù)的詳細(xì)說明如下所示:
            —  x:像素值會更改的像素的x位置。
            —  y:像素值會更改的像素的y位置。
            —  color:生成的像素的RGB顏色。
            下面的示例使用setPixel()方法,循環(huán)設(shè)置某些點的像素的RGB顏色,代碼如下所示:
            package 
            {
                import flash.display.Sprite;
                import flash.display.Bitmap;
                import flash.display.BitmapData;
               
                public class BitmapExample extends Sprite
                {
                    /********************
                     * 構(gòu)造函數(shù)
                     * */
                    public function BitmapExample()
                    {
                        // 創(chuàng)建BitmapData類
                        var bitmap:BitmapData = new BitmapData(400, 300, false, 0x000066FF);
                       
                        // 設(shè)置像素
                        for(var i:uint = 0; i < 300; i++)
                        {
                            bitmap.setPixel(20, i, 0xFFFFFF);
                            bitmap.setPixel(80, i, 0x000000);
                            bitmap.setPixel(160, i, 0x00CC00);
                        }
                       
                        // 創(chuàng)建Bitmap類
                        var image:Bitmap = new Bitmap(bitmap);
                        // 設(shè)置顯示位置
                        image.x = 90;
                        image.y = 50;
                       
                        // 增加到舞臺
                        addChild(image);
                    }
                }
               
            }
            編譯代碼并運行,結(jié)果如圖19.5所示。
            圖19.5  setPixel()方法處理單個像素
            4setPixel32()方法
            setPixel32()方法與setPixel()方法類似,不同的是,setPixel32()方法是設(shè)置ARGB(其中A表示透明度)的像素值。此方法的前兩個參數(shù)與setPixel()方法相同,最后一個參數(shù)表示生成的像素的ARGB顏色。其語法格式如下所示:
            setPixel32(x:int, y:int, color:uint):void
            參數(shù)的詳細(xì)說明如下所示:
            —  x:像素值會更改的像素的x位置。
            —  y:像素值會更改的像素的y位置。
            —  color:生成的像素的ARGB顏色。
            下面的示例使用setPixel32()方法,循環(huán)設(shè)置某些點的像素值,代碼如下所示:
            package 
            {
                import flash.display.Sprite;
                import flash.display.Bitmap;
                import flash.display.BitmapData;
               
                public class BitmapExample extends Sprite
                {
                    /********************
                     * 構(gòu)造函數(shù)
                     * */
                    public function BitmapExample()
                    {
                        // 創(chuàng)建BitmapData類
                        var bitmap:BitmapData = new BitmapData(400, 300, true, 0x700066FF);
                       
                        // 設(shè)置像素
                        for(var i:uint = 0; i < 300; i++)
                        {
                            bitmap.setPixel32(20, i, 0x20FF0000);
                            bitmap.setPixel32(21, i, 0x40FF0000);
                            bitmap.setPixel32(22, i, 0x60FF0000);
                            bitmap.setPixel32(23, i, 0x80FF0000);
                            bitmap.setPixel32(24, i, 0x00FF0000);
                        }
                       
                        // 創(chuàng)建Bitmap類
                        var image:Bitmap = new Bitmap(bitmap);
                        // 設(shè)置顯示位置
                        image.x = 90;
                        image.y = 50;
                       
                        // 增加到舞臺
                        addChild(image);
                    }
                }
               
            }
            編譯代碼并運行,結(jié)果如圖19.6所示。
            圖19.6  使用setPixel32()方法處理單個像素
             19.2.2  處理多個像素
            ActionScript 3.0除了能處理單個像素外,還能處理多個像素。處理多個像素,一般是與字節(jié)數(shù)組有關(guān)的,把字節(jié)數(shù)組與像素的矩形區(qū)域相互轉(zhuǎn)換。與處理多個元素有關(guān)的方法有兩個:getPixels()和setPixels()。
            1getPixels()方法
            getPixels()方法將像素的矩形區(qū)域轉(zhuǎn)換為一個字節(jié)數(shù)組并返回。getPixels()方法有一個參數(shù),表示當(dāng)前BitmapData對象中的一個矩形區(qū)域。其語法格式如下所示:
            getPixels(rect:Rectangle):ByteArray
            下面的示例使用getPixels()方法獲取矩形區(qū)域的像素值,代碼如下所示:
            package 
            {
                import flash.display.Sprite;
                import flash.display.Bitmap;
                import flash.display.BitmapData;
                import flash.geom.Rectangle;
                import flash.utils.ByteArray;
               
                public class BitmapExample extends Sprite
                {
                    /********************
                     * 構(gòu)造函數(shù)
                     * */
                    public function BitmapExample()
                    {
                        // 創(chuàng)建BitmapData類
                        var bitmap:BitmapData = new BitmapData(400, 300, true, 0x700066FF);
                       
                        var bounds:Rectangle = new Rectangle(0, 0,bitmap.width, bitmap.height);
                        var pixels:ByteArray = bitmap.getPixels(bounds);
                        trace("像素數(shù)組的長度" + pixels.length);
                        trace("以下是取幾個元素的值:");
                        trace(pixels[0]);
                        trace(pixels[4]);
                        trace(pixels[6]);
                        trace(pixels[10]);
                    }
                }
               
            }
            編譯代碼并運行,輸出的結(jié)果如圖19.7所示。
            圖19.7  使用getPixels()方法處理多個像素
            2setPixels()方法
            setPixels()方法將字節(jié)數(shù)組轉(zhuǎn)換為像素的矩形區(qū)域。其語法格式如下所示:
             setPixels(rect:Rectangle, inputByteArray:ByteArray):void
            參數(shù)說明如下。
            —  rect:指定BitmapData對象的矩形區(qū)域。
            —  inputByteArray:一個字節(jié)數(shù)組對象,由要在矩形區(qū)域中使用的32位未經(jīng)過相乘的像素值組成。
            package 
            {
                import flash.display.Sprite;
                import flash.display.Bitmap;
                import flash.display.BitmapData;
                import flash.geom.Rectangle;
                import flash.utils.ByteArray;
               
                public class BitmapExample extends Sprite
                {
                    /********************
                     * 構(gòu)造函數(shù)
                     * */
                    public function BitmapExample()
                    {
                        // 創(chuàng)建BitmapData對象
                        var bmd1:BitmapData = new BitmapData(200, 200, true, 0xFFCCCCCC);
                        var bmd2:BitmapData = new BitmapData(200, 200, true, 0xFFFF0000);
                        // 創(chuàng)建獲取像素的矩形區(qū)域
                        var rect:Rectangle = new Rectangle(20, 20, 150, 150);
                        var bytes:ByteArray = bmd1.getPixels(rect);
                        // 設(shè)置像素
                        bytes.position = 0;
                        bmd2.setPixels(rect, bytes);
                        // 創(chuàng)建Bitmap對象
                        var bm1:Bitmap = new Bitmap(bmd1);
                        addChild(bm1);
                        var bm2:Bitmap = new Bitmap(bmd2);
                        addChild(bm2);
                       
                        // 設(shè)置位置
                        bm1.x = 50;
                        bm1.y = 100;
                        bm2.x = 260;
                        bm2.y = 100;
                    }
                }
               
            }
            編譯代碼并運行,結(jié)果如圖19.8所示。

            http://leo398.blog.51cto.com/658992/341950
            posted on 2011-06-10 17:39 小果子 閱讀(8829) 評論(0)  編輯 收藏 引用 所屬分類: Flex
            色婷婷综合久久久久中文字幕| 国产精品久久精品| 伊人久久五月天| 久久99热这里只有精品66| 色妞色综合久久夜夜| 国产精品视频久久| 成人综合久久精品色婷婷| 国内精品久久久久影院优| 91精品国产91久久| 久久精品亚洲一区二区三区浴池 | 久久99精品久久久久久不卡| 性高朝久久久久久久久久| 久久精品夜夜夜夜夜久久| 无夜精品久久久久久| 青草影院天堂男人久久| 国产毛片欧美毛片久久久| 精品国产热久久久福利| 国产精品久久国产精品99盘| 久久强奷乱码老熟女网站| 久久91精品综合国产首页| 久久精品欧美日韩精品| 久久精品国产免费观看| 亚洲国产成人久久一区久久| 亚洲国产精品久久66| WWW婷婷AV久久久影片| 久久福利资源国产精品999| 免费一级欧美大片久久网| 一级做a爰片久久毛片16| 国产午夜精品久久久久免费视| A级毛片无码久久精品免费| 亚洲婷婷国产精品电影人久久| 久久久久久国产精品无码下载| 亚洲国产精品久久久久| 91精品无码久久久久久五月天 | 精品久久久久久中文字幕大豆网| 久久久精品视频免费观看| 久久艹国产| 伊人久久五月天| 日本强好片久久久久久AAA| 韩国免费A级毛片久久| 99热成人精品免费久久|