▼ActionScript 2.0メモ▼
図形の表示


ラインと矩形とポリラインとポリゴンを表示するFlashを作成する。



サンプルプログラムの線・矩形・ポリゴン
以下のサンプルプログラムでは、線・矩形・ポリゴンとなるMovieClipに次のメソッドを追加している。
また、インスタンス名は自動生成している。
setXY(x:Number,y:Number) XY座標の指定

ソースコード

GraphicsEx.as
//図形の表示
class GraphicsEx {

    //コンストラクタ
    function GraphicsEx (mc:MovieClip) {
        //線の追加
        var line:MovieClip=addLine(mc,0,0,0,40,0xff0000);
        line.setXY(25,5);

        //矩形の追加
        var rect:MovieClip=addRect(mc,40,40,0x55ff55,0,0x00ff00);
        rect.setXY(5,55);

        //ポリラインの追加
        var plX:Array=[0,40,10,50, 5];
        var plY:Array=[0,10,20,35,50];
        var polyline:MovieClip=addPolygon(mc,plX,plY,0x0000ff);
        polyline.setXY(55,5);

        //ポリゴンの追加
        var pgX=[20,30,40,10,0];
        var pgY=[0,5,40,30,20];
        var polygon:MovieClip=addPolygon(mc,pgX,pgY,0xffff66,0,0xffff66);
        polygon.setXY(55,55);
    }

    //線の追加
    static function addLine(parent:MovieClip,
        x0:Number,y0:Number,x1:Number,y1:Number,
        color:Number,thick:Number):MovieClip {
        //初期値
        if (color==undefined) color=0;
        if (thick==undefined) thick=0;

        //インスタンス名の自動生成
        if (parent.nameIdx==undefined) parent.nameIdx=0;
        var name:String="_name"+(parent.nameIdx++);

        //ラインの追加
        parent.createEmptyMovieClip(name,
            parent.getNextHighestDepth());
        var mc:MovieClip=parent[name];
        mc.lineStyle(thick,color);
        mc.moveTo(x0,y0);
        mc.lineTo(x1,y1);

        //XY座標の指定
        mc.setXY=function(_x:Number,_y:Number) {
            this._x=_x;
            this._y=_y;
        }
        return mc;
    }

    //矩形の追加
    static function addRect(parent:MovieClip,
        w:Number,h:Number,color:Number,thick:Number,bgColor:Number):MovieClip {
        //初期値
        if (color  ==undefined) color  =0;
        if (thick  ==undefined) thick  =0;
        if (bgColor==undefined) bgColor=-1;

        //インスタンス名の自動生成
        if (parent.nameIdx==undefined) parent.nameIdx=0;
        var name:String="_name"+(parent.nameIdx++);

        //矩形の追加
        parent.createEmptyMovieClip(name,
            parent.getNextHighestDepth());
        var mc:MovieClip=parent[name];
        if (bgColor>=0) mc.beginFill(bgColor);
        mc.lineStyle(thick,color);
        mc.moveTo(0,0);
        mc.lineTo(w,0);
        mc.lineTo(w,h);
        mc.lineTo(0,h);
        mc.lineTo(0,0);
        if (bgColor>=0) mc.endFill();

        //XY座標の指定
        mc.setXY=function(_x:Number,_y:Number) {
            this._x=_x;
            this._y=_y;
        }
        return mc;
    }

    //ポリゴンの追加
    static function addPolygon(parent:MovieClip,
        x:Array,y:Array,color:Number,thick:Number,bgColor:Number):MovieClip {
        //初期値
        if (color  ==undefined) color  =0;
        if (thick  ==undefined) thick  =0;
        if (bgColor==undefined) bgColor=-1;

        //インスタンス名の自動生成
        if (parent.nameIdx==undefined) parent.nameIdx=0;
        var name:String="_name"+(parent.nameIdx++);

        //ポリゴンの追加
        parent.createEmptyMovieClip(name,
            parent.getNextHighestDepth());
        var mc:MovieClip=parent[name];
        if (bgColor>=0) mc.beginFill(bgColor);
        mc.lineStyle(thick,color);
        mc.moveTo(x[0],y[0]);
        for (var i:Number=1;i<x.length;i++) {
            mc.lineTo(x[i],y[i]);
        }
        if (bgColor>=0) mc.endFill();

        //XY座標の指定
        mc.setXY=function(_x:Number,_y:Number) {
            this._x=_x;
            this._y=_y;
        }
        return mc;
    }

    //メイン
    static function main() {
        var app:GraphicsEx=new GraphicsEx(_root);
    }
}


コンパイル
mtasc -swf GraphicsEx.swf -main GraphicsEx.as -version 7 -header 240:240:10




−戻る−