Fonction

Résolu
fguitton Messages postés 396 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 13 novembre 2009 - 4 nov. 2005 à 19:46
paulo026 Messages postés 28 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 17 décembre 2007 - 24 déc. 2007 à 14:04
Bonjour ! je suis en ce moment entrain de faire une animation qui présent les différente opération possible sur un DateChooser !
Alors mon code parait tres lourd car il est constitué de la meme condition répété un grand nombre de fois pour ne changer que le nom de l'objet a chaque fois :

if (jd_selec.selectedIndex == 0) {
date.disabledDays = [7]
}
if (jd_selec.selectedIndex == 1) {
date.disabledDays = [1]
}
if (jd_selec.selectedIndex == 2) {
date.disabledDays = [2]
}
if (jd_selec.selectedIndex == 3) {
date.disabledDays = [3]
}
if (jd_selec.selectedIndex == 4) {
date.disabledDays = [4]
}
if (jd_selec.selectedIndex == 5) {
date.disabledDays = [5]
}
if (jd_selec.selectedIndex == 6) {
date.disabledDays = [6]
}
if (jd_selec.selectedIndex == 7) {
date.disabledDays = [0]
}

Et donc voila !!! Je trouve que c'est beacoup trop chrager !!!

Alors voila enfin ma question :
Je voudrais savoir comment fonctionne exactement les fonctions

function () {
}

Et puis savoir si je peux en créer une pour mon cas et si possible comment ?

Voila Voila !!!
Je vous remercie d'avance

@+
Bon code
Flo

18 réponses

cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
4 nov. 2005 à 21:07
Tu pourrais simplifier ton code en le limitant simplement à 3 tests:



if (jd_selec.selectedIndex == 0) {
date.disabledDays = [7]
}else if (jd_selec.selectedIndex > 0 && jd_selec.selectedIndex < 7) {
date.disabledDays = [jd_selec.selectedIndex]
}else if (jd_selec.selectedIndex == 7) {
date.disabledDays = [0]
}



...et évite de faire plein de "if"...ça force à faire tous les
tests, préfère "else if", comme ça, dès que t'as une condition
vérifiée, tu arrêtes les tests.



@+! Samy
3
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
4 nov. 2005 à 23:39
for(elt in jourGroup){

if(jourGroup[elt].selected){

date.firstDayOfWeek=jourGroup[elt].data;

}

}



Dsl...j'avais la Star'Ac en musique de fond...j'ai pas vu la question arriver de suite! lol



@+! Samy
3
atchoumdu51 Messages postés 194 Date d'inscription jeudi 1 janvier 2004 Statut Membre Dernière intervention 16 juillet 2007 1
4 nov. 2005 à 20:41
Bonjour



Pour ton code tu peux essayer avec switch(jd_selec.selectedIndex) pour la syntaxe tu peux regarder dans l'aide de flash c'est détaillé



Pour la syntaxe tu peux aussi regarder dans l'aide de flash, je te
donnes un exemple avec une fonction qui prend pour argument un nombre
et qui en renvoi un (le double de l'autre) pour ta fonction mais il
vaut mieux que tu comprennes par toi même comment ca fonctionne



double = function(nombre:Number):Number

{

truc = nombre*2

return truc;

}



C'est possible de créer une fonction mais je ne pense pas que ce serait le mieux
0
fguitton Messages postés 396 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 13 novembre 2009 1
4 nov. 2005 à 20:52
Merci atchoumdu51 je pense que je vis continuer comme ca pour l'instant alors !!!
C'est cool
Sauf si quelqu'un a une autre idée ?

Sinon merci pour la réponse c'est cool

@+
Bon code
Flo
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fguitton Messages postés 396 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 13 novembre 2009 1
4 nov. 2005 à 21:31
A Merci beaucoup goldenboy68 ca c'est vraiment cool !!!

Maintenant je vais essayer de reproduire le meme style de chose pour mes autres composants.
Et puis je vais voir ce que ca va me donner !!!

Merci encore

@+
Bon code
Flo
0
fguitton Messages postés 396 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 13 novembre 2009 1
4 nov. 2005 à 22:45
Bon alors excuser moi mais j'aurais encore une question !
Voila j'ai adapter ce morceau de code pour tous les test que je doit faire dans l'animation.

Le seul problème c'est que je n'arrive pas a trouver la solution pour les RadioButton. Voila ce que j'ai mis pour l'instant comme code ( il fonctionne ) :

if (lun.selected == true) {
date.firstDayOfWeek = 1
}
if (mar.selected == true) {
date.firstDayOfWeek = 2
}
if (mer.selected == true) {
date.firstDayOfWeek = 3
}
if (jeu.selected == true) {
date.firstDayOfWeek = 4
}
if (ven.selected == true) {
date.firstDayOfWeek = 5
}
if (sam.selected == true) {
date.firstDayOfWeek = 6
}
if (dim.selected == true) {
date.firstDayOfWeek = 0
}

Alors pour donner des précision j'ai donc 7 radiobutton ( pour les 7 jours de la semaine ) ces 7 radiobutton font parti d'un groupe nommé " jourGroup " chaque bouton a une valeur data ( pour lundi -> data [1] | pour mardi -> data [2] | etc | et pour dimanche -> data [0] )
Voila c'est tout ce qu'il y a de spécial

Enfait ca serai pour évité tous ces test ( toujours le meme probleme quoi ! ]

Donc si quelqun sait comment je peu faire pour ce composant et bien merci a lui ci il peu m'aider !!!

@+
Bon code
Flo
0
fguitton Messages postés 396 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 13 novembre 2009 1
4 nov. 2005 à 23:44
Alors la vraiment merci !!!
Je pense que celui la je ne l'aurais pas trouver tous seul meme a force de recherche !!!

Et ce n'est pas grave que tu n'est pas vu la question arriver ca m'a laissé le temps de cogiter un peu et de me rendre compt que certaine sythaxe ne sont pas possible etc ,

Vraiment merci !
Pour l'instant je pens pouvoir continuer mais si je rencontre un nouveau problème je sais ou venir
C'est cool

@+
Bon code
Flo
0
cs_goldenboy68 Messages postés 1596 Date d'inscription samedi 3 janvier 2004 Statut Membre Dernière intervention 9 juin 2011 2
5 nov. 2005 à 10:30
La plupart du temps, quand t'as une syntaxe qui se répète 5-6 fois avec
quelques différences d'une ligne à l'autre, y'a toujours moyen de faire
plus simple!



@+! Samy
0
fguitton Messages postés 396 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 13 novembre 2009 1
5 nov. 2005 à 10:36
Oui mais le probleme c'est que je n'arrive pas toujours a etre au plus logique dans mes syntaxe du coup elle sont mal comprise ou completement fausse.
Et quand elles fonctionnes et bien les commandes que j'utilise ne sont psa forcément adapté aux composants , du coup ca ram ou sa me fait des beug ( et des que j'essais avec des zone de text noraml cela marche )

Mais bon pour l'instant cela me permet d'apprendre et au moins je peu essayer chercher et modifier ce ki ne me semble pas juste !

Merci quand meme beaucoup a toi

@+
Bon code
Flo
0
paulo026 Messages postés 28 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 17 décembre 2007
21 déc. 2007 à 19:59
Salut à tous,
J'aurais besoin d'aide: j'ai mis un Datechooser et j'aurais voulus qu'en cliquant sur Lundi 12 Fevrier, un lip se lance mais je ne sais pas comment faire! Quelqu'un saurait??
0
fguitton Messages postés 396 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 13 novembre 2009 1
21 déc. 2007 à 21:35
Bonsoir paulo026,
Pour répondre à ta petite question, tu peux utiliser le petit code suivant :

var listenerObject:Object = new Object();
listenerObject.change = function(eventObject:Object) {
 if ( eventObject.target.selectedDate.getDate() == "12" &&
   eventObject.target.selectedDate.getMonth() == "1" &&
   eventObject.target.selectedDate.getFullYear() == "2008" ){
  Rec.play();
 }
}
dateChooserInstance.addEventListener("change", listenerObject);

Dans le cas présent il existe sur ta scène à DateChooser d'occurrence dateChooserInstance et un clip d'occurrence Rec.
Ici la date est fixée sur le 12/02/2008 ( Effectivement le décompte des mois s'effectue sur une base partant de 0 : Janvier ).
Au changement de date sur ton DateChooser, l'écouteur listenerObject transmet à la fonction.
Bon, j'ai pondu ça comme ça me venait, il y a peu-être moyen de faire plus propre.

Sur ce, bon code !
Et bonne continuation !

Florian
0
paulo026 Messages postés 28 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 17 décembre 2007
22 déc. 2007 à 13:47
Merci beaucoup, mais j'ai un probléme... enfin plusieurs !
        Je débute en flash, et je sais pas ou et comment placer le code (sur le Datechooser?)!
Et 2éme probléme, j'aurais un moyen pour que lorsqu'on clique sur Lundi 12 Fevrier 2008, le clip REC se lance et va sur l'image 2; lorsqu'on clique sur Mardi 13 Fevrier 2008, sur l'image 3; et sur Mercredi 14 Fevrier 2008, l'image 4.

Désolé de te déranger
Paulo026
0
paulo026 Messages postés 28 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 17 décembre 2007
22 déc. 2007 à 13:50
C'est bon, ouf ...j'ai réussi à le placé, desolé!
Maintenant, comment faire pour que, en fonction des dates sélectionnées, le clip ailles à tel ou tel image?

Merci d'avance et bonnes fêtes
Paulo026
0
paulo026 Messages postés 28 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 17 décembre 2007
22 déc. 2007 à 17:37
Re-Salut,


J'ai réussi à trouver un moyen pour que ça marche



Code
var listenerObject:Object = new Object();
listenerObject.change = function(eventObject:Object) {
 if ( eventObject.target.selectedDate.getDate() == "12" &&
   eventObject.target.selectedDate.getMonth() == "1" &&
   eventObject.target.selectedDate.getFullYear() == "2008" ){
  Rec.gotoAndStop(3);
 } else if ( eventObject.target.selectedDate.getDate() == "13" &&
   eventObject.target.selectedDate.getMonth() == "1" &&
   eventObject.target.selectedDate.getFullYear() == "2008" ){
  Rec.gotoAndStop(4);
  }
}
dateChooserInstance.addEventListener("change", listenerObject);


J'ai remplacé play par gotoandstop

Mais maintenant j'ai un autre probléme : comment faire pour que lorsque l'on clique sur une date différente du 12 ou du 13 Février 2007, on ailles sur l'image 2 de mon clip??

Merci encore pour le code
Paulo026
0
fguitton Messages postés 396 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 13 novembre 2009 1
22 déc. 2007 à 18:47
Bonsoir
paulo026
,
Pour répondre à ta petite question je vais mettre en place un exemple concret basé sur le code que je t'ais donné précédement.

Bon alors en premier lieu se que nous voulons cest déterminer des dates clés !
Et nous voulons associer à chaqune de ces dates une image du sénario ( déterminée par son numéro ou son nom ).
Le meilleur des outils pour effectuer une opération comme celle-ci c'est le tableau multidimensionnel !
Nous allons donc commencer notre code en déclarant ce tableau et ces valeurs :

var dates:Array = new Array([["12","1","2008"],2],[["13","1","2008"],3],[["14","1","2008"],4]);

N'oublions pas comme je le disais précédement que le décompte des mois s'effectue depuis zéro.
Cette ligne associe donc la date du 12/02/2008 à l'image N°2, celle du 13/02/2008 à l'image N°3 et s'en suit. Si éventuellement tu voudrais associer une date à un nom d'image tu n'aurais qu'à écrir ceci : [["12","1","2008"],"nom_de_mon_image"].

Ceci fait nous allons devoir exploiter ces informations comme nous le souhaitons.
Nous plaçons donc un DateChooser sur la scène avec un nom d'occurrence "dateChooserInstance" et un clip d'occurrence "movieClip" ( qui est donc le clip à contrôler ).
Pour le code nous allons noter le même corps d'opération que dans mon post précédent comme ceci :






var listenerObject:Object = new Object();
listenerObject.change = function(eventObject:Object) {
}
dateChooserInstance.addEventListener("change",listenerObject);



Et nous allons maintenant construire la fonction qui va lire la date sélectionnée dans le DateChooser et propulser, si besoin est, le clip "movieClip" à l'image inérante.
Pour faire simple nous utiliserons une boucle de traitement for d'une longeur égale à celle du tableau que nous avons déclaré.

for( i=0; i<dates.length; i++ ){
}

Nous allons ensuite créé deux repères temporels dans cette boucle corespondant chaqun au début puis à le fin de la date fixée.
Nous allons biensûr faire appel aux données du tableau comme ceci :
( Ne pas oublier qu'il s'agit d'un tableau comportant plusieurs dimensions, il est donc necessaire d'indiquer le chemin complet des variables de celui-ci )

var repDeb:Date = new Date(dates[i][0][2],dates[i][0][1],dates[i][0][0]);
var repFin:Date = new Date(repDeb.getTime() + 86400000);

A la suite nous allons intégrer la condition if qui va se charger de déterminer si les repères temporels définis aupart avant corespondent bien à l'encadrement de la date du DateChooser.

if( eventObject.target.selectedDate.getTime() >= repDeb.getTime() &&
    eventObject.target.selectedDate.getTime() < repFin.getTime()) {
}else{
}

Il faut maintenant placer les actions à effectuer si oui ou non la condition est vérifiée ou pas.
Si la condition est respecté nous allons mettre en place un mouvement de la tête de lecture dans le clip "movieClip", mais ce n'est pas tout. Effectivement si la condition est vérifiée il va falloir faire en sorte d'interrompre la boucle for pour éviter que celle-ci puisse éventuellement conduire à l'exécution des actions de non vérification de la condition ( dans le cas ou la date délectionnée serait la permière ou la deuxième du tableau par exemple dans le cas présent ).
Nous nous y prendrons alors comme suit :
( Même avertissement qu'en au chemin dans le tableau )

movieClip.gotoAndStop(dates[i][1]);
i = dates.length;

Et afin de définir le retour à l'image par défaut on insère dans la réponse else le code suivant :

movieClip.gotoAndStop(1);

L'expression donné ici renvoyant donc à l'image 1 du clip "movieClip" en cas de non sélection d'une des dates fixées.
Si tu as besoin de plus de renseignement merci de me contacter via message personnel sur ce même site !
Voici donc le code final obtenu :



var dates:Array = new Array([["12","1","2008"],2],[["13","1","2008"],3],[["14","1","2008"],4]);





var listenerObject:Object = new Object();
listenerObject.change = function(eventObject:Object) {
   for( i=0; i<dates.length; i++ ){
      var repDeb:Date = new Date(dates[i][0][2],dates[i][0][1],dates[i][0][0]);
      var repFin:Date = new Date(repDeb.getTime() + 86400000);
      if( eventObject.target.selectedDate.getTime() >= repDeb.getTime() &&
         eventObject.target.selectedDate.getTime() < repFin.getTime()) {
         movieClip.gotoAndStop(dates[i][1]);
         i = dates.length;
      }else{
         movieClip.gotoAndStop(1);
      }
   }
}
dateChooserInstance.addEventListener("change",listenerObject);



Le fait étant que tu es débutant ( et aussi que c'est Noël ) j'ai pris la peine d'essayer de détailler le code que je te présente.
Evidement il y a moyen de faire plus court, néanmoins j'ai pensé que ce code ci pouvait en l'état te permettre de découvrir quelques trucs de flash, comme la multidimensionnalité des tableaux. Enfin un petite quelque chose en plus quoi !

Voila voila,
Sur ce, je te souhaite une bonne continuation.
Contactes moi si tu veux plus d'informations, je n'ai jamais mangé personne,
Bon code à tous :

Florian
0
paulo026 Messages postés 28 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 17 décembre 2007
23 déc. 2007 à 12:41
Merci pour ce code!
Euh jevais profiter de ta généreusité (vite Noel c dans 3j faut que jme dépéche XD) pour te demander:
 -comment faire pour que la date sélectionner m'apparaisse dans un texte dynamique (ex: I) présent dans le clip, pour que
    l'utilisateur puisse me l'envoyer?
-comment faire pour que certaies dates brillent comme avec la fonction showdate?

Encore merci et bonne fêtes
Paulo026
0
fguitton Messages postés 396 Date d'inscription samedi 16 avril 2005 Statut Membre Dernière intervention 13 novembre 2009 1
23 déc. 2007 à 20:57
Bonsoir
paulo026
,
Alors, pour tes petites questions, je pourrais répondre à la première en te conseillant de déclarer une variable de scénario globale. Afin de vous accèder à ta valeur dans ton clip. Néanmoins si il s'agit d'un formulaire tu peu aussi bien utiliser le DateField. Pour la variable tu peu t'y prendre ainsi en formulant la synthaxe de ta chaine de caractères après :



_global.messDate = eventObject.target.
selectedDate;//Formation de la synthaxe


Tu peux donc ainsi récupérer la chaine de caractère ailleur en faisant par exemple :

textField.text = messDate;

Pour ta seconde question j'ai supposé que tu parlais non pas de showDate mais de showToday mais je suis au regret de te dire que ce n'est pas possible. A moins évidement de créer son propre composant date permettant une telle interaction.

Voila
Bonne continuation,
Bon code !

Florian
0
paulo026 Messages postés 28 Date d'inscription dimanche 19 août 2007 Statut Membre Dernière intervention 17 décembre 2007
24 déc. 2007 à 14:04
Merci beaucoup et joyeux noel
Paulo026
0
Rejoignez-nous