FlashAS3.0動畫程序設計案例教第7章_第1頁
FlashAS3.0動畫程序設計案例教第7章_第2頁
FlashAS3.0動畫程序設計案例教第7章_第3頁
FlashAS3.0動畫程序設計案例教第7章_第4頁
FlashAS3.0動畫程序設計案例教第7章_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

第7章 顯示編程FlashAS3.0

顯示列表處理顯示對象繪圖API

處理位圖顏色變換使用濾鏡7.1顯示列表

顯示列表是AS3.0中的一個新概念,用于組織出現在舞臺上的所有可視對象。一個Flash影片可能存在很多需要在舞臺上顯示的可視對象。7.1.1顯示列表結構舞臺是包括顯示對象的基礎容器。每個應用程序都有一個Stage對象,其中包含所有的屏幕顯示對象。舞臺是頂級容器,它位于顯示列表層次結構的頂部。所有的可視對象可分為顯示對象容器和普通顯示對象。顯示對象容器和普通顯示對象不同,它可以包含其他顯示對象或顯示對象容器。///////////////////////////////http://///7.1.2stage、root、this、parent

stage、root、parent是每個可視對象都具有的屬性。stage指舞臺對象,可以使用mysprite.stage的形式訪問舞臺對象,其中mysprite是自定義的可視對象名。root是影片文件(*.swf)的根,通常指的是主時間軸或文檔類對象。可以使用mysprite.root形式訪問影片文件的根對象。parent是指當前對象的上一級容器對象。比如,在主場景的時間軸中,this.parent代表舞臺。

this是AS3.0的保留關鍵字,指的是當前所在的對象。比如,如果代碼出現在主時間軸的關鍵幀中,那么this就代表root。

7.1.3核心顯示類

AS3.0的flash.display包中包括可在FlashPlayer中顯示的可視對象的類。

7.2處理顯示對象7.2.1在顯示列表中添加顯示對象實例化顯示對象時,在將顯示對象實例添加到顯示列表上的顯示對象容器之前,顯示對象不會出現屏幕上(即在舞臺上)。

importflash.display.*;importflash.text.TextField;varmyText:TextField=newTextField();myText.text="Buenosdias.";this.addChild(myText);7.2.2處理顯示對象容器如果從顯示列表中刪除某個DisplayObjectContainer對象,或者以其它某種方式移動該對象或對其進行變形處理,則會同時刪除、移動DisplayObjectContainer中的每個顯示對象或對其進行變形處理。顯示對象容器本身就是一種顯示對象,它可以添加到其它顯示對象容器中。要使某一顯示對象出現在顯示列表中,必須將該顯示對象添加到顯示列表上的顯示對象容器中。使用容器對象的addChild()方法或addChildAt()方法可執(zhí)行此操作。例如,如果下面的代碼沒有最后一行,將不會顯示myTextField對象:varmyTextField:TextField=newTextField();myTextField.text="hello";this.root.addChild(myTextField);

使用addChildAt()方法可將子級添加到顯示對象容器的子級列表中的特定位置。使用getChildAt()方法來驗證顯示對象的圖層順序。getChildAt()方法根據向容器傳遞的索引編號返回容器的子對象。

removeChild()和removeChildAt()方法并不完全刪除顯示對象實例。這兩種方法只是從容器的子級列表中刪除顯示對象實例。該實例仍可由另一個變量引用。(請使用delete運算符完全刪除對象。)

7.2.3遍歷顯示列表顯示列表是一個樹結構。樹的頂部是舞臺,它可以包含多個顯示對象。

DisplayObjectContainer類包括通過顯示對象容器的子級列表遍歷顯示列表的屬性和方法。例如,考慮下面的代碼,其中在container對象(該對象為Sprite,Sprite類用于擴展DisplayObjectContainer類)中添加了兩個顯示對象title和pict:varcontainer:Sprite=newSprite();vartitle:TextField=newTextField();title.text="Hello";varpict:Loader=newLoader();varurl:URLRequest=newURLRequest("banana.jpg");pict.load(url);="bananaloader";container.addChild(title);container.addChild(pict);7.2.4處理顯示對象的事件

DisplayObject類從EventDispatcher類繼承。這意味著,每個顯示對象都可完全參與到事件模型中)。每個顯示對象可使用其addEventListener()方法(繼承自EventDispatcher類)來偵聽特定的事件,但只有偵聽對象是該事件的事件流的一部分時才能實現。處理顯示對象事件時需要記住的一個重要問題是:從顯示列表中刪除顯示對象時,事件偵聽器的存在將會對是否從內存中自動刪除顯示對象(垃圾回收)產生影響。如果顯示對象擁有訂閱為其事件的偵聽器的對象,即使從顯示列表中刪除了顯示對象,也不會從內存中刪除顯示對象,因為顯示對象仍然擁有到這些偵聽器對象的引用。7.2.5適當選擇DisplayObject子類(1)如果不需要可作為其它顯示對象的容器的對象(即只需要用作獨立屏幕元素的對象),請根據使用目的選擇DisplayObject或InteractiveObject兩個子類中的一個:用于顯示位圖圖像的Bitmap。用于添加文本的TextField。用于顯示視頻的Video。用于繪制屏幕內容的“畫布”的Shape。用于Flash具體創(chuàng)作項的MorphShape、StaticText或SimpleButton。(2)如果需要使用變量來引用主舞臺,請使用Stage類作為其數據類型。(3)如果需要容器來加載外部SWF文件或圖像文件,請使用Loader實例。(4)如果需要將一個對象用作其它顯示對象的容器(無論是否還要使用ActionScript在顯示對象上進行繪制),請選擇其中一個DisplayObjectContainer子類:如果對象是只使用ActionScript創(chuàng)建的,或者如果對象作為只使用ActionScript創(chuàng)建和處理的自定義顯示對象的基類,請選擇Sprite。如果通過創(chuàng)建變量來引用在Flash創(chuàng)建的影片剪輯元件,請選擇MovieClip。(5)如果要創(chuàng)建的類與Flash庫中的影片剪輯元件關聯(lián),請選擇其中一個DisplayObjectContainer子類作為該類的基類:如果關聯(lián)的影片剪輯元件在多個幀上有內容,請選擇MovieClip。如果關聯(lián)的影片剪輯元件僅在第一幀上有內容,請選擇Sprite。7.2.6顯示對象的舞臺表現改變位置要設置顯示對象的位置,請更改對象的x和y屬性。(2)平移和滾動顯示對象使用scrollRect屬性定義顯示對象的可查看區(qū)域。

(3)處理大小和縮放對象可以采用兩種方法來測量和處理顯示對象的大?。菏褂贸叽鐚傩裕╳idth和height)或縮放屬性(scaleX和scaleY)。(4)緩存顯示對象將顯示對象的cacheAsBitmap屬性設置為true.DisplayObject類的opaqueBackground屬性和scrollRect屬性與使用cacheAsBitmap屬性的位圖緩存有關。盡管這三個屬性彼此互相獨立,但是,當對象緩存為位圖時,opaqueBackground和scrollRect屬性的作用最佳,只有將cacheAsBitmap設置為true時,才能看到opaqueBackground和scrollRect屬性帶來的性能優(yōu)勢。(5)應用混合模式每個顯示對象都有blendMode屬性.

(6)調整DisplayObject顏色

使用ColorTransform類的方法(flash.geom.ColorTransform)來調整顯示對象的顏色。

(7)旋轉對象使用rotation屬性可以旋轉顯示對象。

(8)淡化對象將alpha屬性設置為介于0和1之間的任何值,其中0表示完全透明,1表示完全不透明。

(9)遮罩顯示對象將遮罩對象設置為被遮罩的顯示對象的mask屬性.(10)動態(tài)加載顯示內容Loader類可以加載這些資源。///////////////////////////////http://///7.3案例——圖形堆疊處理程序7.3.1案例任務描述該案例是以第三章的3.2小節(jié)的案例“創(chuàng)建圖形類程序”geometricshapes案例應用程序的基礎上構建的。主要的功能對若干個圖形進行堆疊處理,即程序可以動態(tài)向舞臺添加任意選中的、可定制大小的圖形,多個圖形添加到舞臺后,可以調整其堆疊次序,即上下覆蓋的層次,并顯示輸出這些層次。

7.3.2操作流程程序功能演示;

學生動手練習.7.3.3案例小結該案例程序實現了處理顯示對象的許多技術,如擴展顯示對象類、在顯示列表中添加對象、分層顯示對象和處理顯示對象容器、響應顯示對象事件、使用顯示對象的屬性和方法等。程序中在畫布上添加顯示對象、單擊鼠標并拖動對象、重新排列顯示對象層等具體方法實現的功能很實用,是操作顯示對象常用的方法和技術,應該熟練掌握。7.4圖形繪制API

繪圖API是ActionScript中的一項內置功能的名稱,可以使用該功能來創(chuàng)建矢量圖形如直線、曲線、形狀、填充和漸變等,并使用ActionScript在屏幕上顯示它們。(1)Graphics類每個Shape、Sprite和MovieClip對象都具有一個graphics屬性,它是Graphics類的一個實例。Graphics類包含用于繪制線條、填充和形狀的屬性和方法。(2)直線和曲線繪制使用Graphics實例進行的所有繪制均基于包含直線和曲線的基本繪制。(3)使用內置方法繪制形狀為了便于繪制常見形狀如圓、橢圓、矩形以及帶圓角的矩形等,AS3.0中提供了用于繪制這些常見形狀的方法。(4)創(chuàng)建漸變線條和填充

graphics對象也可以繪制漸變筆觸和填充,而不是純色筆觸和填充。漸變筆觸是使用lineGradientStyle()方法創(chuàng)建的;漸變填充是使用beginGradientFill()方法創(chuàng)建的.(5)將Math類與繪制方法配合使用

Math.sin()、Math.cos()和Math.tan()

(6)使用繪圖API進行動畫處理使用繪圖API創(chuàng)建內容的一個優(yōu)點是,并不限于將內容放置一次??赏ㄟ^保留和修改用于繪制的變量來修改所繪制的內容。可以通過更改變量和重繪(在一段幀上或使用計時器)來利用原有的動畫。///////////////////////////////http://///7.5案例——自選圖形繪制程序7.5.1案例任務描述該案例實現的是使用AS3.0的繪圖API,通過畫線和填充,使用鼠標從左上到右下畫出矩形形狀時,則繪制出選中的幾何圖形橢圓或矩形。并將繪制的圖形對象,綁定鼠標點擊事件,當鼠標點擊圖形時,將其從畫布上刪除。7.5.2操作流程

程序功能演示;

學生動手練習.7.5.3案例小結該案例實現了如何使用繪圖API畫線并填充生成相應的幾何圖形,以及如何刪除圖形等。程序中使用MovieClip類的生成顯示對象,調用其屬性Graphic類及方法,進行幾何圖形的繪制、填充顏色等。使用該方法還有一好處時,清除時較方便,直接調用Graphic類的clear()方法即可。程序中還使用了ComboBox、NumericStepper等組件,這些用作用戶界面的常用組件,常用于用戶交互操作界面的實現。7.6處理位圖

圖像使用兩種類型:位圖和矢量。位圖圖形也稱為光柵圖形,由排列為矩形網格形式的小方塊(像素)組成。矢量圖形由以數學方式生成的幾何形狀(如直線、曲線和多邊形)組成。位圖文件格式

GIF、JPG和PNG

(2)位圖的透明度

(3)Bitmap和BitmapData類

Bitmap類用于在屏幕上顯示位圖圖像,BitmapData類用于訪問和操作位圖的原始圖像數據。(4)處理像素

BitmapData類包含一組用于處理像素數據值的方法。

(5)復制位圖數據從一個圖像向另一個圖像中復制位圖數據,使用多種方法:clone()、copyPixels()、copyChannel()和draw()。(6)滾動位圖

scroll()方法可以復制屏幕上的位圖,然后將它粘貼到由(x,y)參數指定的新偏移位置7.7案例——拼圖小游戲程序7.7.1案例任務描述該案例實現的是使用Bitmap和BitmapData類,將圖像切割成八塊隨機放置,再重新拼接成原圖。程序中隨著對切割后形成的小塊圖像,綁定鼠標拖放事件處理函數,達到可以再重排拼接的效果,如拼接錯誤則等待需要重新調整,如拼接正確則刷新屏幕,并隨機調入新的圖像進行拼接。7.7.2操作流程程序功能演示;

學生動手練習.7.7.3案例小結該案例主要通過Bitmap類、BitmapData類,實現位圖數據的復制、移動、索引等管理功能,從而實現拼圖小游戲的程序。程序中沒有任何設計界面,全部在時間軸上完成程序功能的代碼,這些程序代碼實現了作為可視對象的位圖,在舞臺上添加、圖像容器及其裝載圖像、切割圖像、移動圖像、索引組裝圖像等功能。7.8顏色及其變換(1)RGB顏色模型

Flash使用RGB顏色模型,每一種顏色都由紅、綠、藍構成。顏色指定為數字,使用uint類型來保存,由三個字節(jié)構成,計24位色,共計約有1380萬種的顏色。在ActionScript中,使用十六進制形式來表示顏色值:0xRRGGBB,即24位色表示法。還有32位色表示,另增加8位表示透明度,十六進制的表示形式為0xAARRGGBB,AA代表透明度值。在使用時,是24位色,還是32位色,取決于使用的特定函數。

//24位合成色的提取red=color24>>16;green=color24>>8&0xFF;blue=color24&0xFF;

//32位合成色的提取alpha=color32>>24;red=color32>>16&0xFF;green=color32>>8&oxFF;blue=color32&oxFF;

(2)顏色變換對于Sprite、MovieClip或其他顯示對象,都有一個稱為transform的屬性,它是flash.geom.Transform類的一個實例,包含了可以用來進行縮放、旋轉、定位、顏色等各種屬性。

importflash.geom.ColorTransformmySprite.transform.colorTransform=newColorTransform(rm,gm,bm,am,rOffset,gOffset,bOffset,aOffset)

7.9案例——圖片顏色變換小程序7.9.1案例任務描述該案例實現的是使用BitmapData類的colorTransform方法,對位圖數據進行顏色變換功能。程序中對指定圖片,分割成4個矩形區(qū)域,根據不同的顏色變換參數,使用colorTransform方法對相應矩形區(qū)域的位圖數據進行顏色變換。7.9.2操作流程程序功能演示;

學生動手練習.7.9.3案例小結該案例主要展現的是BitmapData類的colorTransform方法的用法。設置的參數不同,往往得到不同的顏色變換效果。在AS3.0的編程實踐中,顯示對象的顏色變換,往往不是單獨進行的,而是常伴隨著先進行平移、縮放、旋轉等物理變換。7.10過濾顯示對象AS3.0包括九種可應用于任何顯示對象或BitmapData實例的濾鏡。(1)創(chuàng)建和應用濾鏡使用濾鏡可以對位圖和顯示對象應用從投影到斜角和模糊等各種效果。創(chuàng)建了濾鏡對象的實例后,通過使用該對象的filters屬性可以很容易地將此實例應用于顯示對象;如果是BitmapData對象,可以使用applyFilter()方法。importflash.filters.BevelFilter;importflash.filters.GlowFilter;//創(chuàng)建濾鏡并將其添加到數組。varbevel:BevelFilter=newBeve

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論