トップページ > 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);
}
}
}