トップページ > Flash入門 > グラフを描く(1)
Spriteはgraphicsクラスというのを継承しているらしく,このgraphicsクラス内には直線や円など, いろいろな図形を描画する関数が含まれているようです。とりあえず,1本直線を描いてみます。
moveTo()関数で直線の開始点を設定し, lineTo()関数で直線の終点を指定します。 描画する際の線のタイプはlineStyle()関数を使って指定します。
package { import flash.display.Sprite; import flash.events.Event; //画面サイズと背景色,フレームレートを設定 [SWF(width = "300", height = "300", frameRate = "60", backgroundColor = "0xffffcc")] public class Main extends Sprite { //main関数 public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } //コンストラクタ private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point //スプライトを用意する var sp:Sprite = new Sprite(); //線種を設定。太さ1,色は黒 sp.graphics.lineStyle(1, 0x000000); //描画開始点を(100, 100)に設定 sp.graphics.moveTo(100, 100); //(200,200)まで直線を引く sp.graphics.lineTo(200, 200); //スプライトを表示 addChild(sp); } } }
描画する線の太さや色を設定するlineStyle()関数の引数は,以下のようになっています。
lineStyle(thickness, color, alpha, pixelHinting, scaleMode, caps, joints, miterLimit)
プロパティ名 | 説明 | 型 |
---|---|---|
thickness | 線の太さ(0〜255) | Number(実際0〜225のint型) |
color | 線の色 | 16進数(0x00ff00など) |
alpha | アルファ値,透過度の設定(0〜1) | Number |
pixelHinting | ヒンティング(拡大表示時のピンボケを抑制する)の有無 | Boolean |
scaleMode | オブジェクトが拡大・縮小される場合のモード。 LineScaleModeクラスのパラメータを指定する。 |
LineScaleMode.NORMAL: 線の太さがそのまま変化 LineScaleMode.NONE: 拡大・縮小しない LineScaleMode.VERTICAL: 垂直方向のみ変化させる LineScaleMode.HORIZONTAL: 水平方向のみ変化させる |
caps |
線の端部の形状(キャップ)を指定する。 capsStyleクラス内のパラメータを使って指定する。 |
capsStyle.NONE: なし capsStyle.ROUND: 丸める capsStyle.SQUARE: 角ばらせる |
joints |
折れ線を描く時の結合部(joints)のスタイル。 JointStyleクラスのパラメータを指定する。 デフォルトはROUND。 |
JointStyle.ROUND: 丸める JointStyle.BEVEL: 面取りのような感じ JointStyle.MITER: 尖がらせる |
miterLimit | マイターが切り取られる限界(1〜255) JoinStyle.MITERにした場合のみ有効。 |
Number |
とりあえず,線の太さ,色,アルファ値を適当に設定してみます。
alpha = 0.5 としているので,ある程度透過していることが分かります。 線が重なる部分は色が濃くなります。
package { import flash.display.Sprite; import flash.events.Event; import flash.display.Graphics; import flash.display.*; //画面サイズと背景色,フレームレートを設定 [SWF(width = "300", height = "300", frameRate = "60", backgroundColor = "0xffffcc")] public class Main extends Sprite { //main関数 public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } //コンストラクタ private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point //スプライトを用意する var sp:Sprite = new Sprite(); //線種を設定。太さ10,色は青,アルファ値は0.5 sp.graphics.lineStyle(10, 0x0000FF, 0.5); for (var i:int = 30; i < 300;i+=30 ) { //縦のラインを描く sp.graphics.moveTo(i, 0); sp.graphics.lineTo(i, 300); //横のラインを描く sp.graphics.moveTo(0, i); sp.graphics.lineTo(300, i); } //スプライトを表示 addChild(sp); } } }