Site complet en flash : part 6

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.

Re: Site complet en flash : part 6

Messagepar explainMe sur Dim 15 Nov 2009 15:09

Ce n'est pas un problème en soit de faire trop de fonctions. En fait c'est même mieux pour commencer de tout séparer pour ne pas s'embrouiller l'esprit.

J'ai peut-être voulu aller trop vite en fait. Le fait est qu'au bout d'un moment lorsque tu commence à maîtriser un peu plus le code, tu cherche systématiquement à réduire le nombre de fonctions et donc le nombre de lignes, ça allège et "simplifie" le code (et oui les programmeurs sont des feignants !).

Pour ce qui est de tes effets sur tes textes effectivement le mieux serait de créer un champs de texte dynamique pour chaque (les champs de textes supportent les filtres comme les clips à peu près).
Par contre si tu veux ajouter un filtre via le code (comme une ombre portée par exemple), il faut bien penser que ça implique certaines choses supplémentaires comme :
- l'import d'un ou plusieurs classes référentes aux filtres.
- l'application de ce filtre (que nous n'avons pas vu dans le cours parce que je n'ai pas voulu trop en mettre d'un coup, cela dit c'est faisable).

Malheureusement non, l'état ROLL_OUT n'est pas automatique, dans le sens où si tu applique un filtre lors du survol, il faut le "désappliquer" lorsque tu quitte le survol, car Flash ne peux pas deviner que tu souhaites forcément qu'il disparaisse...

Réponse à ton aparté :
Oui et non, tu peux utilise aucune, une seule ou plusieurs variables de positions, tout dépend de comment sont renseignées les options de l'animation Tween. c'est juste une question de méthode au final.

Par exemple si plusieurs animations Tween utilise une même valeur à un moment ou à un autre, alors autant la définir sous la forme d'un variable (qui du coup ici, pour être plus précis, fait office de constante en programmation).
Comme ça si cette valeur est utilisée par 5 fonctions et que pour une raison ou une autre, tu décide de modifier cette valeur, alors tu n'a besoin que de le faire 1 fois (quand même plus pratique).

Enfin pour ce qui est de mon évocation du test pour l'état du sous-menu, en fait là je suis plutôt dans une logique technique de pratique, à savoir que le test évite de lancer une animation si jamais elle n'est pa nécessaire.
Par exemple ton clip est en position 1 :
tu clic sur un bouton et l'animation déplace ton clip de la position 1 à la position 2 (ton animation est conçue pour débuter l'animation depuis al position en couts de ton clip vars la position cible).
Si tu clic sur un autre bouton qui a pour action de lancer une nouvelle fois ton animation, certes ça ne changera rien puisque visuellement ton clip, étant déjà à la position 2, ne bougera pas. Cependant le code lui s'exécute quand même, même si ses effets sont invisibles. Du coup tu "consomme" (le terme est un peu fort compte tenu du peu de code dont nous parlons) des ressources système pour effectuer l'action.
Je conçois que je vais peut-être un peu loin dans ma logique. Mais je reste convaincu que plus tôt on prend de bonnes habitudes, et plus facilement on les applique par la suite.

P.S. : ton algorithme est faux il me semble, les 3 dernières lignes (2 actions + accolade) feront planter le script car l'accolade est en trop, et du coup les 2 lignes la précédent ne sont pas dans une fonction.
"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: Site complet en flash : part 6

Messagepar Muktaditi sur Dim 15 Nov 2009 16:55

j'ai repensé mon idée en fonction des éléments que tu viens de me donner...

pour simplifier, si je met mon sousMenu dans le fichier realisation.swf, je n'ais plus que 4 boutons dont la fonction est de charger le swf correspondant...

j'aurais alors:
4 écouteurs pour l'évènement CLIC (1 pour chaque bouton) lance la fonction chargeSwf
fonction chargeSwf (argument: MouseEvent.CLICK , évènement:event){
variable: nom du bouton cliqué [type:String]
action {condition : selon le bouton cliqué} donne l'url a charger
action : vide le clip contenu
action : charge le swf dans le clip contenu

ça se tient ça ???
Avatar de l’utilisateur
Muktaditi
Habitué
 
Messages: 56
Inscrit le: Jeu 29 Oct 2009 08:50
Reputation points: 1
Add reputation pointSubtract reputation point
Nombre de post utiles: 1

Re: Site complet en flash : part 6

Messagepar explainMe sur Dim 15 Nov 2009 18:20

Ça se tient !
"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: Site complet en flash : part 6

Messagepar Muktaditi sur Lun 16 Nov 2009 08:12

heu... il y a un soucis ??? :(

parce qu'en relisant un peu les posts, je me rends compte qu'au fur et à mesure que tu m'apprends des choses, je les retire...
Ne crois surtout pas que je "n'écoute"pas tes conseils, bien au contraire, j'ai compris un tas de choses que je vais utiliser dans les projets successifs, au fur et a mesure que je travail, j'aime avoir completement intégrer ce que je fais... au jour d'aujourd'hui j'ai vraiment progréssé grace a toi, mais afin de vraiment concrétiser cet enseignement, je cherche a au moins finir un projet simple en ayant réellement compris ce que je fais....je te l'ai dit, j'ai comme l'impression de travailler à l'envers pour l'instant...je décortique ...je prends du recul pour bien intégrer et je recompliquerai en avançant dans des projets, c'est comme ça que je pense être capable un jour de réaliser quelque chose de semblable a ce que tu fais dans le tuto toute seule...
Avatar de l’utilisateur
Muktaditi
Habitué
 
Messages: 56
Inscrit le: Jeu 29 Oct 2009 08:50
Reputation points: 1
Add reputation pointSubtract reputation point
Nombre de post utiles: 1

Re: Site complet en flash : part 6

Messagepar explainMe sur Lun 16 Nov 2009 18:40

Aucun problème.

Je me doute bien que le cours n'est qu'un exemple et ne correspond pas à tout le monde. Chacun travail à sa façon.

Et toi seule peux savoir si mes explications t'aident réellement ou bien t'embrouillent plus qu'autre chose.

Évidement tu restes libre de travailler comme bon te semble et je comprends parfaitement que je puisse avoir tendance à rentrer trop profondément dans les choses pour quelqu'un qui débute (du coups ça embrouille un peu).

Et quand bien même tu souhaites prendre du recul par rapport au cours pour travailler à ta manière (ce que je comprends aisément), n'hésite pas si jamais tu as besoin d'aide.
"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: Site complet en flash : part 6

Messagepar Muktaditi sur Lun 16 Nov 2009 19:33

:) ça me rassure... parceque j'ai eu beau simplifier, je ne suis pas parvenu a écrire correctement le code pour que ça fonctionne pour l'instant...mais j'y travail et je te solliciterai certainement encore....
A très bientôt ;)
Avatar de l’utilisateur
Muktaditi
Habitué
 
Messages: 56
Inscrit le: Jeu 29 Oct 2009 08:50
Reputation points: 1
Add reputation pointSubtract reputation point
Nombre de post utiles: 1

Re: Site complet en flash : part 6

Messagepar Muktaditi sur Mar 17 Nov 2009 12:19

me revoila.... :roll:
Pour les effets en MOUSE_OVER
j'ai trouvé ça pour l'application du filtre :
GlowFilter () Constructeur
public function GlowFilter(color:uint = 0xFF0000, alpha:Number = 1.0, blurX:Number = 6.0, blurY:Number = 6.0, strength:Number = 2, quality:int = 1, inner:Boolean = false, knockout:Boolean = false)

Il me faut donc importer la classe flash.filters si j'ai bien compris...
créer:
variable : etatInitialTexte = le texte tel qu'il est [type: ???]
variable : etatFinalTexte = le texte+Glowfilter [type: ???] (String je suppose ???) (variables que je ne sais pas si elle doivent être placées dedans ou en dehors de mes fonctions, et s'il faut en déclarer plusieurs)

fonction : appliqueFitre (arguments: MouseEvent évènement:event) {
action : applique le glowFilter sur le texte
}
fonction: desappliqueFiltre (arguments:MouseEvent évènement:event) {
action : remet le texte a son etat d'origine
}
(que je ne sais pas écrire, j'ai essayé comme une tween, mais ça doit pas être comme ça, et de plus ça agit sur quoi le bouton.text ??? ....) :?
et les écouteurs évidemment...


Pour les liens sur les swf, j'ai utilisé ce code :
Code: Tout sélectionner
function choixSwf( event:MouseEvent ) {
   switch( event.currentTarget ) {
      case menuTexte.bPresentation :
         chargeSwf("presentation.swf");
      break;
      case menuTexte.bRealisation :
         chargeSwf("realisatins.swf");
      break;
        case menuTexte.bLiens :
           chargeSwf("Liens.swf");
        break; 
      case menuTexte.Contact :
             chargeSwf("Contact.swf");
        break;
    }
}
function chargeSwf(String:URL) {   
   while (contenu.numChildren > 0) {
   contenu.removeChildAt(0);  //--- On vide le conteneur ---
   }
    var chargeur:Loader = new Loader();//--- création du chargeur ---
   var chemin:URLRequest=new URLRequest(URL);//--- url à atteindre ---
    chargeur.load(chemin); //--- chargement du contenu ---   
   contenu.addChild(chargeur);//--- ajout à la liste d'affichage : lancement du chargement ---
}

this.menuTexte.bPresentation.addEventListener(MouseEvent.CLICK, choixSwf);
this.menuTexte.bRealisation.addEventListener(MouseEvent.CLICK, choixSwf);
this.menuTexte.bLiens.addEventListener(MouseEvent.CLICK, choixSwf);
this.menuTexte.bContact.addEventListener(MouseEvent.CLICK, choixSwf);

Mais ça donne :
1046: Ce type est introuvable ou n'est pas une constante de compilation : URL. function chargeSwf(String:URL) {

evidemment je me rends bien compte que c'est certainement stupide, que j'ai pas du tout capter dans les valeurs, mais j'avoue que ça m'apparraissait clair comme ça....
Avatar de l’utilisateur
Muktaditi
Habitué
 
Messages: 56
Inscrit le: Jeu 29 Oct 2009 08:50
Reputation points: 1
Add reputation pointSubtract reputation point
Nombre de post utiles: 1

Re: Site complet en flash : part 6

Messagepar explainMe sur Mer 18 Nov 2009 01:01

Salut,

Hé ben tu commence fort dit-donc, directement les filtres !

Alors voici comment s'applique un filtre en AS3 :

Code: Tout sélectionner
//
//---  1 --- Déclaration du filtre ---
//
var glow:GlowFilter = new GlowFilter(0xFF0000, 1, 6, 6, 2, 1, false, false);
//
//--- 2 --- Création d'un tableau renfermant tous les filtres que l'on veux appliquer à l'objet ---
//
var listeFiltres:Array = new Array(glow);
//
//--- 3 --- Application de tous les filtres contenus dans le tableau à l'objet ---
//
this.monTexte.filters = listeFiltres;


Le fait de passer par un tableau pour stocker une "liste" de filtres permet, comme tu l'as sûrement déjà compris, d'appliquer plusieurs filtres à un même objet (plutôt pratique donc :D ).

Donc si tu as 2 filtres, ça donnera pour l'étape 2 :

Code: Tout sélectionner
var listeFiltres:Array = new Array(filtre1, filtre2);


En résumé, tu défini tous les effets que tu veux sous la forme de variables, puis tu créé une variable tableau qui renferme la liste des filtres à appliquer, et enfin tu utilise la propriété filters de l'objet pour lui appliquer tous les filtres stockés dans le tableau.

Pour retirer les filtres appliqués à un objet, il suffit de donner une valeur nulle à sa propriété filters :
Code: Tout sélectionner
this.monTexte.filters = [];

[] représente un tableau vide (qui est une forme d'écriture raccourcie, et évite de vider la variable listeFiltres, comme ça on peut la réutiliser :P ).

Après pour les paramètres à placer entre les parenthèses lorsque tu déclares l'effet, c'est un peu comme pour les variables Tween, c'est détaillé dans la doc (si besoin je te "traduirais" ;) ).

Donc pour en revenir à ton code :

    1 - tu déclare ton(tes) filtre(s).
    2 - Tu les met dans un tableau.
    3 - tu créé 2 fonctions : une qui applique le filtre, et l'autre qui le retire (après si tu veux que tout ça s'anime il suffit de modifier la manière dont tes fonctions appliquent ou retire le(s) filtre(s) ).

Pour ton souci avec la variable URL, je crois tout simplement que ça viens du fait que tu as inversé le sens des choses (mais je crois que c'est ma faute car j'ai moi-même fait comme ça dans les codes en "algo".

Bref, String:URL doit s'écrire URL:String
"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: Site complet en flash : part 6

Messagepar Muktaditi sur Mer 18 Nov 2009 11:57

:D Yes ! pour l'url, c'est bon ça fonctionne....

maintenant c'est avec la fonction appliqueFiltre que je me perd...
j'ai compris l'intérêt d'un tableau de filtres, et comment le faire, mais c'est sur la fonction que je bloque..

Code: Tout sélectionner
var glow:GlowFilter = new GlowFilter(0xFF0000, 1, 6, 6, 2, 1, false, false);
var listeFiltres:Array = new Array(glow,);

jusque là, je suis...

la ligne :
Code: Tout sélectionner
this.monTexte.filters = listeFiltres;


devient je suppose dans mon projet :
Code: Tout sélectionner
this.menuTexte.currentTarget.filters = listeFiltres;
:?:

et vient ensuite les fonctions...

tu me dis, pour enlever le filtre:
Code: Tout sélectionner
this.monTexte.filters = [];


devient je suppose dans mon projet :
Code: Tout sélectionner
this.menuTexte.currentTarget.filters = [];
:?:

que je place dans la fonction :
Code: Tout sélectionner
function desappliqueFiltre (event:MouseEvent) {
this.menuTexte.currentTarget.filters = [];
}
:?:

est_ce que jusque là j'ai bon ????
Avatar de l’utilisateur
Muktaditi
Habitué
 
Messages: 56
Inscrit le: Jeu 29 Oct 2009 08:50
Reputation points: 1
Add reputation pointSubtract reputation point
Nombre de post utiles: 1

Re: Site complet en flash : part 6

Messagepar explainMe sur Mer 18 Nov 2009 12:42

Presque ...

Sauf que dans tes fonctions, il ne faut pas faire référence au texte du bouton comme ceci :

Code: Tout sélectionner
this.menuTexte.currentTarget.filters = [];


Mais comme ça :

Code: Tout sélectionner
event.currentTarget.filters = [];


Car currentTarget fait référence à l'event passé en argument de la fonction (grâce à l'écouteur).

Sauf que (et oui ce n'est pas si simple) :

Tel quel, si tu as construit tes boutons comme moi dans le cours, l'effet sera appliqué sur la zone réactive, et nom sur le texte (puisqu'il n'est jamais en contact avec la souri étant donné que la zone réactive et au-dessus des champs de textes).

Bref, il faut donc déterminer, en fonction de la zone , le champ de texte sur lequel doit-être appliqué l'effet (ça te rappelle rien ? genre un switch ? :) ).
"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

PrécédentSuivant

Retourner vers Suite des cours

Qui est en ligne ?

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

cron