IGraphicsData使って描画する

|
(section09-03 Flash Player 10の新しいGraphicsメソッドから抜粋)

 drawPath()は描画コマンドと座標をセットにしてパスを描くメソッドですが、実際にはさらに線のスタイル、塗りのスタイルを組み合わせることで図形の描画が完成します。  drawGraphicsData()は、これらの描画に必要な値をgraphicsDataベクターにまとめ、drawGraphicsData(graphicsData)のように実行することで図形の描画を完成させることができます。
 次のHexagonクラスではdrawGraphicsData()を使って六角形の図形を描いています。スクリプトを見るとわかるように引数のgraphicsDataはstroke、fill、pathの3つの値が入っているベクターです(47〜49行目)。
var graphicsData:Vector.<IGraphicsData> = new Vector.<IGraphicsData>();
graphicsData.push(stroke, fill, path);
graphics.drawGraphicsData(graphicsData);
 stroke、fill、pathは、それぞれが線のスタイル、塗りのスタイル、描画パスを示すデータです。Hexagonクラスでは、これらの3つのデータをsetStroke()、setFill()、setPath()で作成しています。
[:script:]六角形のスプライトを作るHexagonクラス
package {
	import flash.display.*;
	import flash.geom.Matrix;
	import flash.geom.Point;

	public class Hexagon extends Sprite {
		var stroke:GraphicsStroke;
		var path:GraphicsPath;
		var fill:GraphicsGradientFill;
		var r:Number;
		public function Hexagon(size:int) {
			r=size/2;
			setStroke();
			setFill();
			setPath();
			drawGraphics();
		}
		//線のスタイル
		protected function setStroke():void {
			stroke=new GraphicsStroke(2);
			stroke.joints=JointStyle.MITER;
			stroke.fill=new GraphicsSolidFill(0xFF0000);
		}
		//グラデーションでの塗り
		protected function setFill():void {
			fill = new GraphicsGradientFill();
			fill.colors=[0xFF0000,0xFFFF00];
			fill.matrix = new Matrix();
			fill.matrix.createGradientBox(2*r,2*r,Math.PI/4,-r,-r);
		}
		//描画パス
		protected function setPath():void {
			path=new GraphicsPath();
			path.winding=GraphicsPathWinding.NON_ZERO;
			for(var i:int=0;i<6;i++){
				var pt:Point=Point.polar(r,2*Math.PI/6*i);
				if(i==0){
					path.moveTo(r,0);
				}else{
					path.lineTo(pt.x,pt.y);
				}
			}
			path.lineTo(r,0);
		}
		//グラフィックスデータを使って図形を描く
		protected function drawGraphics():void {
			var graphicsData:Vector.<IGraphicsData> = new Vector.<IGraphicsData>();
			graphicsData.push(stroke, fill, path);
			graphics.drawGraphicsData(graphicsData);
		}
	}
}
 次のフレームアクションはHexagonクラスを試すスクリプトです。sizeは六角形の対角線の長さです。基準点は六角形の中心に作られます。

[:script:]Hexagonクラスを使って六角形のスプライトを作る
var size:int=180;
var hexagonSp:Hexagon=new Hexagon(size);
hexagonSp.x=200;
hexagonSp.y=150;
addChild(hexagonSp);
fig09-03-06.jpg
まったく新しいAS3の世界!
694a.jpg
Adobe Flash CS4
詳細!ActionScript3.0入門ノート[完全改訂版](CD-ROM付)

楽しいActionScript。
新たなる1歩へと踏み出しましょう。
■内容は?→ 目次を見る
■評判は?→ 書評を読む
この本を書いたわけ

このブログ記事について

このページは、oshigeが2009年7月29日 14:56に書いたブログ記事です。

ひとつ前のブログ記事は「Amazonで予約開始です!」です。

次のブログ記事は「新ActionScript 3入門ノートは496ページ」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

あわせて読みたいブログパーツ