//----------------------- import -----------------------
import flash.filters.*;
//----------------------- prototypes -----------------------
MovieClip.prototype.kreis = function(pZentrum:Array, pWinkel:Number, pAusschnitt:Number, pStil:Array, pFuell:Array) {
this.lineStyle(pStil[0],pStil[1],pStil[2]);
this.beginFill(pFuell[0],pFuell[1]);
this.moveTo(pZentrum[0],pZentrum[1]);
var nPosX:Number = Math.cos(pWinkel*(Math.PI/180))*nRadius;
var nPosY:Number = Math.sin(pWinkel*(Math.PI/180))*nRadius;
this.lineTo(nPosX,nPosY);
for (var i:Number = 0; i<pAusschnitt; i++) {
pWinkel += nWinkelAdd;
nPosX = Math.cos(pWinkel*(Math.PI/180))*nRadius;
nPosY = Math.sin(pWinkel*(Math.PI/180))*nRadius;
this.lineTo(nPosX,nPosY);
}
this.lineTo(pZentrum[0],pZentrum[1]);
nWinkel = pWinkel;
this._alpha = 0;
this.filters = [fGlowFilter];
this._parent.aAusschnitte.push(this);
tBeschriftung = mDiagrammTxt.createTextField("txt"+mDiagrammTxt.getNextHighestDepth(), mDiagrammTxt.getNextHighestDepth(), 0, 0, 1, 1);
tBeschriftung.autoSize = "left";
tBeschriftung.text = aBeschriftungen[nIndexWerte]+": "+prozent(pAusschnitt,2)+" %";
tfFormat.color = aFarben[nIndexFarben];
tBeschriftung.setTextFormat(tfFormat);
tBeschriftung._x = nRadiusText;
tBeschriftung._y = nIndexWerte*tBeschriftung._height-nRadius;
updateAfterEvent();
};
//----------------------- vars -----------------------
var mDiagramm:MovieClip, mAusschnitt:MovieClip, mDiagrammTxt:MovieClip;
var nSumme:Number = 0;
var nAlpha:Number = 10;
var nRadius:Number = 100;
var nRadiusText:Number = 130;
var nWinkel:Number = -90;
var nWinkelAdd:Number;
var nIndexWerte:Number = 0;
var nIndexFarben:Number = 0;
var nInterval:Number;
var nDauer:Number = 1000;
var aWerte:Array = new Array(30, 65, 47, 19, 34, 59, 30, 52);
var aBeschriftungen:Array = new Array("Frage 1", "Frage 2", "Frage 3", "Frage 4", "Frage 5", "Frage 6", "Frage 7", "Frage 8");
var aFarben:Array = new Array(0xD62118, 0xF79431, 0xFFDE29, 0x528C73, 0x5A8CD6, 0x393984, 0x631039, 0x000000);
var fDropFilter1 = new DropShadowFilter(7, 120, 0x000000, 0.7, 8, 8, 1, 3, false, false, false);
var fDropFilter2 = new DropShadowFilter(10, 120, 0xFFFFFF, 0.5, 20, 20, 1, 3, true, false, false);
var fGlowFilter = new GlowFilter(0xE7E7E7, 0.4, 3, 3, 3, 3, true, false);
var tBeschriftung:TextField;
var tfFormat:TextFormat = new TextFormat();
//----------------------- functions -----------------------
function prozent(pZahl:Number, pStellen:Number) {
var nProzent:Number = (pZahl * 100)/nSumme;
nProzent = Math.floor(nProzent * Math.pow(10,pStellen))/Math.pow(10,pStellen);
return nProzent;
};
function zeichnen(pWo:MovieClip) {
mAusschnitt = pWo.createEmptyMovieClip("aus", mDiagramm.getNextHighestDepth());
mAusschnitt.kreis([0, 0],nWinkel,aWerte[nIndexWerte],[1, 0x000000, 100],[aFarben[nIndexFarben], 100]);
nIndexWerte++;
if (nIndexWerte == aWerte.length) {
clearInterval(nInterval);
}
nIndexFarben++;
if (nIndexFarben == aFarben.length) {
nIndexFarben = 0;
}
}
function einblenden() {
for (var i:Number = 0; i<this.aAusschnitte.length; i++) {
this.aAusschnitte[i]._alpha += nAlpha;
if (this.aAusschnitte[i]._alpha>=100) {
this.aAusschnitte[i]._alpha = 100;
this.aAusschnitte.splice(i,1);
this.nEingeblendet++;
if (this.nEingeblendet == aWerte.length) {
delete this.onEnterFrame;
}
}
}
}
function initDiagramm() {
tfFormat.size = 12;
tfFormat.font = "Arial";
tfFormat.bold = true;
for (a in aWerte) {
nSumme += aWerte[a];
}
nWinkelAdd = 360/nSumme;
mDiagramm = this.createEmptyMovieClip("behDiagramm", this.getNextHighestDepth());
mDiagramm._x = Stage.width/2;
mDiagramm._y = Stage.height/2;
mDiagramm.aAusschnitte = [];
mDiagramm.nEingeblendet = 0;
mDiagramm.filters = [fDropFilter1, fDropFilter2];
mDiagrammTxt = this.createEmptyMovieClip("behDiagrammTexte", this.getNextHighestDepth());
mDiagrammTxt._x = mDiagramm._x;
mDiagrammTxt._y = mDiagramm._y;
zeichnen(mDiagramm);
nInterval = setInterval(this, "zeichnen", nDauer, mDiagramm);
mDiagramm.onEnterFrame = einblenden;
}
//----------------------- start -----------------------
initDiagramm();