Programmation des boutons en AS 3.0

Retrouvez ici les topics qui font suite aux cours présentés sur explainMe. Si vous avez des questions par rapport aux cours, des remarques ou encore des infos à ajouter, c'est ici.

Programmation des boutons en AS 3.0

Messagepar design7 sur Mer 03 Mar 2010 09:54

Bonjour à tous,
Me voici de nouveau avec un autre problème. J'ai créée pas mal de boutons dans mon projets flash. (Ces boutons la plupart se trouvent dans des swf externes et en plus, à l'intérieur des multiples clip que j'ai eu à créer dans mon projet.
Malheureusement pour moi, j'ai du mal à pouvoir le gérer tous et le programmer pour qu'il puisse m'exécuter une action donnée.
Je voudrais lors du clic d'un bouton se trouvant dans le clip4, contenu à son tour dans le clip3, clip3 contenu dans clip2 et clip2 contenu dans clip1.
J'ai essayé ce code :
Code: Tout sélectionner
clip1.clip2.clip3.clip4.monBouton.addEventListener(MouseEvent.CLICK, mafonction);


Sans succès avec comme erreur :
TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
at quiestmaison_fla::MainTimeline/quiestmaison_fla::frame10()

Sachant que la frame 10 est la frame où commence l'interface du site.

J'ai essayé de placer mon bouton dans le clip2 et je mis ce code :
Code: Tout sélectionner
function mafonction(event:Mouse){
   trace("Ca tiens, tu peux continuer");
   }
clip1.clip2.monBouton.addEventListener(MouseEvent.CLICK, mafonction);


Sans succès toujours avec comme erreur :
TypeError: Error #1034: Echec de la contrainte de type : conversion de flash.events::MouseEvent@4ba8101 en flash.ui.Mouse impossible.

J'aimerais aussi savoir s'il n'existe pas un tableau reprenant les erreurs possibles sur flash avec explication. (un site, forum, etc.) :?: .
Merci bien! :D

design7
design7
Nouveau membre
 
Messages: 13
Inscrit le: Lun 08 Fév 2010 17:55
Reputation points: 0
Add reputation pointSubtract reputation point

Re: Programmation des boutons en AS 3.0

Messagepar explainMe sur Mer 03 Mar 2010 12:39

Salut,

Alors déjà si tu te trouve dans le clip 1, il ne doit pas apparaître dans on arborescence de ciblage, u tu le remplace par le mot réservé "this", du coup ton appel deviens :

Code: Tout sélectionner
this.clip2.clip3.clip4.monBouton.addEventListener(MouseEvent.CLICK, mafonction);



Ensuite si tu place ton code dans le clip 2, alors pourquoi repartir du clip1 dans ton ciblage ?

Sinon pour les codes d'erreur de flash la première chose c'est Google, ou bien la LiveDoc de flash (mais c'est un peu indigeste quand on débute je trouve).
"If you can't explain it simply, You don't understand it well enough."

www.explain-me.com | forum.explain-me.com | infoTRASH
Avatar de l’utilisateur
explainMe
Administrateur
 
Messages: 267
Inscrit le: Ven 03 Oct 2008 19:09
Localisation: Toulouse
Reputation points: 4
Add reputation pointSubtract reputation point
Nombre de post utiles: 1

Re: Programmation des boutons en AS 3.0

Messagepar design7 sur Mer 03 Mar 2010 16:34

Bonne après midi,
J'ai déjà essayé de faire cette proposition de mon côté et ça n'a marché, je précise que le code erreur apparait dans l'onglet "Sortie" après un clic sur le bouton concerné.
Flash me retourne ça :"TypeError: Error #1034: Echec de la contrainte de type : conversion de flash.events::MouseEvent@4dbc601 en flash.ui.Mouse impossible."
Je me demande si flash supporte ce type d'enchaînement (chemin du bouton très longue par rapport ça _root). Y-a-t-il de propriétés supplémentaire à ajouter pour programmer un bouton qui se trouverai dans des clips?
Je te joint un fichier flash que utilisé pour illustrer mon problème par mail et je me toujours pourquoi est ce que joindre par le forum me pose de problème, sais pas si c'est seulement chez moi ou...?
Merci

design7
design7
Nouveau membre
 
Messages: 13
Inscrit le: Lun 08 Fév 2010 17:55
Reputation points: 0
Add reputation pointSubtract reputation point

Re: Programmation des boutons en AS 3.0

Messagepar explainMe sur Mer 03 Mar 2010 18:52

Salut, désolé je ne l'avait pas vu plus tôt, mais le souci ne viens pas du tout de ton ciblage de bouton, mais de ta fonction qui ne reçoit pas l'événement que tu lui as indiqué en argument.

Donc tu peux remplacer ton code :

function mafonction(event:Mouse){
//--- DO THINGS ---
}

Par celui-ci :

function mafonction(event:MouseEvent){
//--- DO THINGS ---
}

Et là ça marche impec. !
"If you can't explain it simply, You don't understand it well enough."

www.explain-me.com | forum.explain-me.com | infoTRASH
Avatar de l’utilisateur
explainMe
Administrateur
 
Messages: 267
Inscrit le: Ven 03 Oct 2008 19:09
Localisation: Toulouse
Reputation points: 4
Add reputation pointSubtract reputation point
Nombre de post utiles: 1

Re: Programmation des boutons en AS 3.0

Messagepar design7 sur Jeu 04 Mar 2010 14:16

Salut Boris,
J'ai essayé le nouveau code et ça bien marché, merci à toi. J'ai aussi constaté que ce code marche bien que si le bouton se trouvant dans le quatrième clip est positionné dans la première frame, après avoir essayé de déplacer le dit bouton placer dans une autre frame que la première, flash renvoi une erreur. La question est celle de savoir, comment faire pour cibler un bouton qui se trouve dans cette position (clip4, 12ème frame).
Après exécution de mon animation, j'ai eu l'erreur suivante :
TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
at bouton_fla::MainTimeline/bouton_fla::frame10()

J'ai essayé de référencer la frame comme nous l'avions fait avec le calque interface dans la suite des cours de cette façon:
Code: Tout sélectionner
function mafonction(event:MouseEvent){
   trace("C'est Normal");
   }
this.clip1.clip2.clip3.clip4(labelBouton).monbouton.addEventListener(MouseEvent.CLICK, mafonction);
//Le bouton se trouve dans le clip 4

Flash m'a renvoyé l'erreur suivante :
1120: Accès à la propriété non définie labelBouton.

J'ai même pensé à référencer avec le numéro de la frame uniquement est ça renvoyé toujours une erreur :
TypeError: Error #1006: value n'est pas une fonction at bouton_fla::MainTimeline/bouton_fla::frame10().

Ma deuxième question est celle de savoir s'il est possible de programmer un bouton sur un swf principal et que l'effet puisse avoir lieu sur un swf externe appelé par un url si oui, comment?

Cordialement,

design7
design7
Nouveau membre
 
Messages: 13
Inscrit le: Lun 08 Fév 2010 17:55
Reputation points: 0
Add reputation pointSubtract reputation point

Re: Programmation des boutons en AS 3.0

Messagepar explainMe sur Jeu 04 Mar 2010 19:35

Ce que tu cherche à faire est tout simplement impossible (à ce que je sais), tout simplement pour la raison suivante :

Pour flash, les objets n'existent pas (d'où l'erreur "objet nul"), s'ils ne sont pas visibles sur la timeline.

Ensuite ce que tu as tenté de faire avec les étiquettes ne peux pas marché non-plus :

Les étiquettes ne servent qu'à donner des identifiants autres que les numéros à des frames de la timeline, et ne permettent en aucun cas d'identifier les objets qui y sont placés.
Les étiquettes ne servent en fait qu'à une seule chose : identifier des zones vers lesquelles on peut faire "sauter" la tête de lecture via un petit bout de code (en l'occurrence le gotoAndStop("nomEtiquette");).

Clairement ça ne peux donc fonctionner, comme tu l'as compris par toi-même, que si l'objet désigné est présent sur la première frame du clip chargé (car c'est la seule chose directement "visible" par flash une fois le chargement du swf effectué.

On touche ici les limites de la programmation séquentielle (celle présentée dans le cours). Le mieux pour toi si j'ai bien compris, serait de totalement externalisé le code dans une/des classe(s) externes aux SWF, mais là on touche à la programmation orientée objet dans flash (via des fichiers .as notamment, et tout un tas de règles de syntaxe que je ne maîtrise pas suffisamment aujourd'hui pour vous expliquer).

C'est pourquoi dans les exemples du cours, tu noteras 2 choses :
1 - le code de chaque section est présent DANS le swf de la section (plus simple car le code correspond aux objets présents dans le fichier).
2 - mis à part pour le niveau 1 du fichier interface (preload + interface), tous mes fichiers ne prennent pas plus d'une image clé.

Après si tu as positionné ton bouton sur la frame 12 à cause d'une animation, vois si tu ne peux pas tout repositionner sur la frame 1 et gérer l'animation avec l'ActionScript ?
"If you can't explain it simply, You don't understand it well enough."

www.explain-me.com | forum.explain-me.com | infoTRASH
Avatar de l’utilisateur
explainMe
Administrateur
 
Messages: 267
Inscrit le: Ven 03 Oct 2008 19:09
Localisation: Toulouse
Reputation points: 4
Add reputation pointSubtract reputation point
Nombre de post utiles: 1


Retourner vers Suite des cours

Qui est en ligne ?

Utilisateurs parcourant actuellement ce forum : Aucun utilisateur inscrit et 1 invité

cron