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