IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
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 :

Comment cliquer sur des clips générés par actionscript


Sujet :

ActionScript 1 & ActionScript 2

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Comment cliquer sur des clips générés par actionscript
    Bonjour,
    Voici mon problème.
    Par exemple :
    je crée un tableau de cases de la façon suivante :

    mescases=new Array(100);
    for (i=0;i<100;i++) { mescases[i]=new UneCase(sesparametres,"case"+i+"_mc",this,profondeur) }


    UneCase étant une classe dynamic extends MovieClip munie de plein de fonctions.

    Je voudrais qu'une fonction se déclanche morsque je clique sur la case (par exemple la fonction changeCouleur définie dans le fichier de classe).
    Pour l'instant la seule technique que j'ai trouvée c'est d'écrire dans le fichie .fla quelque chose du genre :

    case0_mc.onPress=function() { mescases[0].changeCouleur();}
    case1_mc.onPress=function() { mescases[0].changeCouleur();}


    quand il n'y a que 10 objets, passe encore, mais au delà c'est dur à gérer.

    J'ai essayé de mettre un onPress dans le fichier de construction de la classe UneCase mais sans effet intéressant.

    D'avance merci à qui pourrait m'aider !

  2. #2
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    Bonjour,

    J'ai essayé de mettre un onPress dans le fichier de construction de la classe UneCase mais sans effet intéressant.
    C'est pourtant cela qui est intérésant

    Pourai tu nous montré le code de ta cass ? ( essai de nous montrer que le neccessaire )

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Deux exemples de ce qui ne fonctionne pas
    Avec une droite :
    Objectif : une droite se dessine à l'écran, en cliquant dessus il faudrait qu'elle change de couleur.

    Le texte de la classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
     
    //////////////////
    /* UneDroite.as */
    //////////////////
     
    dynamic class UneDroite extends MovieClip
    {
    public var parametres:Array;
    public var coefficient:Number;
    public var ordonneeorigine:Number;
    public var abscisseconstante:Number;
    public var nom:String;
    public var estverticale:Boolean;
    public var echelle:Number;
     
    private var conteneur_mc:MovieClip;
    private var couleur:Number;
    private var expression:String;
     
    private var lescouleurs:Array;
    private var numero_couleur:Number;
     
    public var dimensions:Array;
     
    public function UneDroite(param:Array,cible:MovieClip,dimens:Array,nm:String,profondeur:Number,pas:Number)
        {
        lescouleurs=new Array(0xFF0000,0x00FF00,0x0000FF,0xFF00FF,0xFF9900,0x00FFFF,0x660000,0x003300);
        numero_couleur=0;
        nom=nm;
        // équation de droite de type ax+by+c=0
        parametres=new Array(3);
        parametres=param;
        setExpression();
        // dimensions de la fenêtre
        dimensions=new Array(2);
        dimensions=dimens;
        // définit le pas de la grille
        echelle=pas;
        setCouleur(lescouleurs[numero_couleur]);
        conteneur_mc=cible.createEmptyMovieClip(nom,profondeur);
        conteneur_mc.clear();
        dessine();
        conteneur_mc.onPress=function()
            {
            trace("coucou");
            if (numero_couleur<7) numero_couleur++;
            else numero_couleur=1;
            setCouleur(lescouleurs[numero_couleur]);
            }        
        }
     
    public function dessine()
        {
        conteneur_mc.lineStyle(1,couleur);
        if (parametres[1]==0) 
            {
            estverticale=true;
            abscisseconstante=-parametres[2]/parametres[0];
            conteneur_mc.moveTo(echelle*abscisseconstante,-echelle*dimensions[1]/2);
            conteneur_mc.lineTo(echelle*abscisseconstante,echelle*dimensions[1]/2);
            }
        else
            {
            estverticale=false;
            coefficient=-parametres[0]/parametres[1];
            ordonneeorigine=-parametres[2]/parametres[1];
            if (coefficient==0)
                {
                conteneur_mc.moveTo(-echelle*dimensions[0]/2,-echelle*ordonneeorigine);
                conteneur_mc.lineTo(echelle*dimensions[0]/2,-echelle*ordonneeorigine);
                }
            else
                {
                if (Math.abs(-coefficient*dimensions[0]/2+ordonneeorigine)<=dimensions[1]/2)
                    conteneur_mc.moveTo(-echelle*dimensions[0]/2,echelle*coefficient*dimensions[0]/2-echelle*ordonneeorigine);
                else conteneur_mc.moveTo(echelle*(-dimensions[1]/2-ordonneeorigine)/coefficient,echelle*dimensions[1]/2);
                if (Math.abs(coefficient*dimensions[0]/2+ordonneeorigine)<=dimensions[1]/2)
                    conteneur_mc.lineTo(echelle*dimensions[0]/2,-echelle*coefficient*dimensions[0]/2-echelle*ordonneeorigine);
                else conteneur_mc.lineTo(echelle*(dimensions[1]/2-ordonneeorigine)/coefficient,-echelle*dimensions[1]/2);
                }
            }
        }
     
    public function setCouleur(col:Number)
        {
        trace("coucouc");
        couleur=col;
        dessine();
        }
     
    public function setPos(pos:Array)
        {
        conteneur_mc._x=pos[0];
        conteneur_mc._y=pos[1];
        }
     
    public function setExpression()
        {
        expression="";
        switch (parametres[0])
            {
            case 0 : break;
            case 1 : expression+="x";break;
            case -1 : expression+="-x";break;
            default : expression=expression+parametres[0]+"x";break;
            }
        if ((parametres[0]!=0)&&(parametres[1]>0)) expression+="+";
        //trace(parametres[1]);
        switch (parametres[1])
            {
            case 0 : break;
            case 1 : expression+="y";break;
            case -1 : expression+="-y";break;
            default : expression=expression+parametres[1]+"y";break;
            }
        if (parametres[2]>0) expression+="+";
        if (parametres[2]!=0) expression+=parametres[2];
        expression+="=0";
        }
     
    public function getExpression():String
        {
        return expression;
        }
     
    }
    remarque : j'ai rajouté des trace pour voir ce qui se passe … la fonction de changement de couleur ne s'actionne qu'à la construction de la droite même si l'action de la souris est bien détectée. J'ai rajouté des _root dans le onPress et rien n'y fait.

    Deuxième exemple :
    Objectif : Un objet prédessiné (une case ou autre) doit se déplacer sous l'action de la souris.

    Texte de la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    ////////////////
    /* UnObjet.as */
    ////////////////
     
    dynamic class UnObjet extends MovieClip
    {
    public var conteneur_mc:MovieClip;
    private var type_objet:String;
    public var place:Array;
    public var bouge:Boolean=false;
     
     
    public function UnObjet(sontype:String,sapos:Array,cible:MovieClip,nom:String,profondeur:Number)
        {
        type_objet=sontype;
        conteneur_mc=cible.attachMovie(sontype,nom,profondeur);
        setPos(sapos);
        conteneur_mc.onPress=function()
            {
            if (!_root.bouge) _root.bouge=true;
            else _root.bouge=false;
            trace(_root.bouge);
            }
        conteneur_mc.onMouseMove=function()
            {
            if (_root.bouge) 
                {
                sapos=new Array(_xmouse,_ymouse);
                _root.setPos(sapos);
                }
            }
        }
     
    public function setPos(sapos)
        {
        conteneur_mc._x=sapos[0];
        conteneur_mc._y=sapos[1];
        }
     
    public function getPos():Array
        {
        place=new Array(2);
        place[0]=conteneur_mc._x;
        place[1]=conteneur_mc._y;
        //trace(place[0]+" avec "+place[1]);
        return place;
        }
     
    // pour tourner
    public function tourne(angle:Number):Void
    {
    conteneur_mc._rotation+=angle;
    }
     
    public function changeImage()
        {
        if (conteneur_mc._currentframe==1) conteneur_mc.nextFrame();
        else conteneur_mc.prevFrame();
        }
     
    public function getImage()
        {
        return conteneur_mc._currentframe;
        }
     
    }
    Remarque : la variable bouge change bien de valeur mais l'objet ne bouge pas …

    Remarque finale : je ne suis pas très douée en flash non plus …

  4. #4
    Inactif Avatar de CR_Gio
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 195
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 195
    Points : 1 186
    Points
    1 186
    Par défaut
    Je pense que tu devrai lire ce post : http://www.developpez.net/forums/sho...d.php?t=454418

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    dynamic class UneDroite extends MovieClip
    {
        [...]
     
    public function UneDroite( ... )
    {
        [...]
        var ThisClass:UneDroite = this;
        conteneur_mc.onPress=function()
        {
            [...]
            ThisClass.setCouleur(...);
            [...]
        }
    }
     
        [...]
    }

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2008
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Janvier 2008
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Problème résolu
    Merci, cela fonctionne très bien. Je vais essayer de l'adapter pour les autres événements …

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreur dans des fichiers générés par WSDL2Java
    Par stephou85 dans le forum Services Web
    Réponses: 2
    Dernier message: 15/05/2007, 11h49
  2. [FLASH MX2004] Boucle sur des clips est-ce possible ?
    Par vbcasimir dans le forum Flash
    Réponses: 4
    Dernier message: 09/02/2006, 09h00
  3. [Oracle 9.2.0.7] Comment updater sur des clés de partition ?
    Par le_nullos_des_nullos dans le forum Oracle
    Réponses: 3
    Dernier message: 05/02/2006, 00h26
  4. [WD9] Cliquer sur des enregistrements dans une table
    Par oz80 dans le forum WinDev
    Réponses: 2
    Dernier message: 15/12/2005, 20h11
  5. [VB6] Comment boucler sur des controls d'un form ?
    Par lankviller dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 27/01/2003, 16h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo