資源描述:
《使用flash as3代碼來畫圖》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫。
1、通過AS3.0可以方便的在場(chǎng)景中繪制各種圖形,相對(duì)于提前繪制編譯好的圖形,使用代碼繪制圖形意為著更小的文件尺寸,更加靈活的繪制和交互性。Flash中的繪圖是通過Graphics來實(shí)現(xiàn)的,Graphics類是直接繼承了Object類,具有很多的繪圖方法,大致分為兩類:一是定義繪圖樣式的方法二是用于繪制和清除圖形的方法。有關(guān)樣式的方法包括線條的樣式和填充樣式兩類。有關(guān)繪圖方法包括繪制和繪制開頭兩類。繪圖:通過Shape對(duì)象的graphics屬性來執(zhí)行矢量繪圖命令1、使用lineStyle()定義畫圖的線條樣式2、moveTo()-設(shè)
2、置當(dāng)前繪畫點(diǎn);lineTo()-以當(dāng)前繪畫點(diǎn)為起點(diǎn),用當(dāng)前定義的線條樣式,畫一條直線到目標(biāo)點(diǎn);curveTo()-指定二次貝塞爾曲線的控制點(diǎn)和終點(diǎn),從而完成曲線的繪制;drawRect()-繪制矩形;drawCircle()-繪制圓形;drawEllipse()-繪制橢圓;3、beginFill()和endFill()用于填充他們之間所繪制的圖形。beginGradientFill和endFill()用于漸變填充對(duì)應(yīng)的方法。轉(zhuǎn)換:通過設(shè)置對(duì)象的transform.matrix屬性,對(duì)其做相應(yīng)的轉(zhuǎn)換Matrix.rotate()-
3、旋轉(zhuǎn)的角度Matrix.translate()-平移的距離Matrix.scale()-縮放的比例Matrix.b-將矩陣垂直傾斜Matrix.c-將矩陣水平傾斜一般來說要使用類的屬性、方法和事件,需要先創(chuàng)建類的實(shí)例,但是Graphics類不允許用戶自己來創(chuàng)建實(shí)例,那么如何使用Graphics類的方法?在顯示類Shape類和Sprite類中,有一個(gè)Graphics屬性,這個(gè)屬性就是Graphics類的實(shí)例。也就是說要使用Graphics類的方法,不能直接創(chuàng)建Graphics類的實(shí)例,而是先創(chuàng)建Shape類或Sprite類的實(shí)例,
4、此時(shí)的顯示實(shí)例就具有Graphics,而Graphics屬性是Graphics類的實(shí)例,通過Graphics屬性就可以調(diào)用繪圖的方法。另外,由于MovieClip類繼承了Sprite類,所以也可以在MovieClip類的實(shí)例中繪圖。在實(shí)際應(yīng)用中應(yīng)該使用Shape類來繪制圖形,因?yàn)镾hape類只有g(shù)raphics屬性和構(gòu)造方法,所以繪制圖形的效率更高。只有需要圖形的交互功能時(shí),再使用Sprite類和MovieClip類。編寫繪圖代碼也要講技巧如三角形的代碼:(使用前80后的繪制三角形代碼)this.graphics.lineSty
5、le(2,0x990000,.75);this.graphics.beginFill(0x00FF00);this.graphics.moveTo(100,200);this.graphics.lineTo(200,100);this.graphics.lineTo(0,100);this.graphics.lineTo(100,200);代碼中的this引用主時(shí)間軸,主時(shí)間軸是MovieClip類的實(shí)例,所以this具有g(shù)raphics屬性,通過點(diǎn)語法就能訪問graphics屬性。同時(shí),graphics屬性又引用Graphic
6、s類的實(shí)例,通過點(diǎn)語法就能調(diào)用方法。如果像上面的類似代碼很多,需要重復(fù)編寫"this.graphics",這樣的代碼,而且點(diǎn)語法的運(yùn)算速度也不是很快。就要對(duì)它進(jìn)行優(yōu)化。使用with()函數(shù)來簡(jiǎn)化:with(this.graphics){graphics.lineStyle(2,0x990000,.75);graphics.beginFill(0x00FF00);graphics.moveTo(100,200);graphics.lineTo(200,100);graphics.lineTo(0,100);graphics.lin
7、eTo(100,200);}利用with()函數(shù),只需訪問一次this.graphics屬性,就可以多次調(diào)用繪圖方法。使用自定義函數(shù)簡(jiǎn)化:drawLine(this.graphics)functiondrawLine(g:Graphics):void{g.lineStyle(2,0x990000,.75);g.beginFill(0x00FF00);g.moveTo(100,200);g.lineTo(200,100);g.lineTo(0,100);g.lineTo(100,200);}代碼中定義了drawLine()函數(shù),它
8、帶有數(shù)據(jù)類型為Graphics的參數(shù),表示此參數(shù)是Graphics類的實(shí)例,通過實(shí)例和點(diǎn)語法就可以調(diào)用相應(yīng)的繪圖方法。在調(diào)用函數(shù)時(shí)只要把引用Graphics類的實(shí)例傳遞進(jìn)去。在編寫測(cè)試?yán)L圖代碼時(shí),可在主時(shí)間軸直接進(jìn)行。在實(shí)際應(yīng)用中繪圖代碼最好放在單獨(dú)的Shape