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 :

Un clip comme argument


Sujet :

ActionScript 1 & ActionScript 2

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Par défaut Un clip comme argument
    Bonsoir tout le monde,

    Je débute avec actionscript; je suis en train de programmer quelques petits jeux un peu "neu-neu" pour me faire la mains. C'est justement lors de la conception d'une de mes créations qu'un problème m'est apparu. Ça va faire quatre jours que je n'arrive pas à le résoudre; je vous l'expose:

    J'ai une fonction appelée "forme", elle ferra apparaître une forme sur _root et la positionnera.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function forme(forme)
    {
    	_root.attachMovie(forme, forme+k, k);
    	_root["forme"+k]._x = 30;
    	_root["forme"+k].onEnterFrame = function()
    	{
    		position(_root["forme"+k]);
    	}
    	k++;
    }
    Et j'ai une deuxième fonction appelée "position" qui est utilisée dans "forme" et qui gère les déplacements et la position de la forme créée par "forme". Je l'ai un peu caviardée car elle assez longue (à vrai dire il n'y a que le début).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function position(clip:Object)
    {
    	clip._y += vitesse;
    	if(clip._x>336)
    	{
    		clip._x = 336;
    	}
    	if(clip._x<0)
    	{
    		clip._x = 0;
    	}
    etc etc.
    Alors mon problème est que la fonction "position" ne marche pas. J'ai essayé pas mal de syntaxes différentes, avec ou sans crochets, parenthèses etc. rien ne marche. Je pense (je suis même quasiment sûr) que le problème vient de l'argument de la fonction "position", je ne sais pas vraiment comment lui dire de travailler avec un clip.

    Voilà, si vous pouviez m'aider ce ne serait pas de refus! Merci d'avance.

    P.S. Je précise que toutes les variables sont déclarées correctement etc.

  2. #2
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Par défaut
    Bonjour,

    le type du paramètre est MovieClip et non Object :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    function position(clip:MovieClip)

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Par défaut
    Merci pour ta réponse BeeKeep, malheureusement ça ne marche toujours pas.

    voici le code tel qu'il est maintenant (j'ai de nouveau coupé la fin).

    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
    var touche:Object = new Object();
    var i:Number = 0;
    var k:Number = 0;
    var j:Number = new Number;
    var vitesse:Number = 5;
     
    function forme(forme:String)
    {
    	_root.attachMovie(forme, forme+k, k);
    	_root[forme+k]._x = 30;
    	_root[forme+k].onEnterFrame = function()
    	{
    		position(_root[forme+k]);
    	}
    	k++;
    }
     
    forme("rouge");
     
    function position(clip:MovieClip)
    {
    	clip._y += vitesse;
    	if(clip._x>336)
    	{
    		clip._x = 336;
    	}
    	if(clip._x<0)
    	{
    		clip._x = 0;
    	}
    dans la fonction forme et dans le attachMovieClip je ne met pas forme entre "" car il est déjà défini comme étant de type string.

    Le problème c'est que la fonction "position" ne marche toujours pas,
    clip._y += vitesse devrait faire descendre la forme envoyée par la fonction "forme" de 5 pixels à chaque nouvelle image. Ce qui est étrange c'est que si j'écris [clip]_y 1= vitesse , le code marche. Mais par contre if([clip]_x <0) ne marche pas, la fenêtre d'erreur de compilation indique qu'il manque une parenthèse...

    alors bref, je suis toujours au même point... Si quelqu'un a une idée...

  4. #4
    Rédacteur/Modérateur
    Avatar de beekeep
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    2 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2006
    Messages : 2 005
    Par défaut
    en fait le clip passé est this dans le onEnterFrame :
    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
    var touche:Object = new Object();
    var i:Number = 0;
    var k:Number = 0;
    var j:Number = new Number;
    var vitesse:Number = 5;
    
    function forme(forme:String)
    {
    	_root.attachMovie(forme, forme+k, k);
    	_root[forme+k]._x = 30;
    	_root[forme+k].onEnterFrame = function()
    	{
    		position( this );
    	}
    	k++;
    }
    
    forme("rouge");
    
    function position(clip:MovieClip)
    {
    	clip._y += vitesse;
    	if(clip._x>336)
    	{
    		clip._x = 336;
    	}
    	if(clip._x<0)
    	{
    		clip._x = 0;
    	}
    sinon utilises la fonction trace pour voir les valeurs des différentes variables.

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 5
    Par défaut
    Bien, j'ai essayé avec "this" et ça fonctionne, merci pour ton aide!

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

Discussions similaires

  1. tableau comme argument à vsprintf
    Par Steffane dans le forum C
    Réponses: 11
    Dernier message: 21/07/2006, 11h14
  2. Réponses: 14
    Dernier message: 16/05/2006, 11h26
  3. une url comme argument d'une fonction
    Par khayyam90 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/10/2004, 20h15
  4. vector<bool> comme argument de fonction
    Par Krishna dans le forum SL & STL
    Réponses: 11
    Dernier message: 09/09/2004, 08h30
  5. Passer une fonction comme argument à une fonction
    Par Cocotier974 dans le forum Général Python
    Réponses: 4
    Dernier message: 29/06/2004, 13h41

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