1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112
| <?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
creationComplete="init()">
<mx:Script>
<![CDATA[
private var rayon:Number = 140;//rayon du cercle
private var nbParts:Number = 3;//nombre de parts dans le cercle
private var pieChart:Sprite;
private var precision:Number = 100;// Nombre de rayons traces dans le cercle
private var contourWidth:Number = 2;// Taille des traits qui font le contour des triangles
private function init():void
{
pieChart = new Sprite();
pieChart.x = 0;
pieChart.y = 0;
cnvWidget.rawChildren.addChild(pieChart);
// Draw white background
var whiteBg:Sprite= new Sprite();
drawAngle(whiteBg.graphics, 2*Math.PI, rayon+contourWidth, precision, 0xFFFFFF, 100, 0);
// Get angle value in degrees
var angle:Number = Math.floor(360/nbParts);
//trace("stem_array.length "+allSkins.length);
//trace("angle = "+angle);
// Get angle value in radian
var angleRadian:Number = (Math.PI * angle)/180;
// Angle de depart
var angleFrom:Number = Math.PI/2-angleRadian/2;
// Angle
var angleAll:Number = (nbParts-1)*angleRadian;
var ar:Number;
var af:Number;
var pieColor:uint = 0xFFFFFF;
for (var i:int=0 ; i<nbParts ; i++)
{
if (i == 1)
pieColor = 0x00FF00;
else if (i == 2)
pieColor = 0x0000FF;
else if (i == 3)
pieColor = 0xFF0000;
else if (i == 4)
pieColor = 0xBBBBBB;
else if (i == 5)
pieColor = 0xD20070;
var spAngle:Sprite = new Sprite();
spAngle.x = 0;
spAngle.y = 0;
pieChart.addChild(spAngle);
if (i == 0)
{
ar = 2*Math.PI-angleAll;
af = angleFrom;
} else
{
ar = angleRadian;
af = angleFrom-i*angleRadian;
}
var fond_off:Sprite = new Sprite();
fond_off.x = cnvWidget.width/2;
fond_off.y = cnvWidget.height/2;
spAngle.addChild(fond_off);
drawAngle(fond_off.graphics, ar, rayon, precision, 0xCDCDCD, 100, af);
fond_off.cacheAsBitmap = false;
var fond_on:Sprite = new Sprite();
fond_on.x = cnvWidget.width/2;
fond_on.y = cnvWidget.height/2;
spAngle.addChild(fond_on);
drawAngle(fond_on.graphics, ar, rayon, precision, pieColor, 100, af);
fond_on.cacheAsBitmap = false;
}
}
private function drawAngle(target:Graphics, a:Number, r:Number, n:Number, col:uint, alph:Number, from:Number):void
{
trace("a: "+180*a/Math.PI+" | r: "+r+" | n: "+n+" | col: "+col+" | alph: "+alph+" | from: "+180*from/Math.PI);
target.clear();
target.lineStyle(0, 0, 0);
target.beginFill(col, alph);
target.moveTo(0, 0);
target.lineTo(rayon, 0);
var teta:Number = from;
var dteta:Number = 2*Math.PI/n;
while ( teta < (from+a) )
{
var x:Number = r*Math.cos(teta);
var y:Number = -r*Math.sin(teta);
target.lineTo(x,y);
teta += dteta;
}
x = r*Math.cos(from+a);
y = -r*Math.sin(from+a);
target.lineTo(x,y);
target.lineTo(0,0);
target.endFill();
}
]]>
</mx:Script>
<mx:Canvas id="cnvWidget" width="300" height="300" styleName="cnv"
horizontalCenter="0" verticalCenter="0" backgroundColor="#000000"
verticalScrollPolicy="off" horizontalScrollPolicy="off">
</mx:Canvas>
</mx:Application> |
Partager