Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 1 & ActionScript 2 Discussion :

quand on charge un niveau, les clips du niveau précédent sont toujours actifs..


Sujet :

ActionScript 1 & ActionScript 2

  1. #1
    Futur Membre du Club
    quand on charge un niveau, les clips du niveau précédent sont toujours actifs..
    Bonjour,

    Je me suis paumée depuis plusieurs jours et je ne m'y retrouve plus !

    J'explique le problème :

    Je créé un niv00.fla sur lequel je n'ai rien d'autre qu'un arrière-plan noir, et un calque actions contenant une image-clé :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    loadMovieNum('niv05_intro.swf', 5);


    Ce niv00.swf charge donc un niv05_intro.swf, sur lequel j'ai fait 3 calques :
    - le 1er calque qui représente une image qui apparaît progressivement,
    - le 2e calque qui contient un clip bt_entr (bouton ENTRER sur lequel on cliquera pour entrer),
    - le 3e calque qui contient des actions :
    en frame 20 (au moment de l'apparition du bt_entr) :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    play();
    bt_entr.onPress = function ()
    	{
    		loadMovieNum('niv10_desk.swf', 10);
     
    	}

    en frame 80 :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    stop();
    pour que l'apparition du fond ainsi que celle du bouton ne tournent pas en boucle.

    Quand l'utilisateur clique sur le bouton ENTRER (bt_entr), cela charge donc un niveau supplémentaire, le niv10_desk.swf
    Sur le niv10_desk.swf, j'ai à nouveau 3 calques :
    - 1 calque pour la nouvelle image qui apparaît progressivement (puisqu'on a cliqué sur 'entrer', on entre donc dans le site avec un nouveau visuel)
    - 1 calque pour l'apparition d'un titre
    - 1 calque pour les actions :
    en frame 20 :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    play();

    en frame 80 :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    stop();


    J'en viens donc à mon problème : arrivé sur le niv10_desk.swf, notre curseur peut toujours cliquer sur le bouton 'entrer' qui était sur le niveau dessous(niv05_intro.swf). Et du coup, on peut cliquer indéfiniment et chaque fois refaire apparaitre le niv10_desk.swf !

    Je ne sais plus comment j'avais fait pour éviter cela.

    Je m'y prends sans doute mal dans mon organisation, mais j'aimerais retrouver le moyen pour que le niveau précédent se décharge à partir du moment où j'ai cliqué sur 'entrer'.
    Évidemment vous allez me dire, le niveau précédent ne peut pas se décharger puisque c'est ce niveau qui charge le niveau niv10_desk.swf !!

    Donc où est mon erreur ? et comment dois-je m'y prendre selon vous ?

    Merci beaucoup pour votre aide !


    PS : je suis sur mac osx
    flash cs3
    AS 2

  2. #2
    Rédacteur/Modérateur

    Bonjour,

    il faut bien décharger les clips après avoir chargé le niveau supplémentaire :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    bt_entr.onPress = function ()
    {
        loadMovieNum('niv10_desk.swf', 10);
        unloadMovieNum(5);
    };


    il y a aussi la solution de ne supprimer que l'écoute de l'évènement press sur le bouton Enter :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    bt_entr.onPress = function ()
    {
        loadMovieNum('niv10_desk.swf', 10);
        delete this.onPress;
    };

  3. #3
    Futur Membre du Club
    Salut Beekeep, et merci
    mais dans le 1er code que tu m'as donné, comment cela peut-il fonctionner, puisqu'on est sur le niveau 5 ?
    un niveau ne peut pas se décharger lui-même, c'est ça que je ne comprends pas

    Peux-tu m'expliquer ?
    merci d'avance

  4. #4
    Rédacteur/Modérateur

    les niveaux sont ceux de l'animation entière,
    le niveau 5 de la première est le même que celui de l'animation chargée.

    et oui un clip peut se supprimer lui même.

  5. #5
    Futur Membre du Club
    J'ai donc écrit ça dans mon niv05_intro.swf, mais le bouton entrer est tjs actif. Je ne comprends pas ce que je dois faire.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    play();
     
    bt_entr.onPress = function ()
    {
    	loadMovieNum('niv10_desk.swf', 10);
    	unloadMovieNum(05);
     
    }

  6. #6
    Futur Membre du Club
    c'est quand je prévisualise le niv05_intro.swf que je vois que ma souris est tjs active et que le niv05 n'a pas été déchargé.
    Par contre, qd je vais prévisualiser le niv00, qui lui-même charge le niv05, alors là effectivement le unloadMovieNum a fait son effet, le bouton 'entrer' n'est plus actif une fois qu'on a cliqué dessus.
    Faut-il faire cela pour CHAQUE niveau ?
    merci

  7. #7
    Rédacteur/Modérateur

    Citation Envoyé par anoushka Voir le message
    Faut-il faire cela pour CHAQUE niveau ?
    c'est à dire ?

    comment fonctionne ton animation ?

  8. #8
    Futur Membre du Club
    Ok, mon anim' fonctionne comme cela :

    le niv00 charge
    le niv05 , sur lequel apparaît une image, puis un bouton 'entrer'. Quand on clique sur 'entrer', on charge
    le niv10 : on entre dans le site : une image apparaît, des boutons apparaissent. Chaque bouton cliqué charge un niveau différent
    le bouton A charge le niv15
    le bouton B charge le niv25
    le bouton C charge le niv35
    mais quand on est par exemple dans le niv35, il y a une icone cliquable qui charge de nouveau le niv10, en faisant disparaitre le niv35 : donc je t'ai bien interprété, là aussi je mets unloadMovieNum(35) ?

    Ma méthode est-elle correcte ?
    Quelle différence entre les 2 codes que tu as indiqués, plus haut ?

  9. #9
    Rédacteur/Modérateur

    Citation Envoyé par anoushka Voir le message
    mais quand on est par exemple dans le niv35, il y a une icone cliquable qui charge de nouveau le niv10, en faisant disparaitre le niv35 : donc je t'ai bien interprété, là aussi je mets unloadMovieNum(35) ?
    oui ça devrait fonctionner.

    Citation Envoyé par anoushka Voir le message
    Ma méthode est-elle correcte ?
    c'est correct mais pas du tout optimisé vu qu'à chaque fois que l'on revient sur l'animation principale elle est rechargée.

    Citation Envoyé par anoushka Voir le message
    Quelle différence entre les 2 codes que tu as indiqués, plus haut ?
    le premier supprime le clip qui était resté en arrière plan.
    le second rend le bouton enter non cliquable.


    sinon j'aurai une autre bidouille à proposer

    dans chaque animation qui s'ajoute, créer un clip fond qui occupe toute la place.
    Ensuite il suffit de le rendre cliquable pour que les animations d'en dessous ne le soient plus.
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    clipFond.onPress = function()
    {
      useHandCursor = false; // pour ne pas avoir le curseur main
    };

  10. #10
    Futur Membre du Club
    c'est correct mais pas du tout optimisé vu qu'à chaque fois que l'on revient sur l'animation principale elle est rechargée.
    Ah. Je m'en doutais.
    J'aimerais bien optimiser mais je ne sais comment faire. Tu sais toi ?

    En tout cas je vais essayer de suivre ta bidouille : c'est à mettre en calque inférieur, dans chaque niv.swf , c'est ça ? et ça doit être transparent j'imagine.. Donc ça, ça devrait rendre non cliquable les niveaux inférieurs.
    Mais c'est quand-même mieux de décharger des niveaux plutôt que de les laisser actifs, non ?

    En fait, je ne sais pas à partir de combien d'octets il vaut mieux décharger des animations, dans la mesure où l'on va les lire sur internet. Je crois qu'il faut tjs décharger les niveaux inférieurs, sinon, le serveur va me dire que je dois payer plus de trafic ou un truc du genre !.....

###raw>template_hook.ano_emploi###