《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 設(shè)計(jì)應(yīng)用 > Flash中利用ActionScript3.0實(shí)現(xiàn)圖像的扭曲效果
Flash中利用ActionScript3.0實(shí)現(xiàn)圖像的扭曲效果
來源:微型機(jī)與應(yīng)用2012年第16期
陳銀鳳
(內(nèi)蒙古財(cái)經(jīng)大學(xué) 計(jì)算機(jī)信息管理學(xué)院,內(nèi)蒙古 呼和浩特 010051)
摘要: 主要在Flash CS3環(huán)境中利用ActionScript3.0腳本語言的BitmapData 類和DisplacementMapFilter濾鏡來實(shí)現(xiàn)圖像的扭曲效果。
Abstract:
Key words :

摘  要: 主要在Flash CS3環(huán)境中利用ActionScript3.0腳本語言的BitmapData 類和DisplacementMapFilter濾鏡來實(shí)現(xiàn)圖像的扭曲效果。
關(guān)鍵詞: Flash; ActionScript; BitmapData; 扭曲

    Flash與Dreamweaver、Fireworks一起被稱作“網(wǎng)頁制作三劍客”[1]。隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,F(xiàn)lash已成為當(dāng)今網(wǎng)絡(luò)世界中的熱點(diǎn)技術(shù),其使用者可以充分發(fā)揮自己的想象力,設(shè)計(jì)和創(chuàng)作出具有圖形、聲音、視頻和動(dòng)畫的各種交互內(nèi)容,從而使廣告、網(wǎng)站、游戲、賀卡、教學(xué)課件及音樂動(dòng)畫等真正獨(dú)具特色。
    與其他動(dòng)畫制作軟件相比,F(xiàn)lash制作的動(dòng)畫容量小、操作方便、綠色免安裝,非常適合在網(wǎng)絡(luò)中傳播。借助ActionScript能夠制作出更為細(xì)膩、逼真的動(dòng)畫。ActionScript是Flash專用的腳本語言,采用面向?qū)ο蟮木幊趟枷耄ǔR詣?dòng)畫中的關(guān)鍵幀、按鈕實(shí)例、影片剪輯實(shí)例作為對(duì)象來對(duì)ActionScript進(jìn)行定義和編寫,以幫助用戶按照自己的意愿更加精確地創(chuàng)建動(dòng)畫,實(shí)現(xiàn)自己的意圖。ActionScript由Flash Player中的ActionScript虛擬機(jī)(AVM)來解釋執(zhí)行,其代碼通常被編譯器編譯成“字節(jié)碼格式”,字節(jié)碼嵌入SWF文件中,SWF文件由運(yùn)行時(shí)環(huán)境Flash Player執(zhí)行。ActionScript的版本已從1.0發(fā)展到如今的3.0,虛擬機(jī)也從AVM發(fā)展為支持ActionScript 3.0的新一代AVM2,其執(zhí)行速度是之前ActionScript版本的10倍。ActionScript 3.0旨在方便創(chuàng)建擁有大型數(shù)據(jù)集和面向?qū)ο蟮目芍赜么a庫(kù)的高度復(fù)雜應(yīng)用程序。
     本文主要闡述在Flash CS3環(huán)境中利用ActionScript3.0的BitmapData類和DisplacementMapFilter濾鏡實(shí)現(xiàn)圖像的扭曲效果。Flash CS3是Adobe公司收購(gòu)Macromedia公司后將Macromedia Flash更名為Adobe Flash后的一款動(dòng)畫軟件。
1 BitmapData類和DisplacementMapFilter濾鏡
1.1 BitmapData 類

    使用BitmapData類可以處理Bitmap對(duì)象的數(shù)據(jù)(像素)。可以使用 BitmapData 類的方法創(chuàng)建任意大小的透明或不透明位圖圖像,并在運(yùn)行時(shí)采用多種方式操作這些圖像。也可以訪問使用flash.display.Loader類加載的位圖圖像的BitmapData。此類允許將位圖呈現(xiàn)操作與Flash Player的內(nèi)部顯示更新例程分隔開來。通過直接操作BitmapData對(duì)象,用戶可以創(chuàng)建非常復(fù)雜的圖像,不會(huì)因連續(xù)重新繪制矢量數(shù)據(jù)的內(nèi)容而產(chǎn)生每幀開銷。BitmapData類的方法支持多種無法通過通用濾鏡接口獲得的效果。BitmapData對(duì)象包含像素?cái)?shù)據(jù)的數(shù)組。該數(shù)據(jù)可以表示完全不透明的位圖,或表示包含Alpha通道數(shù)據(jù)的透明位圖。以上任一類型的BitmapData對(duì)象都作為32 bit整數(shù)的緩沖區(qū)進(jìn)行存儲(chǔ)。每個(gè)32 bit整數(shù)確定位圖中單個(gè)像素的屬性。
    每個(gè)32 bit整數(shù)都是4個(gè)8 bit通道值(從0~255)的組合,這些值描述像素的Alpha及紅色、綠色、藍(lán)色的(ARGB)值。當(dāng)將4個(gè)通道(紅色、綠色、藍(lán)色和Alpha)與BitmapData.copyChannel()方法或DisplacementMapFilter.componentX屬性和DisplacementMapFilter.componentY屬性一起使用時(shí),這些通道以數(shù)字形式表示,分別為:1(紅色)、2(綠色)、4(藍(lán)色)和8(Alpha)。
    (1)構(gòu)造函數(shù)
    BitmapData(width:Number, height:Number, [transparent:Boolean], [fillColor:Number])
     (2)公共屬性
     height:Number[只讀]:位圖圖像的高度,以像素為單位。
     rectangle:Rectangle[只讀]:定義位圖圖像大小和位置的矩形。
     transparent:Boolean [只讀]:定義位圖圖像是否支持每個(gè)像素具有不同的透明度。
     width:Number[只讀]:位圖圖像的寬度,以像素為單位。
1.2 DisplacementMapFilter濾鏡
    DisplacementMapFilter類使用指定的 BitmapData對(duì)象(稱為置換圖圖像)的像素值執(zhí)行對(duì)象置換。可以使用此濾鏡將扭曲或斑點(diǎn)效果應(yīng)用于從 DisplayObject 類中繼承的任何對(duì)象,例如MovieClip、SimpleButton、TextField、Video對(duì)象以及BitmapData對(duì)象。
     DisplacementMapFilter需要有一個(gè)灰度圖像作為置換映射圖像,并基于這個(gè)映射圖像的像素對(duì)另外一個(gè)圖像進(jìn)行扭曲。映射圖像中比中性灰亮的像素在目標(biāo)圖像中對(duì)應(yīng)位置上向左上角移動(dòng),較暗的像素則向右下角移動(dòng)。
    (1)構(gòu)造函數(shù)
    DisplacementMapFilter(mapBitmap:BitmapData=null, mapPoint:Point=null, componentX:uint=0, componentY:uint=0, scaleX:Number=0.0, scaleY:Number=0.0,mode:String="wrap", color:uint=0, alpha:Number=0.0)
     (2)公共屬性
     alpha: Number                  //指定對(duì)于超出范圍的替換
                               應(yīng)用的Alpha透明度值
     color:uint     //指定對(duì)于超出范圍的替換應(yīng)用什么顏色
     componentX:uint              //說明在映射圖像中使用哪個(gè)
                               顏色通道來置換x結(jié)果
     componentY:uint          //說明在映射圖像中使用哪個(gè)
                          顏色通道來置換y結(jié)果
    mapBitmap:BitmapData             //包含置換映射數(shù)據(jù)的
                                   BitmapData對(duì)象
    mapPoint:Point        //一個(gè)值,它包含目標(biāo)顯示對(duì)象的左
                      上角相對(duì)于映射圖像左上角的偏移量
    mode:String                                 //濾鏡模式
    scaleX:Number            //用于縮放映射計(jì)算的x
                              置換結(jié)果的乘數(shù)
     scaleY:Number              //用于縮放映射計(jì)算的y
                              置換結(jié)果的乘數(shù)。
2 應(yīng)用置換映射濾鏡創(chuàng)建圖像扭曲效果
    使用BitmapData對(duì)象[1]和DisplacementMapFilter濾鏡可以實(shí)現(xiàn)圖像的扭曲效果。DisplacementMapFilter類使用BitmapData對(duì)象(稱為置換圖圖像)中的像素值在新對(duì)象上執(zhí)行置換效果。通常,置換圖圖像與將要應(yīng)用濾鏡的實(shí)際顯示對(duì)象或BitmapData實(shí)例不同。置換效果包括置換過濾的圖像中的像素,也就是說,將這些像素移開原始位置一定距離。
     實(shí)現(xiàn)步驟:
     (1)新建一個(gè)Flash文檔,設(shè)置其舞臺(tái)大小為340×220像素,背景為白色。
    (2)選中圖層1,命名為“圖像層”,導(dǎo)入準(zhǔn)備好的一張圖片到舞臺(tái),圖片大小設(shè)置為164×220像素,選中該圖片并轉(zhuǎn)化為影片剪輯,元件名為“image”。選中舞臺(tái)中的image影片剪輯實(shí)例,命名為“pic”,并在舞臺(tái)中靠左放置。從庫(kù)中再次拖入一個(gè)image影片剪輯實(shí)例,無需命名,舞臺(tái)中靠右放置(為與扭曲效果作對(duì)比)。
     (3)菜單欄中點(diǎn)擊 “插入/新建元件” ,選擇影片剪輯,元件命名為“displacer”,進(jìn)入元件編輯環(huán)境。在圖層1中,使用矩形工具繪制一個(gè)164×220的無邊框灰色矩形,如圖1所示。新建圖層2,在右下角繪制一個(gè)直徑為108像素的正圓,顏色填充為放射狀(3個(gè)色塊均勻分布,從左到右顏色值分別為:#956A89、#6B1452、#000000;Alpha值分別為:100%、50%、0%),如圖2所示。

    

 

    (4)回到場(chǎng)景中,新建圖層2,命名為“displacer層”,將displacer影片剪輯拖入舞臺(tái),影片剪輯實(shí)例命名為“dis”。其正好放置在“pic”實(shí)例的正上方。
      (5)新建圖層3,命名為“AS”,選中第一幀,打開“動(dòng)作”面板,輸入如下代碼:
     import flash.display.BitmapData;
    import flash.geom.Point;
  import flash.filters.DisplacementMapFilter;
                    //沿著x軸替換通道1(紅色)上的像素
    var componentX:Number = 1;
                  //沿著y軸替換通道2(綠色)上的像素
    var componentY:Number = 2;
                                   //沿著x軸替換的強(qiáng)度
    var scale_X:Number = -128;
                                  //沿著y軸替換的強(qiáng)度
    var scale_Y:Number = -128;
                  //使用ignore模式可以顯示下面扭曲的圖像
    var mode:String = "ignore";                  //偏移量
    var offset:Point = new Point(0, 0);
                  //構(gòu)建一個(gè)空的BitmapData實(shí)例,并將影
                  片剪輯實(shí)例讀進(jìn)該實(shí)例
    var myBitmapData:BitmapData=new BitmapData(pic.width,
        pic.height);
                  //創(chuàng)建一個(gè)DisplacementMapFilter濾鏡實(shí)例
    var myFilter:DisplacementMapFilter = new Displacement
        MapFilter(myBitmapData,offset,componentX,componentY,
         scale_X, scale_Y, mode);
    myBitmapData.draw(dis);//為影片剪輯實(shí)例pic應(yīng)用濾鏡
      pic.filters = [myFilter];
      dis.visible = false;
    (4)保存文檔,按Ctrl+Enter鍵進(jìn)行執(zhí)行,測(cè)試圖像的扭曲效果。如圖3左側(cè)所示,影片剪輯實(shí)例pic出現(xiàn)扭曲效果。

     由于Flash制作出的動(dòng)畫體積小,非常適合在網(wǎng)絡(luò)中傳播,所以深受廣大網(wǎng)民的喜愛。要想在Flash環(huán)境中制作出效果逼真的動(dòng)畫,ActionScript是不可或缺的部分。ActionScript是針對(duì)Flash Player運(yùn)行時(shí)環(huán)境的編程語言,它用于處理各種人機(jī)交互、數(shù)據(jù)交互等功能,目前主要采用的版本是ActionScript3.0。ActionScript3.0與Flash CS3(或以上版本)相結(jié)合,可以創(chuàng)建出各種不同的應(yīng)用特效,實(shí)現(xiàn)豐富多彩的動(dòng)畫效果。本文中正是利用ActionScript3.0的BitmapData類和DisplacementMapFilter濾鏡實(shí)現(xiàn)了圖像的扭曲效果。Flash中專業(yè)制作動(dòng)畫者可以借助ActionScript3.0,更加充分地發(fā)揮想象力,隨心所欲地制作出交互性極強(qiáng)的復(fù)雜動(dòng)畫, 體現(xiàn)美侖美換的意境。
參考文獻(xiàn)
[1] 張亞飛.Flash ActionScript 3.0開發(fā)王[M].北京:電子工業(yè)出版社,2008.
[2] 王傳華.Flash MX 2004實(shí)例教程[M].北京:清華大學(xué)出版社,2004.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
免费成人av| 国产精品一区二区三区观看| 亚洲欧美精品一区| 99精品欧美一区二区蜜桃免费| 欧美诱惑福利视频| 欧美一区二区三区精品| 亚洲欧美日韩国产一区二区三区| 中文亚洲免费| 亚洲一区二区3| 亚洲主播在线观看| 亚洲欧美日韩精品一区二区| 亚洲一区二区在线观看视频| 中文精品视频| 亚洲性线免费观看视频成熟| 亚洲性感美女99在线| 亚洲一区二区三区在线观看视频| 亚洲天堂av在线免费观看| 亚洲一区二区三区国产| 午夜精品久久久久久久99热浪潮| 性欧美在线看片a免费观看| 性色av一区二区三区| 久久精品免视看| 最近看过的日韩成人| 亚洲精品在线观看免费| 99精品视频一区| 亚洲伊人伊色伊影伊综合网| 午夜精品一区二区三区在线播放| 午夜精品亚洲一区二区三区嫩草| 欧美一区二视频| 久久婷婷丁香| 欧美国产免费| 欧美色精品天天在线观看视频| 国产精品v亚洲精品v日韩精品 | 国产精品porn| 国产精品一区二区在线观看不卡| 好吊一区二区三区| 亚洲国产高清在线| 99ri日韩精品视频| 亚洲女女做受ⅹxx高潮| 久久国产直播| 一本一本久久a久久精品综合妖精| 亚洲在线成人| 久久久久久穴| 欧美精品亚洲二区| 国产精品欧美久久| 黄色小说综合网站| 日韩五码在线| 亚洲欧美日韩系列| 亚洲精品一区在线观看| 午夜国产精品视频| 毛片基地黄久久久久久天堂| 欧美四级伦理在线| 国内精品嫩模av私拍在线观看| 亚洲人成在线观看| 亚洲欧洲av一区二区| 亚洲精品男同| 欧美在线视频一区| 欧美精品一区二区精品网| 国产伦精品一区二区三区免费迷| 亚洲大片精品永久免费| 亚洲一区黄色| 亚洲人在线视频| 欧美伊久线香蕉线新在线| 欧美a级一区| 国产精品丝袜xxxxxxx| 亚洲第一综合天堂另类专| 亚洲一区中文| 亚洲人在线视频| 久久国产精品99国产| 欧美人与禽猛交乱配| 国产欧美在线播放| 亚洲久久在线| 久久国产主播精品| 午夜视频久久久久久| 欧美巨乳在线| 伊人久久大香线蕉av超碰演员| 亚洲午夜未删减在线观看| 亚洲麻豆视频| 久久亚洲一区二区| 国产精品久久久一本精品| 亚洲国产精品www| 久久国产精品99国产精| 亚洲男女自偷自拍图片另类| 欧美精品一区在线| 狠狠色综合网| 午夜视黄欧洲亚洲| 亚洲一二三区精品| 欧美高清视频一区| 韩国女主播一区| 午夜精品一区二区三区电影天堂 | 欧美一级久久久久久久大片| 欧美精品偷拍| 亚洲福利视频免费观看| 欧美在线精品免播放器视频| 欧美亚洲免费电影| 欧美特黄一区| 亚洲乱码视频| 亚洲精品小视频| 麻豆精品国产91久久久久久| 国产一区观看| 欧美一区二区三区啪啪| 午夜欧美大尺度福利影院在线看 | 亚洲二区在线视频| 久久精品91久久香蕉加勒比| 亚欧美中日韩视频| 国产精品一卡| 亚洲天堂成人| 亚洲欧美日韩另类精品一区二区三区| 欧美日韩国产在线播放网站| 91久久久精品| 亚洲精品九九| 欧美国产日产韩国视频| 亚洲国产你懂的| 亚洲精品网站在线播放gif| 欧美大片免费观看在线观看网站推荐| 伊人狠狠色j香婷婷综合| 久久国内精品视频| 久久婷婷成人综合色| 红桃视频国产一区| 久久精品一区二区国产| 久久夜色精品国产亚洲aⅴ| 国产亚洲一区在线播放| 欧美一区亚洲一区| 久久久久免费视频| 永久久久久久| 亚洲精品小视频| 欧美日韩理论| 一本久道综合久久精品| 亚洲欧美日韩国产精品| 国产精品一区二区在线| 欧美一区二区三区免费观看| 久久久久综合网| **欧美日韩vr在线| 亚洲精品免费在线观看| 欧美精品午夜| 在线一区日本视频| 性欧美8khd高清极品| 国产一区二区av| 亚洲国产综合在线| 欧美日韩国产成人高清视频| 一区二区成人精品| 性色av一区二区怡红| 韩国av一区| 99re6热在线精品视频播放速度| 欧美久久久久久| 亚洲性线免费观看视频成熟| 久久激情视频| 亚洲第一网站免费视频| 99国产麻豆精品| 欧美亚韩一区| 久久国产福利| 欧美日韩高清免费| 午夜精品久久久久久久久久久久| 久久综合图片| 日韩图片一区| 欧美在线网站| 亚洲高清视频中文字幕| 亚洲视频精选在线| 国产一区清纯| 99精品久久免费看蜜臀剧情介绍| 国产精品久久久久久久app| 久久国产精品久久久久久电车| 免费欧美电影| 一区二区三区久久久| 久久久久国产精品人| 亚洲精品一区二区三区樱花| 性色av香蕉一区二区| 国产人久久人人人人爽| 欧美日韩国产美| 亚洲视频在线一区观看| 久久精品国产一区二区三区免费看| 精品动漫一区| 亚洲午夜在线视频| 国产亚洲一区二区三区| 日韩视频一区二区三区在线播放免费观看 | 久久不射2019中文字幕| 亚洲高清在线| 欧美影院在线播放| 亚洲精美视频| 久久精品在线| 日韩一区二区精品葵司在线| 久久精品最新地址| 夜夜嗨网站十八久久| 久久免费高清视频| 亚洲色诱最新| 欧美国产亚洲另类动漫| 西西裸体人体做爰大胆久久久| 欧美肥婆在线| 午夜精品美女自拍福到在线 | 久久激情视频久久| 欧美亚州一区二区三区| 亚洲国产视频一区| 国产精品人人爽人人做我的可爱| 亚洲人成人77777线观看| 国产欧美日本在线| 亚洲色图自拍| 亚洲成人在线网站| 久久久国产成人精品| 亚洲丝袜av一区| 欧美日韩国产麻豆|