Composant "pie chart" as 1

Soyez le premier à donner votre avis sur cette source.

Vue 15 216 fois - Téléchargée 1 674 fois

Description

Version1.6.0

toute remarque permettant d'améliorer le code (défaut, bug, connerie monumentale genre ma source précédente...) est expressement attendue.
merci d'avance.

Source / Exemple :


//--- Moteur de rendu du diagramme (approche légèrement différente de la classe de blackWizzard)
_global.degToRad = Math.PI/180;
_global.radius = 150;
_global.percents = [17, 23,20,28,12];
_global.colors = [0x0000FF, 0xFF0000, 0xFFFF00, 0x008000, 0x808080, 0xFF00FF, 0x8B4513, 0x00FF00, 0x02A901, 0x00FFFF, 0x01A9A8];
_global.initAngle = 0;
_global.finalAngle = percents[0];
_root.createEmptyMovieClip("contain", 1);
_root.contain._x = Stage.width/2;
_root.contain._y = Stage.height/2;
MovieClip.prototype.PieChart_api = function(id) {
	_root.contain.createEmptyMovieClip("wedge"+id, id);
	with (_root.contain["wedge"+id]) {
		moveTo(0, 0);
		lineStyle(1, 0x000000);
		beginFill(_global.colors[id], 100);
		for (var angle = _global.initAngle; angle<=_global.finalAngle; angle++) {
			var endX = radius*Math.sin(angle*_global.degToRad*3.6);
			var endY = radius*Math.cos(angle*_global.degToRad*3.6);
			lineTo(endX, endY);
		}
		lineTo(0, 0);
		endFill();
		_global.initAngle += percents[id];
		_global.finalAngle += percents[id+1];
	}
};
for (var section = 0; section<=_global.percents.length-1; section++) {
	PieChart_api(section);
}
stop();

Conclusion :


mon soft sera mis à jours dans x temps

(peut être)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

BananaTree
Messages postés
337
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
2 novembre 2010
-
encore un petit pb sur l'UI.

en attendant :
http://krazydad.com/bestiary/bestiary_piechart.html

(de koi substentiellement allèger le code et surtout la ressource pross pour un traitement en vraie 3D)
BananaTree
Messages postés
337
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
2 novembre 2010
-
prochain update, optimisation du code.
1 seule méthode pour déssiner le rendu 3D (au lieu de 2 actuellement.
BananaTree
Messages postés
337
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
2 novembre 2010
-
le problème N1 est réglé (jai bien fait d'utiliser parseXmlDatas comme nom de méthode, n'en déplaise à certains) :

PieChart_api.loadXmlDatas = function() {
PieChart_api.splashScreen("Loading XML File : "+xml_url);
XML.prototype.ignoreWhite = true;
var temp_datas_xml = new XML();
temp_datas_xml.load(PieChart_api.xml_URL);
temp_datas_xml.onData = function(src) {
if ([src+level] == undefined) {
PieChart_api.splashScreen("Error while loading XML File");
} else {
PieChart_api.parseXmlDatas(src);
delete temp_datas_xml;
}
};
};
PieChart_api.parseXmlDatas = function(src) {
var datas_xml = new XML(src);
var temp_angles_ar = new Array();
var temp_colors_ar = new Array();
var temp_3dColors_ar = new Array();
var temp_labels_ar = new Array();
var xmlDatas = datas_xml.firstChild.childNodes;
for (var i = 2; i<=xmlDatas.length; i++) {
if (i<xmlDatas.length) {
var percentage = xmlDatas[i].attributes._percent;
temp_angles_ar.push(percentage);
var colorName = xmlDatas[i].attributes._color;
PieChart_api.colorNameConverter(colorName);
temp_colors_ar.push(_color);
temp_3dColors_ar.push(_3dColor);
var chartLabel = xmlDatas[i].attributes._label;
temp_labels_ar.push(chartLabel);
} else {
PieChart_api.PieChartTitle = xmlDatas[0].attributes._title;
PieChart_api.PieChartSource = xmlDatas[1].attributes._source;
PieChart_api.angles_ar = temp_angles_ar;
PieChart_api.colors_ar = temp_colors_ar;
PieChart_api._3dColors_ar = temp_3dColors_ar;
PieChart_api.labels_ar = temp_labels_ar;
delete tempangles_ar;
delete temp_colors_ar;
delete temp_3dColors_ar;
delete temp_labels_ar;
delete datas_xml;
PieChart_api.setPieChart();
}
}
};

maintenant, si qq sait comment traiter 2 wml dans cette clasee SVP....
BananaTree
Messages postés
337
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
2 novembre 2010
-
;-)

pour les comms, je voulais poster une fois fini, mais je vais m'y mettre tout à l'heure. (ça serra peut être sommaire, vu que les vrais comms serront faits en englais)

pour le xml, 2 pb :

- premier pb, si la classe ne trouve pas de référence dans le tableau angles_ar, le code plante. je vais donc mettre une epxression conditionnele pour résoudre ça.

- 2ème pb, (c'est ce qu je voulais dire ds le poste du forum). si je charge 2 xml (identiques ou différents), cad deux composants sur la scene, le premier n'est pas identifié diférement du second. de fait, il n'est pas parsé et seul le second l'est.
donc si je résoud mon PB n°1, on verra s'afficher le cammembert du second xml, mais pas celui du premier.
et c'est ça qui me fout les boulles.

enfin, la prochaine mise à jour serra l'ajout d'une interface de gestion dans le panneau inspecteur de composants.

(au fait, la gestion de l'api de dessin se fait dans des clips séparés, en vue de l'utilisation du moteur pour réaliser une classe en vraie 3D)

ps : merci SuperDevy de t'être penché sur mon code. c sympa.
SuperDevy
Messages postés
842
Date d'inscription
dimanche 24 novembre 2002
Statut
Membre
Dernière intervention
2 juillet 2007
-
Arf, petit soucis : si le fichier xml n'existe pas, mais j'ai pas trouvé d'où ça venait.

Sur FlashKoD, on a deux extrêmes :
-Top30 qui espace tellement son code qu'il en devient parfois difficile à lire.
- BananaTree qui compacte tout, qui qui n'aide pas à se repèrer dans un code de 350 lignes avec certaines lignes de plus de 300 caractères !

Tu devrai peut-être commenter un peu ton code en mettant des titres à chaque partie et expliquer brièvement ce qu'elles font.

Merci pour la petite référence :o) (le seul commentaire que tu as mis)

Bonne prog !

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.