Partage
  • Partager sur Facebook
  • Partager sur Twitter

[FLASH] Relier 2 points

Et changer le contenu d'un variable

    12 novembre 2006 à 8:53:04

    Bonjour,

    Je suis en train d'apprendre l'AS en suivant le cours de SuprazZz.

    Mais, travaillant au projet qui m'a poussé à apprendre le Flash, je suis tombé sur un problème. J'ai réfléchi mais je pense que la matière que j'ai vu n'est pas suffisante ou que je ne comprends pas tout simplement...

    Mon problème :
    Je dois relier 2 points ensemble, avec un trait pour que la variable (boolean) du point relié soit la même que la variable (boolean) du point reliant.

    J'ai essayé ceci :

    octoss.onRelease = function() {
    _root.createEmptyMovieClip('des_ss', 1);
    des_ss.lineStyle(1, 0x000000, 100);
    _root.onMouseDown = function() {
    des_ss.moveTo(_xmouse, _ymouse);
    _root.onEnterFrame = function() {
    des_ss.lineTo(_xmouse, _ymouse);
    };
    };
    _root.onMouseUp = function() {
    _root.onEnterFrame = null;

    };
    }

    Les problèmes :
    - Apres avoir relier les deux points, la fonction ne s'arrete pas.
    Dans le cours SuprazZz nous explique comment effacer le clip crée, mais pas comment arreter la fonction.
    - Ensuite, je ne sais pas comment faire en sorte que Flash détecte qu'il y a un trait sur ce point et qu'il trouve l'autre bout et adopte le contenu de la variable dans la variable du point relié. (compris ? :D )

    Auriez-vous une solution à ce problème ? On est pas obligé d'employer des traits mais ça m'a l'air le moins compliqué. Qu'en pensez-vous ? Avez-vous une autre solution ?

    Mille mercis !

    Kolasse

    En image : Cliquez ici
    le trait rouge relie les 2 point. X donne le contenu de sa variable à Y quand ils sont reliés.
    • Partager sur Facebook
    • Partager sur Twitter
      12 novembre 2006 à 22:02:34

      C'est impossible en Flash ? Je croyais que Impossible n'était pas Flash :D

      Bon, j'ai essayé de résoudre ce problème tout seul mais il me reste une question :
      Comment faire pour que dans une condition on mette entre a et b
      Ex :
      if (point._x==125-135 && point._y==50-60)

      Comment fait-on pour dire : SI le x de point est ENTRE 125 et 135 ET le Y de point est ENTRE 50 et 60 ALORS...
      ?

      Merci pour votre aide ! :-°
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        13 novembre 2006 à 17:44:28

        si tu veut arrter la fonction octoss.onRelease tu fait:

        octoss.onRelease = function() {
        _root.createEmptyMovieClip('des_ss', 1);
        des_ss.lineStyle(1, 0x000000, 100);
        _root.onMouseDown = function() {
        des_ss.moveTo(_xmouse, _ymouse);
        _root.onEnterFrame = function() {
        des_ss.lineTo(_xmouse, _ymouse);
        };
        };
        _root.onMouseUp = function() {
        _root.onEnterFrame = null;

        };
        //----------avant de fermer la fonction tu rajoute-------------------------===>
        delete octoss.onRelease
        //---------------------
        }
        • Partager sur Facebook
        • Partager sur Twitter
          13 novembre 2006 à 18:43:09

          Ah oui ! Merci !

          Mais alors j'ai encore une petite question :
          Est-il possible de mettre dans une condition ceci :
          En AS : if (100>=point._x>=110) {...
          En mot : SI x de point est ENTRE 100 et 110 ALORS...

          Il faut faire sa comme ca en AS ou pas ? Si jvous le demande c'est parce que je ne sais pas comment voir si c'est mon script qui marche pas ou ma condition.
          • Partager sur Facebook
          • Partager sur Twitter
            13 novembre 2006 à 19:51:10

            je pense que ça marche un peu de la même façon dans les autres langages de programation : reprennones ta phrase en français :
            SI _x de point est ENTRE 100 et 110 ALORS...

            Ca peut s'écrire :
            SI _x de point est SUPÉRIEUR à 100 et INFÉRIEUR à 110 ALORS...

            D'où en Actionscript :
            if (point._x >= 100 && point._x <= 110) {...}


            PS: Au lieu de if (100>=point._x>=110) tu pensais pas plutot à if (100<=point._x<=110) ?
            • Partager sur Facebook
            • Partager sur Twitter
              13 novembre 2006 à 20:45:18

              Citation : SpotZup

              PS: Au lieu de if (100>=point._x>=110) tu pensais pas plutot à if (100<=point._x<=110) ?


              Woops, jme suis un petit peu trompé

              Sinon, j'ai essayé se que tu m'as dis, j'arrive dans à ceci :
              if (110<point2._x && point2._x<125 && 50<point2._y && point2._y<65 && 182<point1._x && point1._x<197 && 72<point1._y && point1._y<87) {
                      trace("ca marche");
                      not1 = ss;
              }

              Donc si point1 est dans le carré et point2 dans l'autré carré, ALORS la variable not1 (boolean) est égale à la variable ss (boolean).
              Mais "ca marche" n'apparait pas et une lumière devrait s'allumer si not1 était égale à "true" (ss==true).
              Donc, ma question maintenant est:

              Où est la faute ?


              Merci pour votre aide,

              • Partager sur Facebook
              • Partager sur Twitter
                14 novembre 2006 à 19:04:38

                J'ai trouvé la faute et j'avais résolu ce problème quand un autre est apparu :

                J'avais créé une fonction au début et, maintenant que j'ai une manière concrète de l'utiliser, je remarque qu'elle ne marche pas :p .
                La voici :
                var ss:Boolean=false;
                c_ssoff.onRelease = function() {
                                c_ssoff._visible = false;
                                c_sson._visible = true;
                                c_ledss._visible = false;
                                c_ledonss._visible = true;
                                ss = true; }
                c_sson.onRelease = function() {
                                c_ssoff._visible = true;
                                c_sson._visible = false;
                                c_ledss._visible = true;
                                c_ledonss._visible = false;
                                ss = false; }

                Donc au clic, "ss" devient 'true'. Ensuite au clic (aussi (là est sans doute le problème)) "ss" redevient 'false'.
                Vous aurez deviné : "ss" est toujours 'false'.

                Je n'arrive pas à tomber sur une solution :euh: Quelqu'un pourrait m'aider, svp ? (j'ai une dizaine de fonction similaire dans mon projet donc c'est TRES important :) ).

                Mille mercis ! et soyez rapide, je crève d'impatience de continuer :D

                Kolasse
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  15 novembre 2006 à 2:20:24

                  Mais tu veut quoi comme solution??
                  la quand tu clique sur c_ssoff tu fait disparaitre ce bouton, tu fait apparaitre le bouton c_sson et la led on et l'inverse pour l'autre bouton

                  si c'est ca qui fonctionne pas verife que tu a bien donné un nom d'occurence a tout tes MC
                  • Partager sur Facebook
                  • Partager sur Twitter
                    15 novembre 2006 à 14:53:31

                    Voilà tu as compris.
                    Donc en fait j'ai plusieurs clip dans mon projet et voila ce qu'ils font :
                    1) Changer de "forme" au "Release" (pour les boutons même et des lampes leds indiquant que c'est "false" ou "true".
                    2) Changer une variable Boolean en son inverse. (par ex: false-->true (onRelease))

                    L'étape 1) marche sans problème mais pas 2) o_O

                    Alors je ne vois pas le problème... (les noms d'occurence sont exacts j'ai verifié et reverifié, mais apparement c'est un problème avec la variable "ss" qui reste toujours "false".
                    • Partager sur Facebook
                    • Partager sur Twitter

                    [FLASH] Relier 2 points

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown