Faire apparaître un Bouton Seulement en fin de scène - Flash/ActionScript - Programmation
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
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.
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
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...
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
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!
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
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!
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 :
|
fait cet essais. dis moi quand tu es ok pour la suite?
@+gustave02
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.
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
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!
Marsh Posté le 12-02-2015 à 12:20:10
donc
il faut mette un ecouteur a chaque carte tu sais faire?
oui?
Marsh Posté le 12-02-2015 à 12:23:44
tu veux dire:
carte1.addEventListener (mouseEvent.CLICK, effaceBouton)
par exemple?
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.
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...
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?