drawingactionscript-2

ActionScript2.0 : Drawing arc for Triangle's angle


how can I draw arc in randomize created triangle's angle with flash actionscript 2.0.

Thanks all.alt text http://www.freeimagehosting.net/uploads/8289d7feff.png

I would like to draw red arc at every triangle's angle. Note: The triangle will be created randomly.


Solution

  • One simple way would be to draw a circle in each corner, then use a copy of your triangle to mask the circles so only the interior arcs are visible.

    For example, make a movieClip in your library named "circle" containing an unfilled red circle centred on the clip's insertion point (make sure you tick "Export for Actionscript" in it's properties).

    Then you can draw your triangle something like this:

    import flash.geom.Point;
    
    function randomPoint():Point {  //return a random point on the stage
        var p:Point = new Point(Math.floor(Math.random()*Stage.width), Math.floor(Math.random()*Stage.height));
        return p;
    }
    
    function drawTriangle(mc:MovieClip, q1:Point, q2:Point, q3:Point):Void {//draw a triangle through 3 points
        var stroke=2;//line weight of triangle
        mc.lineStyle(stroke, 0x000000, 100, true, "none", "round", "round");
        mc.moveTo(q1.x, q1.y);
        mc.lineTo(q2.x, q2.y);
        mc.lineTo(q3.x, q3.y);
        mc.lineTo(q1.x, q1.y);
    }
    
    function arcTriangle():MovieClip {  //main function to draw a triangle with corner arcs
        //make a new movieclip t which will hold our triangle parts
        var depth=this.getNextHighestDepth();
        var t:MovieClip = this.createEmptyMovieClip("t"+depth, depth);
    
        //define 3 random points (stored as properties of t)
        t.p1=randomPoint();
        t.p2=randomPoint();
        t.p3=randomPoint();
    
        //draw a triangle
        t.createEmptyMovieClip("triangle", 0);
        drawTriangle(t.triangle, t.p1, t.p2, t.p3);
    
        //draw a filled triangle to use as a mask
        t.createEmptyMovieClip("mask", 1);
        t.mask.beginFill(0xF0F0F0);
        drawTriangle(t.mask, t.p1, t.p2, t.p3);
        t.mask.endFill();
        t.mask._alpha=0;
    
        //add a red circle to each corner
        t.createEmptyMovieClip("arcHolder", 2);
        t.arcHolder.attachMovie("circle", "arc1",1,{_x:t.p1.x, _y:t.p1.y});
        t.arcHolder.attachMovie("circle", "arc2",2,{_x:t.p2.x, _y:t.p2.y});
        t.arcHolder.attachMovie("circle", "arc3",3,{_x:t.p3.x, _y:t.p3.y});
    
        //mask the circles so only the interior arcs are visible
        t.arcHolder.setMask(t.mask);
    
        return t;
    }
    
    var myTriangle:MovieClip = arcTriangle();
    

    et voila
    (source: webfactional.com)