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

摘  要: 主要在Flash CS3環境中利用ActionScript3.0腳本語言的BitmapData 類和DisplacementMapFilter濾鏡來實現圖像的扭曲效果。
關鍵詞: Flash; ActionScript; BitmapData; 扭曲

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

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

    

 

    (4)回到場景中,新建圖層2,命名為“displacer層”,將displacer影片剪輯拖入舞臺,影片剪輯實例命名為“dis”。其正好放置在“pic”實例的正上方。
      (5)新建圖層3,命名為“AS”,選中第一幀,打開“動作”面板,輸入如下代碼:
     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軸替換的強度
    var scale_X:Number = -128;
                                  //沿著y軸替換的強度
    var scale_Y:Number = -128;
                  //使用ignore模式可以顯示下面扭曲的圖像
    var mode:String = "ignore";                  //偏移量
    var offset:Point = new Point(0, 0);
                  //構建一個空的BitmapData實例,并將影
                  片剪輯實例讀進該實例
    var myBitmapData:BitmapData=new BitmapData(pic.width,
        pic.height);
                  //創建一個DisplacementMapFilter濾鏡實例
    var myFilter:DisplacementMapFilter = new Displacement
        MapFilter(myBitmapData,offset,componentX,componentY,
         scale_X, scale_Y, mode);
    myBitmapData.draw(dis);//為影片剪輯實例pic應用濾鏡
      pic.filters = [myFilter];
      dis.visible = false;
    (4)保存文檔,按Ctrl+Enter鍵進行執行,測試圖像的扭曲效果。如圖3左側所示,影片剪輯實例pic出現扭曲效果。

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

此內容為AET網站原創,未經授權禁止轉載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲激情网站免费观看| 欧美一区二区三区在线看| 亚洲影院在线观看| 亚洲美女黄色| 91久久精品网| 在线视频国产日韩| 黄色小说综合网站| 国产一区二区三区黄| 国产精品尤物| 国产欧美精品一区aⅴ影院| 欧美午夜精品伦理| 欧美日韩精品二区| 欧美日韩国产精品专区| 欧美极品一区| 欧美美女bb生活片| 欧美精品一线| 欧美三日本三级三级在线播放| 欧美日韩国产区| 欧美日韩二区三区| 欧美日韩亚洲高清一区二区| 欧美精品三级| 欧美日韩国产色综合一二三四| 欧美国产日韩在线观看| 欧美不卡福利| 欧美美女福利视频| 欧美日韩午夜激情| 欧美日韩直播| 国产精品国产三级国产aⅴ无密码| 国产精品久久久久999| 国产精品一区一区| 国产亚洲一区二区三区| 黄色av一区| 亚洲激情一区| 一区二区三区四区五区精品视频| 亚洲中字黄色| 日韩视频二区| 国产欧美一区二区精品忘忧草| 国产精品一区亚洲| 国产真实精品久久二三区| 伊人色综合久久天天五月婷| 亚洲三级电影全部在线观看高清| 9i看片成人免费高清| 亚洲午夜女主播在线直播| 香蕉成人伊视频在线观看| 久久成人18免费观看| 亚洲精品久久久久久久久| 一区二区三区偷拍| 欧美影院久久久| 美女爽到呻吟久久久久| 欧美日韩 国产精品| 国产精品久久97| 国产在线欧美日韩| 亚洲三级影片| 亚洲欧美日韩国产一区二区三区| 久久精品99国产精品| 亚洲理论在线观看| 亚洲欧美一级二级三级| 久久久久.com| 欧美日本中文| 国产午夜精品视频| 亚洲国产小视频在线观看| 中文日韩电影网站| 久久精品国产77777蜜臀| 日韩视频一区二区三区| 亚洲欧美欧美一区二区三区| 久久婷婷国产综合国色天香| 欧美日本在线| 国产一区二区三区高清| 亚洲精品在线视频观看| 性欧美激情精品| 一本久道久久综合狠狠爱| 欧美在线视频免费播放| 欧美激情视频一区二区三区免费| 国产美女一区| 亚洲乱码久久| 久久精品国产99国产精品| 亚洲一区二区三区欧美| 免费人成精品欧美精品| 国产麻豆一精品一av一免费| 亚洲精品网址在线观看| 欧美在线观看网址综合| 在线亚洲成人| 农夫在线精品视频免费观看| 国产伦精品一区二区三区视频孕妇 | 欧美在线观看网站| 欧美久久久久久蜜桃| 国产农村妇女毛片精品久久麻豆| 亚洲肉体裸体xxxx137| 亚洲高清激情| 久久狠狠婷婷| 欧美性开放视频| 亚洲精品久久久久久久久| 亚洲国产精品一区制服丝袜| 欧美一区二区三区免费视频| 国产精品爱啪在线线免费观看| 91久久国产综合久久蜜月精品| 欧美在线免费观看亚洲| 西瓜成人精品人成网站| 欧美日韩亚洲91| 亚洲另类黄色| 亚洲片国产一区一级在线观看| 久久久无码精品亚洲日韩按摩| 欧美亚洲成人网| aⅴ色国产欧美| 一区二区日本视频| 欧美久久久久免费| 亚洲欧洲日产国产综合网| 亚洲激情社区| 免费看黄裸体一级大秀欧美| 红桃视频一区| 亚洲高清自拍| 久久天天躁狠狠躁夜夜av| 国产日韩精品一区二区| 亚洲砖区区免费| 亚洲欧美中日韩| 国产精品嫩草99av在线| 中日韩美女免费视频网址在线观看 | 在线欧美日韩| 亚洲黄色一区| 暖暖成人免费视频| 亚洲国产婷婷综合在线精品 | 中文亚洲视频在线| 欧美久久久久久| 亚洲美女在线观看| 日韩系列在线| 欧美精品不卡| 日韩一区二区精品在线观看| 一区二区三区成人| 欧美日韩人人澡狠狠躁视频| 亚洲免费黄色| 亚洲你懂的在线视频| 国产精品久在线观看| 亚洲女人小视频在线观看| 欧美在线在线| 国产午夜亚洲精品理论片色戒| 欧美一区二区三区四区视频| 久久免费偷拍视频| 亚洲二区在线观看| 99热这里只有精品8| 欧美日韩一区二区三区视频| 国产精品99久久久久久久vr| 欧美一区亚洲一区| 影音先锋亚洲精品| 99视频日韩| 国产精品久久久久国产精品日日 | 一区二区三区免费观看| 午夜日韩福利| 国产亚洲欧洲| 亚洲精选国产| 欧美午夜精品久久久久久孕妇| 亚洲一区www| 久久深夜福利免费观看| 亚洲狠狠婷婷| 亚洲女人小视频在线观看| 国产日韩亚洲欧美综合| 亚洲欧洲三级电影| 欧美视频免费看| 欧美亚洲自偷自偷| 欧美激情精品久久久久久久变态| 一区二区三区产品免费精品久久75| 亚洲欧美在线看| 在线观看中文字幕不卡| 一区二区三区成人精品| 国产农村妇女精品| 亚洲人体一区| 国产精品久久综合| 亚洲国产电影| 国产精品video| 久久精品一区二区三区四区| 欧美人与禽猛交乱配视频| 亚洲一区二区三区四区五区午夜| 久久久青草婷婷精品综合日韩| 亚洲精品国产精品久久清纯直播 | 欧美精品免费视频| 亚洲免费在线精品一区| 麻豆久久婷婷| 亚洲无线视频| 欧美成人xxx| 亚洲资源av| 欧美第一黄网免费网站| 亚洲一区二区三区乱码aⅴ| 久久亚洲风情| 中国成人黄色视屏| 欧美a级片网| 亚洲中午字幕| 欧美精品v日韩精品v国产精品| 亚洲欧美中文日韩v在线观看| 免费成人av在线| 亚洲制服少妇| 欧美理论电影在线播放| 欧美一区二区在线| 欧美日韩美女| 亚洲福利在线观看| 国产精品无人区| 一本色道久久综合狠狠躁篇怎么玩| 国产视频一区在线观看一区免费| 日韩视频一区二区| 国产一区二区三区在线免费观看| 一本色道久久综合亚洲精品不| 国产一区二区三区无遮挡|