begin process at 2012 05 27 06:40:36
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Flash / Flash MX

 > 

Scripts

 > 

ActionScript

 > 

Création de fonction - Je n'arrive pas


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Création de fonction - Je n'arrive pas

lundi 26 octobre 2009 à 23:08:24 | Création de fonction - Je n'arrive pas

Kangouroops

Bonjour,
Je travaille dans un document en AS3 et j'ai quelques soucis pour la création de fonction.
Il faut savoir que je débute, et donc mon soucis est surement que je m'y prends mal, et pas juste un petit truc qui manque.

Voici mon soucis:

Code ActionScript :
function relacherCheveuxDroite(pEvt:Event):void {
	if (sexe_homme){	
		if  (homme.homme_cheveux.currentFrame==homme.homme_cheveux.totalFrames){
			homme.homme_cheveux.gotoAndStop(1);
		}
		else {
			homme.homme_cheveux.nextFrame();
		}
	}
	else {
		if  (femme.femme_cheveux.currentFrame==femme.femme_cheveux.totalFrames){
			femme.femme_cheveux.gotoAndStop(1);
		}
		else {
			femme.femme_cheveux.nextFrame();
		}
	}
}


Dans mon code, j'ai très souvent cette fonction qui revient à quelques détails près.
Les détails sont "Cheveux" et "cheveux", c'est à dire que je vais avoir exactement la même fonction où "Cheveux" et "cheveux" vont être remplacés par "Yeux" / "yeux", "Bouche" / "bouche", etc...

Du coup, j'ai essayé cela:

Code ActionScript :
function droite("Partie", "partie"):void {
	function relacher"Partie"Droite(pEvt:Event):void {
		if (sexe_homme){	
			if  (homme.homme_"partie".currentFrame==homme.homme_"partie".totalFrames){
				homme.homme_"partie".gotoAndStop(1);
			}
			else {
				homme.homme_"partie".nextFrame();
			}
		}
		else {
			if  (femme.femme_"partie".currentFrame==femme.femme_"partie".totalFrames){
				femme.femme_"partie".gotoAndStop(1);
			}
			else {
				femme.femme_"partie".nextFrame();
			}
		}
	}
}

droite("Cheveux", "cheveux");


De telle sorte que chaque fois qu'il y ait écrit partie, ce soit lié au paramètre mis entre parenthèse... Mais apparemment ça ne fonctionne pas comme ça.
J'ai un peu farfouillé l'aide de flash, mais étant donné que je débute, pour le moment je ne suis parvenu à rien.

Si quelqu'un pouvait m'expliquer où je me trompe je lui en serait très reconnaissant afin que je puisse corriger mon code je lui en serai très reconnaissant.
Par avance je vous remercie.
Amaury.
mardi 27 octobre 2009 à 06:59:19 | Re : Création de fonction - Je n'arrive pas

Twinspirit


Bon, tout d'abord, il ne faut pas imbriquer de functions l'une dans l'autre mais une après l'autre.

Ensuite, tu ne peux pas mettre de guillemets dans la déclaration de function. Par contre, tu peux déclarer une variable.

Dans ton système, je pense qu'il te faut déclarer un tableau contenant les différentes coiffures :

var coiffures:Array = [coiffe,relache,rase]

Puis tu classe tes images dans le même ordre (pour l'homme et la femme, tu fais pareil : image coiffee en frame 1, relache en frame 2, etc)

ensuite, tu basera tes comparaisons sur l'index du tableau :

//

function droite(clip:MovieClip, coiffure:String):void
{
var clipAffecte:MovieClip = clip;
//pour chaque valeur du tableau, on compare
for (var i:int=0;i<coiffures.length; i++)
{
//i+1 car les tableaux commencent à 0
if (coiffures[i+1] == coiffure)
{
//on se rend à l'image voulue
clipAffecte.gotoAndStop(i+1);
}
}
}

//On peut appeler la fonction sur femme ou homme

droite(homme.cheveux, relache);
droite(femme.cheveux, rase);

Je me demande si c'est ce que tu veux...


TwFlash - Développeur ActionScript3 freelance.
Mon blog : Twin Flash Blog
Mon site : www.twflash.fr
mardi 27 octobre 2009 à 07:01:02 | Re : Création de fonction - Je n'arrive pas

Twinspirit

Oups,
Code ActionScript :
desolé pour le code non balisé !



TwFlash - Développeur ActionScript3 freelance.
Mon blog : Twin Flash Blog
mardi 27 octobre 2009 à 10:56:26 | Re : Création de fonction - Je n'arrive pas

Kangouroops

Salut, et déjà un grand merci de t'intéresser à mon problème !

tout d'abord, il ne faut pas imbriquer de functions l'une dans l'autre mais une après l'autre


Roger, je vais le graver dans ma petite tête :)

Ensuite, tu ne peux pas mettre de guillemets dans la déclaration de function. Par contre, tu peux déclarer une variable.


Je croyais qu'avec les guillemets je déclarais une variable, huhu... Mais je crois que je commence à saisir comment on fait.


Dans ton système, je pense qu'il te faut déclarer un tableau contenant les différentes coiffures


En fait, je crois que je n'ai pas besoin de tableau, mais c'est parce que je me suis surement mal exprimé dans mon premier message.
J'ai déjà une fonction qui me permet de faire défiler mes frames pour faire défiler les coiffures.
En fait, ce que j'aimerai c'est que cette fonction soit définie avec 2 paramètres, ce qui me permettrait de l'appliquer aux Yeux, à la bouche, et à la tenue.
Je me suis inspiré du code que tu m'as proposé pour faire ça:

Code ActionScript :
function droite(clip:MovieClip, clip2:MovieClip):void {
	var clipAffecte:MovieClip = clip;
	var clipAffecte2:MovieClip = clip2;
	if (sexe_homme){	
		if  (homme.clipAffecte.currentFrame==homme.clipAffecte.totalFrames){
			homme.clipAffecte.gotoAndStop(1);
		}
		else {
			homme.clipAffecte.nextFrame();
		}
	}
	else {
		if  (femme.clipAffecte2.currentFrame==femme.clipAffecte2.totalFrames){
			femme.clipAffecte2.gotoAndStop(1);
		}
		else {
			femme.clipAffecte2.nextFrame();
		}
	}
}


function relacherCheveuxDroite(pEvt:Event):void {
	droite(homme_cheveux, femme_cheveux);	
}


Seulement je me retrouve avec ces deux erreurs:
1120: Accès à la propriété non définie homme_cheveux.
1120: Accès à la propriété non définie femme_cheveux.



Je ne comprends pas, je croyais pourtant m'être bien inspiré.
Auriez-vous une idée de quelle pourrait être mon erreur ?


L'idée c'est bien qu'en écrivant:

Code ActionScript :
function relacherCheveuxDroite(pEvt:Event):void {
	droite(homme_cheveux, femme_cheveux);	
}


Je lance cette fonction:

Code ActionScript :
function relacherCheveuxDroite(pEvt:Event):void {
	if (sexe_homme){	
		if  (homme.homme_cheveux.currentFrame==homme.homme_cheveux.totalFrames){
			homme.homme_cheveux.gotoAndStop(1);
		}
		else {
			homme.homme_cheveux.nextFrame();
		}
	}
	else {
		if  (femme.femme_cheveux.currentFrame==femme.femme_cheveux.totalFrames){
			femme.femme_cheveux.gotoAndStop(1);
		}
		else {
			femme.femme_cheveux.nextFrame();
		}
	}
}


Dur dur de passer de l'autre côté de la barrière quand on est plutôt graphiste de formation.
Par avance, je vous remercie :)
mardi 27 octobre 2009 à 18:41:34 | Re : Création de fonction - Je n'arrive pas

Twinspirit

Réponse acceptée !
C'est que tu ne commences pas avec le plus facile !

Bon, tout d'abord, avec cette fonction :

Code ActionScript :
function relacherCheveuxDroite(pEvt:Event):void {
	droite(homme_cheveux, femme_cheveux);	
}


tu lances plutôt cette fonction :

Code ActionScript :
function droite(clip:MovieClip, clip2:MovieClip):void {
	var clipAffecte:MovieClip = clip;
	var clipAffecte2:MovieClip = clip2;
	if (sexe_homme){	
		if  (homme.clipAffecte.currentFrame==homme.clipAffecte.totalFrames){
			homme.clipAffecte.gotoAndStop(1);
		}
		else {
			homme.clipAffecte.nextFrame();
		}
	}
	else {
		if  (femme.clipAffecte2.currentFrame==femme.clipAffecte2.totalFrames){
			femme.clipAffecte2.gotoAndStop(1);
		}
		else {
			femme.clipAffecte2.nextFrame();
		}
	}
}


Le code d'erreur

Code ActionScript :
1120: Accès à la propriété non définie homme_cheveux.
1120: Accès à la propriété non définie femme_cheveux.


Signifie que les variables homme_cheveux et femme_cheveux ne sont pas déclarées.

D'aprés ton code, ces variables désignent un clip "homme_cheveux" imbriqué dans un clip "homme" et un clip "femme_cheveux" imbriqué dans un clip "femme". (ça me semble être ça, non ?).

Afin de pouvoir utiliser ces noms dans le code, il faut avoir effectué une liaison
- soit avec clic droit sur ton clip dans la bibliothèque -->liaison --> cocher exporter pour actionScript, ce qui devrait être fait avec tes clips homme et femme, sauf s'ils sont d'entree sur la scene.
- soit en nommant les clips.

Ici, c'est la seconde solution qui importe d'abord, je pense. Pour voir, double clique sur ton clip "homme" ou ton clip "femme". Ensuite, sélection ton clip "homme_cheveux" ou "femme_cheveux".

Un fois le clip sélectionné, en bas, dans le panneau propriété, à gauche, il y a un emplacement pour le Nom d'occurrence. Il doit contenir "homme_cheveux" pour le clip "homme" et "femme_cheveux" pour le clip "femme".

Mais cela ne va pas regler ton problème. Il te faut encore changer ceci

Code ActionScript :
function relacherCheveuxDroite(pEvt:Event):void {
	droite(homme_cheveux, femme_cheveux);	
}


car ici, tu appelles un MovieClip(homme-cheveux) placé sur la scene ! Or il ne l'es pas, il est dans le MovieClip(homme). Donc, la bonne façon d'appeler ta fonction est :

Code ActionScript :
function relacherCheveuxDroite(pEvt:Event):void {
	droite(homme.homme_cheveux, femme.femme_cheveux);}


Hum... Allez, courage, ça va marcher !

TwFlash - Développeur ActionScript3 freelance.
Mon blog : Twin Flash Blog
mardi 27 octobre 2009 à 23:26:01 | Re : Création de fonction - Je n'arrive pas

Kangouroops

Salut !
Un énorme merci, j'ai pu faire marcher mon code grâce à toi.
C'est à dire en écrivant homme.homme_cheveux au lieu de homme_cheveux et en modifiant là où il fallait dans la fonction.
Du coup... ben merci beaucoup, ça va me raccourcir mon code !
mardi 27 octobre 2009 à 23:28:29 | Re : Création de fonction - Je n'arrive pas

Twinspirit


Très content d'avoir pu t'aider ;)
Ça vaut le coup de s'y mettre à l'as3, tu verras...

TwFlash - Développeur ActionScript3 freelance.
Mon blog : Twin Flash Blog
Mon site : TwFlash
mercredi 28 octobre 2009 à 21:30:00 | Re : Création de fonction - Je n'arrive pas

Kangouroops

Oui, j'imagine que ça vaut le coup, d'ailleurs, j'essaye doucement de m'y mettre.
Mais quand on est surtout du côté dessin, je dis surtout car j'ai 2h/semaine d'apprentissage de processing, ce n'est pas évident.
Heureusement, il y a des forums où l'on trouve des personnes prêtes à partager leur expérience ;)


Cette discussion est classée dans : code, partie, homme, cheveux, femme


Répondre à ce message

Sujets en rapport avec ce message

COUPLE DE DANSEURS(HOMME ET FEMME) EN MOUVEMENT. [ par INFORGOS ] Bonjour!Recherche le couple de danseurs(homme et femme), comme dans l'exemple de Macromédia: frame_by_frame EN MOUVEMENTMERCIA BIENTOTVICTORIO help code formulaire template flash [ par flashie ] Bonjour,Voilà j'ai un template en flash que j'ai completement modifié avec à la fin le formulaire de contact tout ce qu'il y a de plus simple.Votre No Masquer une partie d'un SWF importé [ par MisterSnow ] Bonjour à tous, J'ai un SWF que je dois importer dans une autre scène. Jusque là rien de compliqué en utilisant le code suivant il s'importe bien dan créer une images avec plusieurs autre [ par newport1905 ] Bonjour, j'ai cherché sur le site si je trouvais plusieurs bout sde code pour créer une animation mais je n'ai rien trouvé.. Ce que j'aimerais faire, Error #1034: Echec de la contrainte de type : conversion de flash.events::Event@2977c241 en ** impossible. [ par Grongol ] Bonjour à tous. Je suis étudiant en informatique et je débute en flash... J'utilise adobe flash C5.5 et j'ai un projet de petit jeu avec un vaisseau q Code as jeu flash style chasse au canard [ par ibrah26 ] Bonjour, Je suis en train actuellement de créer un jeu flash du style chasse au canard... Le problème, c'est qu'à la place de simple canard, j'ai envi zone de saisie obligatoire [ par fenfen_159 ] Bonjour à toutes et tous, Je suis en train de bosser sur un projet et je bloque un peu... Je crée un questionnaire ou l'utilisateur dois rentrer un Flash et php ! [ par orko38450 ] Bonjour à tous, voilà mon problème: j'ai une fichier php qui va cherche 3 chose sur un stream shoutcast : [code=php]<?php $ip = "serveur"; $port = bouton play/pause [ par kirkhugle ] Bonjour , Je suis graphiste non programmeur et j'ai quelques soucis avec l'as3. J'ai un clip animé (nom d'occurrence : animation) sur une image clé Probleme code flash [ par tatenvoyage ] Bonjour, j'ai sur un fichier flash un code de compte a rebours qui marche mais quand je l'insère dans un autre fichier fla celui ci ne marche plus du


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,170 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales