Forums Développement Multimédia

Aller au contenu

probleme d'affichage d'occurence en sortie de clip

CODE Actionscript

19 réponses à ce sujet

#1 valentin_online

    Ceinture Orange

  • Members
  • PipPipPip
  • 31 messages

Posté 14 August 2008 - 11:22 AM

Bonjour a toute la communauté !!

Tout d'abord, je profite de ma première question ppour remercier les nombreuses personnes qui m'ont aidé a travers mes nombreuses lectures sur ce forum :-D

Enfin je sollicite par avance votre indulgence pour le neophyte que je suis.

Enfin considérant mon statut de débutant, vous seriez aimables de préciser vos réponses ^^



Donc, je bosse sur un bouton qui disparait en fumée lors de son click (ci-joint le fla) :

Mon problème vient de ma méconnaissance d'action script, en effet pour des soucis d'économie de poids, j'utilise un seul bouton contenant 3 possibilités de textes :

programmer votre poste
......... mobile
......... messagerie

Or le souci survient lorsque la page se charge sur la scène :

Action Script


onClipEvent (load) {
num = 3;
this.fumee1.gotoAndStop(num);
this.fumee2.gotoAndStop(num);
this.fumee3.gotoAndStop(num);
}
on (release) {
play ();
}

l'afficha

Fichier(s) joint(s)



#2 valentin_online

    Ceinture Orange

  • Members
  • PipPipPip
  • 31 messages

Posté 14 August 2008 - 11:35 AM

Sorry pour la suite, enter clavier malvenu et apparemment je ne peux modifier mon message initial...


donc l'affichage au déboguage montre toujours la 1ère solution du bouton (num = 1;) puis exécutant l'instruction "onclipevent" charge correctement la version choisie du bouton (num = 3;).

Ce petit bug n'étant pas visible, il ne me dérange pas;

Par contre, à l'issue de l'instruction "on release" : le bouton revient sur l'affichage initial du bouton (num = 1;) et non pas celle choisie en début de script (num = 3;) !

Merci d'avance !

Fichier(s) joint(s)


Modifié par LordVal, 14 August 2008 - 11:39 AM.


#3 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 7017 messages

Posté 14 August 2008 - 12:15 PM

Bonjour et bienvenue sur Mediabox,

Le problème semble venir du fait que tu ne redéfini jamais ta variable num.

Dans ton instruction :

Action Script

onClipEvent (load) { 
num = 3;
this.fumee1.gotoAndStop(num);
this.fumee2.gotoAndStop(num);
this.fumee3.gotoAndStop(num);
}

Tu spécifie que ta variable "num" prend la valeur 3 au moment où le clip (bouton) se charge.
Or ton bouton ne se charge qu'une fois sauf si tu le détruit puis recharge, ou si tu change de frame.
Si par la suite tu modifie la variable "num" il n'y à donc pas de raison qu'elle revienne à 3, sauf si tu le présice dans ton instruction onRelease.

Je peux me tromper mais çà me semble venir de là.

Bon courage.

#4 valentin_online

    Ceinture Orange

  • Members
  • PipPipPip
  • 31 messages

Posté 14 August 2008 - 13:55 PM

Merci de ta réponse.

Effectivement tu fais le même diagnostic que moi, sauf que je n'aurais su l'exprimer aussi précisément,

en effet, lors du load de la page le clip (bouton) appelle la variable "num"

néanmoins :

Citation
sauf si tu le présice dans ton instruction onRelease.


ma syntaxe étant déficiente en action script, je suis incapable de re préciser la variable num dans mon instruction onrelease :

Action Script


onClipEvent (load) {
num = 3;
this.fumee1.gotoAndStop(num);
this.fumee2.gotoAndStop(num);
this.fumee3.gotoAndStop(num);
}
on (release) {
Play();
num = 3;
this.fumee1.gotoAndStop(num);
this.fumee2.gotoAndStop(num);
this.fumee3.gotoAndStop(num);
}

J'ai essayé plusieurs possibilités et ne trouve pas de solution.

#5 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 7017 messages

Posté 14 August 2008 - 14:05 PM

Il ya un problème de syntaxe effectivement, onClipEvent est utilisé pour les clips et non pour les boutons alors que on (release) est utilisé pour les boutons et dans cette syntaxe doit être utilisé sur le bouton en lui même.

Selon le code que tu décrit voici un exemple de mise en place (voir fichier test.fla), a gauche un clip qui détermine que la variable "num" est égale à 3 au moment où le clip est chargé et à droite un bouton qui détermine que la variable "num" est égale à 1 quand on relache le bouton. L'instruction "trace" permet de visualiser la valeur de la variable dans le panneau de sortie de Flash.

Peux-tu poster un exemple simple en FLA de ce que tu veux faire exactement, çà serait plus simple pour t'aider.

Fichier(s) joint(s)

  • Fichier joint  test.fla   16 Ko   1 téléchargement(s)


#6 valentin_online

    Ceinture Orange

  • Members
  • PipPipPip
  • 31 messages

Posté 14 August 2008 - 16:16 PM

Merci mais ca ne m'aide pas encore...

en fait j'ai juste besoin de savoir comment définir la variable num dans une instruction on release..

Citation
Peux-tu poster un exemple simple en FLA de ce que tu veux faire exactement, çà serait plus simple pour t'aider.


Désolé dans le 1er message la pièce jointe est ne swf mais dans le second en fla...

Fichier(s) joint(s)


Modifié par LordVal, 14 August 2008 - 16:18 PM.


#7 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 7017 messages

Posté 14 August 2008 - 16:25 PM

Désolé je ne peux pas ouvrir la pièce jointe, je suis sur MX.

Il n'y a rien de complexe pour définir la valeur d'une variable, il suffit de la nommer et de lui indiquer la valeur a prendre (num=3).
Quand à on (release) sa syntaxe est expliquée dans l'aide de Flash, tout devrait donc marcher.

Pour moi ton problème viens plutot de la méthode employée, mais ne pouvant ouvrir le fla je ne vois pas ce qui peut te bloquer.

#8 valentin_online

    Ceinture Orange

  • Members
  • PipPipPip
  • 31 messages

Posté 14 August 2008 - 16:41 PM

Je fais une erreur depuis le début je parle de bouton mais je n'utilise pas de bouton,
mon 1er clip sprite62 contient contient tous les shape d'interpolation pour obtenir l'effet de disparition du texte en fumée ainsi que le clip shape10 contenant les 3 possibilités de texte sur 3 frames.

l'occurence du clip shape10 est fumee1.

donc je suis obligé d'écrire le script sur sprite62 afin d'obtenir soit num1, soit num2 etc quand je réutilise l'objet.



donc je load le clip au démarrage de la page avec l'instruction onclipevent et lui indique la variable, tout va bien.

quand le clip shape10 est affiché tout du long du timeline je n'ai aucun probleme par contre quand je décide de faire disparaitre le texte (évidemment vu mon effet) lors du rechargement du script la variable num n'est plus définie, et la syntaxe précédement citée n'y change rien...


Citation
Désolé je ne peux pas ouvrir la pièce jointe, je suis sur MX.


Re-essaie je l'ai sauvegardé sous flash 8

Fichier(s) joint(s)


Modifié par LordVal, 14 August 2008 - 16:43 PM.


#9 valentin_online

    Ceinture Orange

  • Members
  • PipPipPip
  • 31 messages

Posté 14 August 2008 - 17:19 PM

Si ca peut t'aider je t'ais aussi fait 3 screenshots, ce qui devrait suffire ...

Encore merci de ton aide : je me doute que je fais une petite erreur de syntaxe/conception mais je n'arrive pas à la résoudre....

Pour infos : le script que l'on voit dans le 1er screen est un test avec on release outside pour redefinir la variable (don't workin of course)

sad.gif

Miniature(s) jointe(s)

  • Image attachée: Capturer1.JPG
  • Image attachée: Capturer2.JPG
  • Image attachée: Capturer3.JPG

Modifié par LordVal, 14 August 2008 - 17:22 PM.


#10 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 7017 messages

Posté 14 August 2008 - 17:42 PM

C'est donc bien ce que je pensais au départ icon_wink.gif
Tu essayes d'utiliser une méthode qui correspond à un bouton et non à un clip.

on (release) ou on (press) etc... sont des actions que l'on pose sur un bouton, or on n'utilise plus les boutons (ou rarement) mais des clips.

La syntaxe correcte pour les clips est :

monClip.onRelease=function(){
// ton code
}

monClip.onPress=function(){
// ton code
}

Ect...

Je t'ai fait un petit fla d'exemple, logiquement çà devrait marcher. (Je ne peux toujours pas ouvrir ton fla je suis sur MX donc la version 7 de Flash et non la 8 icon_wink.gif )

Fichier(s) joint(s)

  • Fichier joint  test2.fla   32 Ko   2 téléchargement(s)


#11 valentin_online

    Ceinture Orange

  • Members
  • PipPipPip
  • 31 messages

Posté 14 August 2008 - 17:55 PM

Oki merci pour le diagnotic mais je ne sais tjrs pas l'écrire ?

Action Script

onClipEvent (load) {
sprite62.onRelease=function(){
this.play;
num = 3;
this.fumee1.gotoAndStop(num);
this.fumee2.gotoAndStop(num);
this.fumee3.gotoAndStop(num);
}
}

onClipEvent (load) {
num = 3;
this.fumee1.gotoAndStop(num);
this.fumee2.gotoAndStop(num);
this.fumee3.gotoAndStop(num);
sprite62.onRelease=function(){
Play ();
}
}



Modifié par LordVal, 14 August 2008 - 17:59 PM.


#12 valentin_online

    Ceinture Orange

  • Members
  • PipPipPip
  • 31 messages

Posté 14 August 2008 - 18:07 PM

En fait ton exemple est très simple et ne s'applique pas suffisament pour m'aider : a moins que j'ai loupé un métro ^^

En effet mon clip sprite62 a besoin de l'instruction onclipevent puisque ce clip est appelé lors de l'ouverture de la page qui est déjà un clip et j'ai donc besoin de lui préciser 2 fois la variable num...

Pourquoi ma solution marche quand je ne change pas le clip de frame ou le detruit pas et pas quand je le remplace dans le timeline par une image clef vide (fidparition du texte) ?

#13 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 7017 messages

Posté 14 August 2008 - 18:10 PM

Soit logique, si tu demande a ton code de charger des choses lorsque le clip est chargé (on load) l'opération ne s'effectue qu'à ce moment là donc ton instruction sprite62.onRelease=function(){...} ne marchera qu'au moment où le clip est chargé.

Il faut que tu sorte ce code du onLoad, je te met un exemple.

Fichier(s) joint(s)

  • Fichier joint  test3.fla   32 Ko   1 téléchargement(s)


#14 valentin_online

    Ceinture Orange

  • Members
  • PipPipPip
  • 31 messages

Posté 14 August 2008 - 18:43 PM

J'ai bien compris le principe de synthetiser le comportement des clips afin d'eviter de repeter du code : déja ca de gagné !

Néanmoins quand je reporte ton code j'obtiens une erreur de compilation par ligne : l'isntruction doit apparaitre dans le gestionnaire on/on clip event!

donc je teste :

Action Script

onClipEvent (load) {
// je défini mes variables
num = 3;
// Quand j'appuye sur le bouton les clips contenus (fumées) se lancent
// grâce à la fonction "explose()" et à la variable "num"
sprite62.onPress = function() {
sprite62.play;
num = 3;
explose();
};
// Lorsque je relache le bouton les clips contenus (fumées) se remettent en position de départ
// grâce à la fonction "explose()" et à la variable "num"
sprite62.onRelease = function() {
num = 1;
explose();
};
// Cette fonction permet de synthétiser le comportement des clips "fumées"
function explose() {
sprite62.fumee1.gotoAndStop(num);
sprite62.fumee2.gotoAndStop(num);
sprite62.fumee3.gotoAndStop(num);
}
}

et la ca devient pire puisque plus rien ne fonctionne : le clip est lancé en boucle les instruction et variables ne fonctionnent plus

Modifié par LordVal, 14 August 2008 - 18:46 PM.


#15 valentin_online

    Ceinture Orange

  • Members
  • PipPipPip
  • 31 messages

Posté 14 August 2008 - 19:02 PM

Je deviens fou : mon truc marchait PRESQUE ! je pouvais juste pas detruire le clip texte !!

Maintenant plus on avance et moins j'ai l'impression de comprendre !

Dans ton exemple le script AS n'est PAS dans onClipEvent (load) et tout semble fonctionner, si je fais la même chez moi : erreur de compilation !

Commence à me fatiguer cette anim ! icon_arrow.gif

En tout cas je te remercie de ta patience !!!

Bon en désespoir de cause : je te joint un FLA au format mx 7.0

Fichier(s) joint(s)



#16 valentin_online

    Ceinture Orange

  • Members
  • PipPipPip
  • 31 messages

Posté 14 August 2008 - 20:33 PM

j'ai transféré mon clip "sprite 62" dans ton fla, supprimé ton clip "sprite32", renommé le mien correctement (sprite62) : et ton code ne marche pas sur mon clip.

En fait je pense qu'il doit y avoir des éléments non explicité : parce que ton exemple test3 diffère du mien :

en effet tu attribues des variables (fumee1, fumee2, etc) a 3 clips alors que j'attribue UNE seule variable fumee1 a un seul clip dont le timeline contient 3 frames et donc 3 possibilité d'affichage.
donc tes variables revoie a des clips et non des frames !

#17 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 7017 messages

Posté 14 August 2008 - 21:19 PM

Hello,

Bon j'ai enfin pu ouvrir ton fla et j'ai compris...
Je mets un exemple çà sera plus simple qu'un long discour.
Ce n'est pas "propre", on peut faire bien plus simple et plus logique mais j'ai conservé ta structure pour que tu voie comment organiser ton travail.

En gros tu as créé un clip dans lequel tu as mis une anim d'explosion et un autre clip qui contient des textes (un sur chaque frame).
Puis tu jongle avec les deux pour essayer d'obtenir un affichage correct, d'où pas mal de difficultés supplémentaire.
Avec çà tu mélange les codes et les manières de coder, d'où .... "çà marche pas".

Cà marche avec ce que je t'envoie mais question optimisation ... peux mieux faire, mais çà devrait te mettre sur la piste.

Quand tu crée un programme essayes de faire en sorte que tout ton code soit au même endroit (dans mon exemple sur le layer "Code") çà évite de se tromper.
Pour çà, apprend à cibler tes objets, c'est à dire à leur donner un nom et à indiquer au code qui est à la racine le chemin qui méne à l'objet.
Dans l'exemple que je t'envoie il reste une variable "num" dans le clip "texte", normalement elle devrait aussi être sortie de ce clip et se retrouver à la racine mais çà oblige à revoir tout la construction de ton projet.
Enfin pour la syntaxe il faut souvent aller faire un tour dans l'aide de Flash pour savoir comment çà s'emploie.

(EDIT) : Bon j'ai un peu retravaillé le FLA (voir test5), les 3 boutons marchent à présent et l'anim de l'explosion et du textes sont séparées.

Fichier(s) joint(s)

  • Fichier joint  test4.fla   272 Ko   1 téléchargement(s)
  • Fichier joint  test5.fla   208 Ko   2 téléchargement(s)


#18 valentin_online

    Ceinture Orange

  • Members
  • PipPipPip
  • 31 messages

Posté 14 August 2008 - 21:57 PM

Citation
Bon j'ai enfin pu ouvrir ton fla et j'ai compris...


et moi aussi merci gourou.gif

Citation
Cà marche avec ce que je t'envoie mais question optimisation ... peux mieux faire, mais çà devrait te mettre sur la piste.


effectivement le test5 est construit avec plus de..... d'élégance ^^

Citation
Quand tu crée un programme essayes de faire en sorte que tout ton code soit au même endroit (dans mon exemple sur le layer "Code") çà évite de se tromper.
Pour çà, apprend à cibler tes objets, c'est à dire à leur donner un nom et à indiquer au code qui est à la racine le chemin qui méne à l'objet.
Dans l'exemple que je t'envoie il reste une variable "num" dans le clip "texte", normalement elle devrait aussi être sortie de ce clip et se retrouver à la racine mais çà oblige à revoir tout la construction de ton projet.
Enfin pour la syntaxe il faut souvent aller faire un tour dans l'aide de Flash pour savoir comment çà s'emploie.


merci pour ces petits trucs facilitateurs


Quand a la solution finale : merci beaucoup de ton temps : j'ai beaucoup ris quand j'ai vu que tu choisissais d'afficher une frame vide (texte4) au lieu de m'evertuer a modifier le timeline et à perdre la definition de la variable.



#19 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 7017 messages

Posté 14 August 2008 - 22:16 PM

Je supprime ton autre Topic qui est en doublon.
Merci de ne pas faire de multiposte, si le premier ne méne à rien d'autres personnes viendrons aider icon_wink.gif


#20 valentin_online

    Ceinture Orange

  • Members
  • PipPipPip
  • 31 messages

Posté 14 August 2008 - 22:22 PM

lol je ne savais pas et commençais a désespérer de ne pas me faire comprendre :-D
J'ai un peu aidé en remerciement ^^



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)