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

Flash Discussion :

[FLASH MX] de l'utilisation de localToGlobal


Sujet :

Flash

  1. #1
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2003
    Messages : 302
    Points : 316
    Points
    316
    Par défaut [FLASH MX] de l'utilisation de localToGlobal
    Salut à tous,

    Je n'arrive pas à utiliser correctement localToGlobal et à vrai dire les exemples de codes dans l'aide du flash ne m'ont pas vraiment aidé.Ils marchent bien mais pour mon exemple j'ai pas su l'adapter :

    Voilà j'ai un clip qui represente une fusé _root.fuse et dans cette fusé il y a un lance missile qui lance,devniez quoi,des missiles,bravo vous étes des génies. _root.fuse.mis est le clip qui représente le projectile.

    PROBLEME :

    Je dois programmer le lancement du missile

    DEMARCHE :

    Je dois incrementer les coordonnées du missile en fonction de l'angle qu'il forme avec l'axe des (x) (propriété _rotation qui est la meme que celle de la fusé dans mon exemple).

    Une fois que le missile atteint les bords de la fenetre,je dois arreter de le deplacer.

    PROBLEME :

    Comment avoir les coordonées GLOBALES du missile (% à la scène), sachant que _x et _y donne les cooronnées du missile par rapport à son clip père qui est la fusé ?

    DEMARCHE :

    En utilisant localToGlobal...Enfin je pense !?

    Je place ce code dans l'unique image de mon scénario sur _root

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    coomissile = new Object ();
    coomissile.x=_x;
    coomissile.y=_y;
    localToGlobal(coomissile);
    updateAfterEvent();
    PROBLEME :

    Dans coomissile je trouve les coordonnées du missile % à la fusé et non pas % à la scéne...

    quelqu'un pourrait m'aider please ?

    Merci à tous !

  2. #2
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    tu peux un peu plus de code , car la je peux rien tester

  3. #3
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2003
    Messages : 302
    Points : 316
    Points
    316
    Par défaut Autant pour moi
    Pardon j'ai fait une grosse betise dans le code je rectfie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    coomissile = new Object (); 
    coomissile.x=_root.fuse.mis._x; 
    coomissile.y=_root.fuse.mis._y; 
    localToGlobal(coomissile); 
    updateAfterEvent();
    Un peu plus de code ? bon je vais ecrire la fonction qui lance le missile dans la 1ere image sur _root :

    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
     
    vitesse = 10; // Vitesse du projectile (missile)
     
    //Ici la fonction shoot lance le missile,shoot est une fonction membre du clip fuse
    //Elle est appelée quand je presse la barre d'espace
     
    _root.fuse.shoot = function() {
     
    	i=0;	
    	while (i<50  && coomissile.x>0 && coomissile.x<500 && coomissile.y<500 && coomissile.y >0) {
    		_root.fuse.mis._x-=math.cos(math.PI/180*_root.fuse._rotation)*vitesse;
    		_root.fuse.mis._y-=math.sin(math.PI/180*_root.fuse._rotation)*vitesse;
    		i++;
    	}
    };
    Le porbleme c'est que les coordonnées du missiles sont faussées :
    coomissile.x et coomissile.y contiennent les coordonnées x et y % à fusé et non par rapport à la scène.

    Ici le code du clip fusé :

    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
     
    onClipEvent (keyDown) {
    	if (Key.getCode() == Key.SHIFT) {
    		this._rotation += 10;
    	} [size=18][b]else if (Key.getCode() == Key.SPACE) {
    		this.shoot();[/b][/size]	} else if (Key.getCode() == Key.CONTROL) {
    		this._rotation -= 10;
    	} else if (Key.getCode() == Key.UP) {
    		this.gaz._visible = true;
    		this.gaz.play();
    		if (vitesse<30) {
    			vitesse += 5;
    		}
    	} else if (Key.getCode() == Key.DOWN) {
    		if (vitesse>10) {
    			vitesse -= 5;
    		} else if (vitesse>0) {
    			vitesse--;
    		}
    	} else if (Key.getCode() == Key.LEFT) {
    		this._rotation -= 10;
    	} else if (Key.getCode() == Key.RIGHT) {
    		this._rotation += 10;
    	}
    }
    onClipEvent (keyUp) {
    	this.gaz._visible = false;
    	this.gaz.stop();
    }
    onClipEvent (enterFrame) {
    	if (this._y<0) {
    		this._y = 500;
    	}
    	if (this._y>500) {
    		this._y = 0;
    	}
    	if (this._x<0) {
    		this._x = 500;
    	}
    	if (this._x>500) {
    		this._x = 0;
    	}
    	this._x += math.cos(math.PI/180*this._rotation)*vitesse;
    	this._y += math.sin(math.PI/180*this._rotation)*vitesse;
    	if (vitesse) {
    		vitesse--;
    	}
    }

  4. #4
    Membre émérite
    Avatar de bolo
    Inscrit en
    Novembre 2002
    Messages
    1 309
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 309
    Points : 2 695
    Points
    2 695
    Par défaut
    donc si tu fais ca tu as le meme résultat ?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    coomissile = new Object ();
    coomissile.x=_root.fuse.mis._x;
    coomissile.y=_root.fuse.mis._y;
     trace("toto"+root.fuse.mis._y)
       trace(point.x)
    localToGlobal(coomissile);
    updateAfterEvent();
    tu as le meme résultat ?

  5. #5
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2003
    Messages : 302
    Points : 316
    Points
    316
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    coomissile = new Object();
    coomissile.x = _root.fuse.mis._x;
    coomissile.y = _root.fuse.mis._y;
    localToGlobal(coomissile);
    trace("coordonnées du missile % fusé"+_root.fuse.mis._x);
    trace("coordonnées du missile % à la scène ... Du moins en théorie !!? : "+coomissile.x);
    Avec ce code,j'ai les meme résultats ;/ .. J'ai regardé pour updateAfterEvent elle n'est prise en compte que si elle est prise en charge par un géstionnaire d'événements de clips où dans une fonction passé en paramètre à setInterval,je l'ai donc enlevé du code.

    Ciao.

  6. #6
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    302
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2003
    Messages : 302
    Points : 316
    Points
    316
    Par défaut
    De toutes façons j'ai contourné le probléme car tout ce que doit faire cette fonction en fin de compte c'est de rajouter les cooronnées du clip fusé au clip missile pour avoir les coordonnées du missile % à la scène.

    si fusé est en 10 10 et que missile est en 15 15 % à fusé,alors missile est en 25 25 % à la scène. (15+10 15+10)...

    Autant créer sa propre fonction (qui marche ) et qui s'appele mylocalToGlobal,qui prends en param un objet et qui ajoute aux coordonnées membres de cet objet les cooronnées du clip parent.

    S'il ya plusieurs parents on fait la somme des parents.

    Pour avoir les parents d'un clip il y a une methode qui donne le chemin absolue je crois que c path...il suffit d'exploser la chaine que renvoie cette methode et d'en extraire les clips parents un à un...

    Mais bon c vrai que ça fait du travail en plus et qu'une méthode toute préte n'est pas de refus

    Ciao.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/10/2013, 21h41
  2. Réponses: 3
    Dernier message: 14/04/2011, 12h44
  3. [FLASH 8] Cliquez pour utiliser
    Par Etienne.Mercier dans le forum Intégration
    Réponses: 16
    Dernier message: 18/12/2006, 14h56
  4. Réponses: 4
    Dernier message: 08/12/2006, 16h24

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