Faire apparaître un Bouton Seulement en fin de scène

Faire apparaître un Bouton Seulement en fin de scène - Flash/ActionScript - Programmation

Marsh Posté le 11-02-2015 à 14:15:55    

Bonjour a tous et merci d'avance pour votre aide,
 
Mon problème est que je développe un jeu de carte en actionscript 3
 
Mes cartes apparaissent face retournées côte à côte et mon joueur en choisit 4.
 
Comment faire s'arrêter le movieClip à ce moment précis où le joueur a choisit sa 4ème Carte et faire apparaître un bouton?
 
 
Une idée?

Reply

Marsh Posté le 11-02-2015 à 14:15:55   

Reply

Marsh Posté le 11-02-2015 à 15:23:00    

bonjour
pas simple de répondre sans connaitre l’environnement.
tu dis que le joueur choisi ces cartes, je suppose qu'il clic sur les cartes. si c'est le cas  
 
var carte: uint;
 
et quand il clic  
 
carte++;
if (carte == 4){
           tonClip.stop();
}
 
bien sur sans connaitre ce que j' appel l’environnement (la scène, le clip, etc) ma solution est peut être a coté.
 
avec un fla la réponse serait sure.
@+ gustave02

Reply

Marsh Posté le 11-02-2015 à 16:21:37    

Merci pour cette réponse, je vais essayer tout de suite!
 
Pour répondre à la question, oui, c'est exactement cela mon problème, le joueur à bien les cartes devant lui, on ne voit que le dos des cartes comme pour un tour de magie et il doit cliquer sur 4 cartes pour lancer la scène suivante qui lui permettra de voir son jeu.
 
Donc pour ce qui est de la fonction mélanger, pas de problème, pour faire un bouton "play" "stop" ou "goto" ça je sais faire, c'est juste faire aller à la scène après une action suivante qui me pose problème.
 
Mon autre idée était d'afficher le bouton et de le rendre cliquable qu'après que le jour ait tiré ses cartes mais la encore, même problème.
 
:)

Reply

Marsh Posté le 11-02-2015 à 16:26:29    

pour le bouton même esprit sauf qu'il faut savoir ou se trouve le bouton déjà sur la scène dans la bibliothèque si oui son nom de classe
 
bref s tu veux que je soit plus précis il me faut ton fla.
 
@+ gustave02

Reply

Marsh Posté le 11-02-2015 à 17:03:31    

Voila le script, pour faire simple j'ai refait un script "Test" à part.
 
Donc il y a ici 5 cartes toutes nommées symbole1, symbole2,etc (normalement c'est jusqu'à 32 mais on est dans le test) qui s'effacent dès que le joueur clique dessus, comme je suis novice en actionscript, j'ai fait autant de movieClip que de cartes, ce qui donne:
stop();
 
movie_Clip.addEventListener(MouseEvent.CLICK, fl_ClickToHide);
 
function fl_ClickToHide(event:MouseEvent):void
{
 movieClip_1.visible = false;
}
 
movieClip_2.addEventListener(MouseEvent.CLICK, fl_ClickToHide_2);
 
function fl_ClickToHide_2(event:MouseEvent):void
{
 movieClip_2.visible = false;
}
 
movieClip_3.addEventListener(MouseEvent.CLICK, fl_ClickToHide_3);
 
function fl_ClickToHide_3(event:MouseEvent):void
{
 movieClip_3.visible = false;
}
 
movieClip_4.addEventListener(MouseEvent.CLICK, fl_ClickToHide_4);
 
function fl_ClickToHide_4(event:MouseEvent):void
{
 movieClip_4.visible = false;
}
movieClip_5.addEventListener(MouseEvent.CLICK, fl_ClickToHide_5);  
 
function fl_ClickToHide_4(event:MouseEvent):void  
{  
 movieClip_5.visible = false;  
}  
 
Tout cela est dans mon image1 de ma scène1
ensuite je voudrais donc aller à l'image2 ou rendre un bouton cliquable quand mon joueur à cliqué et donc fait disparaître de l'image ses 4 cartes.
 
C'est là que je bloque... :??:  
 
 
:??: :??:


Message édité par kenyg le 11-02-2015 à 17:08:25
Reply

Marsh Posté le 11-02-2015 à 17:45:57    

je dis que c'est du debutant.
ok
donc  en tant que débutant et qu'il faut passer par la pour apprendre.
 
tu peux mettre ton bouton sur la scène.
 
dans le panneau action tu met
 
bouton.visible = false; // comme ça au démarrage on le voit pas.
 
var Ncarte:uint; // je déclare la variable que j'ai appelé  Ncarte est qui est un uint ( nombre sans virgule et toujours positif);
déclarer une variable veux dire que l'ordi va créer un case mémoire qui va nommé Ncarte et qui pourra contenir un uint.
 
apres je garde ton code comme début
 
movie_Clip.addEventListener(MouseEvent.CLICK, fl_ClickToHide);// la je pense que t'as une erreur pour le 1 je te laisse trouver
 
function fl_ClickToHide(event:MouseEvent):void
{
 movieClip_1.visible = false;
 carte++;                                          trace (carte);
}  
 
voila pour l'instant met en place et regarde déja si tu vois le trace

Reply

Marsh Posté le 11-02-2015 à 19:48:27    

Je viens de faire le test, malheureusement dès que je met le bouton sur la scène, que j'inscris  
bouton.visible = false;
je débogue:
Séquence 1, Calque 'Actions', Image 1, ligne 3, colonne 8 1119 : Accès à la propriété visible peut-être non définie, via la référence de type static Class.
 
Ensuite
 
j'ai mon code dont j'ai corrigé l'erreur 1 comme tu m'avais dit, donc j'ai bien mes 5 cartes qui disparaissent de la scène quand je clique dedans et rien de plus.
 
Le code complet avec tes conseils me renvoie
stop();
 
bouton.visible = false;
 
var Ncarte:uint
function fl_ClickToHide(event:MouseEvent):void  
{  
 movieClip_1.visible = false;  
 carte++;                                          trace (carte);  
}  
 
movieClip_3.addEventListener(MouseEvent.CLICK, fl_ClickToHide_4);
 
function fl_ClickToHide_4(event:MouseEvent):void
{
 movieClip_3.visible = false;
}
 
 
 
movieClip_4.addEventListener(MouseEvent.CLICK, fl_ClickToHide_5);
 
function fl_ClickToHide_5(event:MouseEvent):void
{
 movieClip_4.visible = false;
}
 
 
 
movieClip_6.addEventListener(MouseEvent.CLICK, fl_ClickToHide_7);
 
function fl_ClickToHide_7(event:MouseEvent):void
{
 movieClip_6.visible = false;
}
 
 
 
movieClip_7.addEventListener(MouseEvent.CLICK, fl_ClickToHide_8);
 
function fl_ClickToHide_8(event:MouseEvent):void
{
 movieClip_7.visible = false;
}
 
 
 
movieClip_8.addEventListener(MouseEvent.CLICK, fl_ClickToHide_9);
 
function fl_ClickToHide_9(event:MouseEvent):void
{
 movieClip_8.visible = false;
}
 
Séquence 1, Calque 'Actions', Image 1, ligne 8, colonne 2 1120 : Accès à la propriété non définie movieClip_1.
 
Séquence 1, Calque 'Actions', Image 1, ligne 9, colonne 2 1120 : Accès à la propriété non définie carte.
 
Séquence 1, Calque 'Actions', Image 1, ligne 9, colonne 59 1120 : Accès à la propriété non définie carte.
 
 
Pour mon test mes cartes se nomment Carte1 avec pour nom de Classe Symbole1 et ainsi de suite jusqu'à Carte5
 
 
Du coup, plutôt que mettre trace pour le bouton, ce serait pas mieux de mettre addChild à la quatrième carte cliquée?
Comme ça, j'arrive sur ma scène, je choisit mes 4 cartes et quand le bouton apparaît je peux cliquer dessus pour me rendre à la scène suivante?
 
:)
 
Je sais, c'est une vrai casse-tête!


Message édité par kenyg le 11-02-2015 à 19:49:27
Reply

Marsh Posté le 11-02-2015 à 20:33:44    

alors  
il faut toujours faire les choses une a une  
 
tu vires tout ou tu prend un nouveau as3  
 
tu creer un bouton
que tu pose sur la scene,
 dans le panneau propriété tu lui donne son nom  bouton  
puis dans le panneau action  
bouton.visible =  false;
 
et tu me dis si tu t est arrivé.
@+ gustave02

Reply

Marsh Posté le 11-02-2015 à 23:12:03    

ça marche c'est fou!
Je viens d'apprendre que le nom d'occurrence est très important dans flash. Du coup mon bouton je l'ai appelé Pop. Parce que flash n'aimait pas le mot "bouton".
 
Déjà un grand Merci a toi!
:)

Reply

Marsh Posté le 12-02-2015 à 08:48:54    

bien  
un object pour être reconnu doit toujours être nommé.
 
tu dis et je ne suis pas d'accord      "Du coup mon bouton je l'ai appelé Pop. Parce que flash n'aimait pas le mot "bouton"."
flash aime le mot bouton. flash parle pas français. de plus par convention le nom des objet doivent être en minuscule. c'est une convention on respect ou pas.moi je respect car par convention les noms de classe (que tu comprendras plus tard) commence par une majuscule.  
 
je pense qu' un exercice te serais bénéfique.
 
on reprend  
j' ai sur ma scène  un objet que j'ai nommé bouton et que je rend invisible
 
je vais dans la bibliothèque  je sélectionne le même objet je fais un glisser déposer de l'objet sur la scène
résultat j'ai deux objet sur la scene  le premier je l'avais nomé bouton  
je clic sur le deuxième et je l'appel   "bouton1"
 
met ce code dans la fenêtre action
 

Code :
  1. import flash.events.MouseEvent;
  2. bouton.visible = false;
  3. bouton.addEventListener(MouseEvent.CLICK, effaceBouton);
  4. bouton1.addEventListener(MouseEvent.CLICK, effaceBouton1);
  5. function effaceBouton(event:MouseEvent):void{
  6. bouton.visible =false;
  7. bouton1.visible = true;
  8. }
  9. function effaceBouton1(event:MouseEvent):void{
  10. bouton1.visible =false;
  11. bouton.visible = true;
  12. }


 
fait cet essais. dis moi quand tu es ok pour la suite?
@+gustave02

Reply

Marsh Posté le 12-02-2015 à 08:48:54   

Reply

Marsh Posté le 12-02-2015 à 11:13:27    

Eh bien ça marche parfaitement!!
 
Par contre c'est bizarre, flash n'aime toujours pas le mot "bouton" dans son nom dans les propriétés...
Mais bon, là, tout fonctionne.
 
:)

Reply

Marsh Posté le 12-02-2015 à 11:47:18    

ok
tu as vu que avec un objet de la bibliothèque tu peux avoir plusieurs copie de cet objet sur la scène.
 
donc tu peux viré le bouton1 les écouteurs et les fonctions dans le panneau action  
il te reste bouton et le code  bouton.visible = false;
 
comme tes cartes sont retourné pas besoin encore de créer 32 moviClip mais un seul le dos de la carte et de le mettre 32 fois sur la scene  et il faut leur donné un nom.  
exemple carte1 et carte2 et .....
 
ok dés que tu as fait tu dis
@+ gustave02

Reply

Marsh Posté le 12-02-2015 à 11:58:22    

C'est fait aussi et c'est vrai que c'est plus simple comme ça, j'aurais dû y penser.
 
 
Comme cela c'est aussi beaucoup plus clair!
 
 
 :)


Message édité par kenyg le 12-02-2015 à 12:00:48
Reply

Marsh Posté le 12-02-2015 à 12:20:10    

donc  
 
il faut mette un ecouteur a chaque carte  tu sais faire?
 
oui?

Reply

Marsh Posté le 12-02-2015 à 12:23:44    

tu veux dire:
 
 carte1.addEventListener (mouseEvent.CLICK, effaceBouton)
 
par exemple?

Reply

Marsh Posté le 12-02-2015 à 12:30:01    

oui  
bien sur toute les carte

Reply

Marsh Posté le 12-02-2015 à 12:57:39    

Là c'est fait,
 
J'ai bien sûr un message d'erreur 1120 mais c'est parce que nous n'avons pas encore défini l'accès aux propriétés si j'ai bien compris.
 

Reply

Marsh Posté le 12-02-2015 à 13:02:17    

envois  
ton code s'il te plait
@+ gustave02

Reply

Marsh Posté le 12-02-2015 à 13:13:37    

bouton.visible = false;
 
import flash.events.MouseEvent
function effaceBouton(event:MouseEvent):void{
 carte1.visible = false;
 }
 
carte1.addEventListener (mouseEvent.CLICK, effaceBouton);
 
 
J'ai cru bon d'ajouter les lignes import et fonction pour gagner du temps...


Message édité par kenyg le 12-02-2015 à 13:15:54
Reply

Marsh Posté le 12-02-2015 à 13:57:52    

ok  
va voir tes messages privé
@+

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed