Ce petit système pour "customiser" son personnage de manga permet de modifier : la bouche, la coupe de cheveux(forme/couleur), la couleur de peau, les yeux(couleur,forme).
Avec une interface PHP et une base de données, il serait possible de sauvegarder les paramètres. Il pourrait alors etre intégré à un forum(pour des avatars) ou à un jeu(personnages), le fichier swf ne pesant que 8k.
Ceci sera disponible dans une prochaine mise à jour.
Source / Exemple :
//Initialisation du tableau d'yeux.
tab_yeux = new Array();
//On insere dedans autant de couleurs qu'on veut proposer
tab_yeux.push("0x339933","0x999933","0x63A4EB","0x639A00","0x550000","0x006600", "0x0066CC", "0x804000");
/* test de parcours du tableau
for (i=0; i<tab_yeux.length; i++) {
trace(tab_yeux[i]);
}
oeil_id = 0;//indice de parcours du tableau, qu'on garde toujours en memoire
init_yeux();
function init_yeux() {
//initialisation des couleurs des couleurs des movies clip
Couleur_oeil2 = new Color(_root.oeil2.couleur);
//oeil droit
Couleur_oeil = new Color(_root.oeil.couleur);
//oeil gauche
Couleur_oeil_button = new Color(_root.couleur_oeil_button);
//bouton
update_yeux(tab_yeux[0]);
//Mis a jour des movies clip
}
function update_yeux(couleur) {
//fonction effectuant le changement de couleur
//prend en parametre la couleur
Couleur_oeil.setRGB(couleur);
Couleur_oeil2.setRGB(couleur);
Couleur_oeil_button.setRGB(couleur);
}
function next_yeux() {
oeil_id++;
//on incremente l'indice de l'oeil
//si on est au bout du tableau, on revient au debut
if (oeil_id == tab_yeux.length) {
oeil_id = 0;
}
//on met à jour les yeux avec la couleur suivante du tableau
update_yeux(tab_yeux[oeil_id]);
}
function previous_yeux() {
oeil_id--;
//on decremente l'indice des yeux
//si on est arrivé avant le debut du tableau
//on passe à la fin du tableau
if (oeil_id == -1) {
oeil_id = tab_yeux.length-1;
}
//on met à jour les yeux avec la couleur precedente du tableau
update_yeux(tab_yeux[oeil_id]);
}
//Initialisation du tableau des bouches.
tab_bouche = new Array();
// On va inserer les liens vers les images clés contenus
// dans le clip bouche. Il vaut mieux nommer les images
// clés du clip via l'inspecteur de propriétés, cela augmente
// la lisibilité du code et permet de déplacer les images clés
// sans se poser de question
tab_bouche.push("crier", "sourire", "sourire_legerement");
/* test de parcours du tableau
for (i=0; i<tab_bouche.length; i++) {
trace(tab_bouche[i]);
}
bouche_id = 0;//indice de parcours du tableau, qu'on garde toujours en memoire
init_bouche();
function init_bouche() {
//initialisation de la bouche avec le position par défaut
update_bouche(tab_yeux[0]);
//Mis a jour du movie clip
}
function update_bouche(pos) {
//fonction effectuant le changement de bouche
bouche.gotoAndStop(pos);
bouche_button.gotoAndStop(pos);
}
function next_bouche() {
bouche_id++;
//on incremente l'indice de la bouche
//si on est au bout du tableau, on revient au debut
if (bouche_id == tab_bouche.length) {
bouche_id = 0;
}
//on met à jour la bouche avec la position suivante du tableau
update_bouche(tab_bouche[bouche_id]);
}
function previous_bouche() {
bouche_id--;
//on decremente l'indice de la bouche
//si on est arrivé avant le debut du tableau
//on passe à la fin du tableau
if (bouche_id == -1) {
bouche_id = tab_bouche.length-1;
}
//on met à jour la bouche avec la position precedente du tableau
update_bouche(tab_bouche[bouche_id]);
}
//Initialisation du tableau d'yeux.
tab_peau = new Array();
//On insere dedans autant de couleurs qu'on veut proposer
tab_peau.push("0xDFB4A2", "0xCDCB74", "0x121212", "0xF7D7B3");
/* test de parcours du tableau
for (i=0; i<tab_peau.length; i++) {
trace(tab_peau[i]);
}
peau_id = 0;//indice de parcours du tableau, qu'on garde toujours en memoire
init_peau();
function init_peau() {
//initialisation des couleurs des movies clip
Couleur_peau = new Color(_root.visage.couleur_peau);//peau
Couleur_peau_button = new Color(_root.couleur_peau_button);
//bouton
update_peau(tab_peau[0]);
//Mis a jour des movies clip
}
function update_peau(couleur) {
//fonction effectuant le changement de couleur
//prend en parametre la couleur
Couleur_peau.setRGB(couleur);
Couleur_peau_button.setRGB(couleur);
}
function next_peau() {
peau_id++;
//on incremente l'indice de la peau
//si on est au bout du tableau, on revient au debut
if (peau_id == tab_peau.length) {
peau_id = 0;
}
//on met à jour la peau avec la couleur suivante du tableau
update_peau(tab_peau[peau_id]);
}
function previous_peau() {
peau_id--;
//on decremente l'indice de la peau
//si on est arrivé avant le debut du tableau
//on passe à la fin du tableau
if (peau_id == -1) {
peau_id = tab_peau.length-1;
}
//on met à jour la peau avec la couleur precedente du tableau
update_peau(tab_peau[peau_id]);
}
//Initialisation du tableau de cheveux.
tab_cheveux = new Array();
//On insere dedans autant de coiffures qu'on veut proposer et qu'on a prépare
//contenus dans le clip cheveux
tab_cheveux.push("aerienne", "long");
/* test de parcours du tableau
for (i=0; i<tab_cheveux.length; i++) {
trace(tab_cheveux[i]);
}
cheveux_id = 0;//indice de parcours du tableau, qu'on garde toujours en memoire
init_cheveux();
function init_cheveux() {
update_cheveux(tab_cheveux[0]);
//Mis a jour du movie clip avec la premiere du tableau
}
function update_cheveux(pos) {
//fonction effectuant le changement de cheveux
//prend en parametre l'image clé
cheveux.gotoAndStop(pos);
cheveux_button.gotoAndStop(pos);
}
function next_cheveux() {
cheveux_id++;
//on incremente l'indice de cheveux
//si on est au bout du tableau, on revient au debut
if (cheveux_id == tab_cheveux.length) {
cheveux_id = 0;
}
//on met à jour les cheveux avec la position suivante du tableau
update_cheveux(tab_cheveux[cheveux_id]);
}
function previous_cheveux() {
cheveux_id--;
//on decremente l'indice des cheveux
//si on est arrivé avant le debut du tableau
//on passe à la fin du tableau
if (cheveux_id == -1) {
cheveux_id = tab_cheveux.length-1;
}
//on met à jour les cheveux avec la position precedente du tableau
update_cheveux(tab_cheveux[cheveux_id]);
}
//Initialisation du tableau de couleur de cheveux.
tab_cheveux_couleur = new Array();
//On insere dedans autant de couleurs de cheveux qu'on veut proposer
tab_cheveux_couleur.push("0xF5C125", "0x191919","0x804000","0x8DA59B");
/* test de parcours du tableau
for (i=0; i<tab_cheveux_couleur.length; i++) {
trace(tab_cheveux_couleur[i]);
}
cheveux_couleur_id = 0;//indice de parcours du tableau, qu'on garde toujours en memoire
init_cheveux_couleur();
function init_cheveux_couleur() {
//initialisation des couleurs des movies clip
//bouton
Couleur_cheveux = new Color(_root.cheveux);
Couleur_cheveux_button = new Color(_root.couleur_cheveux_button);
//Initialisation des sourcils, que l'on va accorder avec
//la couleur des cheveux
Couleur_sourcil=new Color(_root.sourcil1);
Couleur_sourcil2=new Color(_root.sourcil2);
update_cheveux_couleur(tab_cheveux_couleur[0]);
//Mis a jour des movies clip
}
function update_cheveux_couleur(couleur) {
//fonction effectuant le changement de couleur de cheveux
//prend en parametre une couleur
//On met à jour aussi les sourcils
Couleur_sourcil.setRGB(couleur);
Couleur_sourcil2.setRGB(couleur);
Couleur_cheveux.setRGB(couleur);
Couleur_cheveux_button.setRGB(couleur);
}
function next_cheveux_couleur() {
cheveux_couleur_id++;
//on incremente l'indice
//si on est au bout du tableau, on revient au debut
if (cheveux_couleur_id == tab_cheveux_couleur.length) {
cheveux_couleur_id = 0;
}
//on met à jour les cheveux et les sourcils avec la couleur suivante du tableau
update_cheveux_couleur(tab_cheveux_couleur[cheveux_couleur_id]);
}
function previous_cheveux_couleur() {
cheveux_couleur_id--;
//on decremente l'indice du tableau
//si on est arrivé avant le debut du tableau
//on passe à la fin du tableau
if (cheveux_couleur_id == -1) {
cheveux_couleur_id = tab_cheveux_couleur.length-1;
}
//on met à jour les cheveux et les sourcils
//avec la couleur precedente du tableau
update_cheveux_couleur(tab_cheveux_couleur[cheveux_couleur_id]);
}
//Initialisation du tableau d'yeux.
tab_forme_yeux = new Array();
//On insere dedans autant de positions qu'on veut proposer
//liens vers les images clés contenus dans le clip oeil
tab_forme_yeux.push("gentil", "normal","mechant");
/* test de parcours du tableau
for (i=0; i<tab_cheveux.length; i++) {
trace(tab_cheveux[i]);
}
forme_yeux_id = 0;//indice de parcours du tableau, qu'on garde toujours en memoire
init_forme_yeux();
function init_forme_yeux() {
//initialisation du type d'oeil avec la position 0 du tableau
//bouton
update_forme_yeux(tab_forme_yeux[0]);
//Mis a jour des movies clip
}
function update_forme_yeux(pos) {
//fonction effectuant le changement de forme d'oeil
//prend en parametre un lien vers une image clé
oeil.gotoAndStop(pos);
oeil2.gotoAndStop(pos);
//On va accorder la position des sourcils
//avec la position des yeux
sourcil1.gotoAndStop(pos);
sourcil2.gotoAndStop(pos);
update_yeux(tab_yeux[oeil_id]);//on actualise la couleur
forme_yeux_button.gotoAndStop(pos);//on actualise le bouton
}
function next_forme_yeux() {
forme_yeux_id++;
//on incremente l'indice de l'oeil
//si on est au bout du tableau, on revient au debut
if (forme_yeux_id == tab_forme_yeux.length) {
forme_yeux_id = 0;
}
//on met à jour les yeux avec la forme suivante du tableau
update_forme_yeux(tab_forme_yeux[forme_yeux_id]);
}
function previous_forme_yeux() {
forme_yeux_id--;
//on decremente l'indice des yeux
//si on est arrivé avant le debut du tableau
//on passe à la fin du tableau
if (forme_yeux_id == -1) {
forme_yeux_id = tab_forme_yeux.length-1;
}
//on met à jour les yeux avec la forme precedente du tableau
update_forme_yeux(tab_forme_yeux[forme_yeux_id]);
}
function random_visage(){
//cree un visage aléatoirement
update_forme_yeux(tab_forme_yeux[random(tab_forme_yeux.length)]);
update_yeux(tab_yeux[random(tab_yeux.length)]);
update_peau(tab_peau[random(tab_peau.length)]);
update_bouche(tab_bouche[random(tab_bouche.length)]);
update_cheveux(tab_cheveux[random(tab_cheveux.length)]);
update_cheveux_couleur(tab_cheveux_couleur[random(tab_cheveux_couleur.length)]);
}
stop();
Conclusion :
Comme dit plus haut, une prochaine mise à jour sera disponible,avec une petite interface de gestion de membres avec les fichiers PHP correspondants.
Le code a été écrit sous forme de fonctions mais il aurait pu être écrit sous forme objet, mais n'ayant pas encore tout assimilé, je n'ai pas créé de classe.
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.