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 :

Obtenir la taille d'une image chargée


Sujet :

Flash

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Obtenir la taille d'une image chargée
    Bonjour,
    Après avoir parcouru ce forum, eu des faux-espoirs, j'en appelle à vous !
    Je souhaite obtenir la taille en pixel d'un Jpeg que je charge, mais malgré toutes mes tentatives et tous les indices trouvés sur ce forum, rien ne marche !

    Voilà, ma version est Flash MX version 6.0
    J'ai essayé un code que je retrouve partout mais ça ne marche pas...
    voici la structure du code :

    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
     
    // je charge mon image dans le clip vide mc
    _root.mc.loadMovie("IMG_4169.JPG"); 
     
    // verifie le chargement
    _root.onEnterFrame = function() {
    total = this.getBytesTotal() ; // taille de l'animation en byte
    lu = this.getBytesLoaded() ; // l'état courant de chargement d'animation en byte
    rapport = lu/total ; 
    if (rapport >= 1) {
     
    // je contrôle largeur et longueur (mais ça ne marche pas, ça affiche 0 !!!
    trace(_root.mc._width) ; trace(_root.mc._height) ;
     
    //on supprime l'évènement onEnterFrame
    delete this.onEnterFrame;
    }
    }
    J'ai aussi essayé une version plus évoluée, qui m'intéresse tout paticulièrement (car c'est pour charger dans des clip-boutons qui sont des vignettes de photos) :

    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
     
    MovieClip.prototype.load = function(url)
    {
      this.loadMovie(url);
      this.onEnterFrame = function()
      {
        if (this.getBytesLoaded() == this.getBytesTotal())
        {
    		trace("100%") ;
          	//on supprime ce onEnterFrame
          	delete this.onEnterFrame;
        }
      }
    } 
     
    newclip.createEmptyMovieClip("mc", 1); 
       newclip.load("IMG_4169.JPG"); 
       largeur = newclip._width ;
       hauteur = newclip._height ;
       trace(largeur) ;trace(hauteur) ; // et là, toujours les valeurs 0 !!!
    Merci infiniment si quelqu'un voit la faille et peut m'éclairer !!!

    bonne fin de journée / bon week-end
    (je reste connecté en permanence, cela dit !)

  2. #2
    Rédacteur

    Femme Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    435
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 34
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 435
    Par défaut
    Cela vient du fait que tu essaie de trouver les valeurs de _height et _width de ton clip, alors qu'il n'est apparement pas existent, et dsu plus le préload n'est pas terminé lorsque tu definit largeur/heuteur, donc elles sont faussées.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    newclip.createEmptyMovieClip("mc", 1);
    déja il me semble qu'ici tu te soi trompé, et que ce soit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.createEmptyMovieClip("newclip", 1);
    ensuite pour le chargement, il faut que tu accede aux propriétés _width et _heigth uniquement lorsque :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if (this.getBytesLoaded() == this.getBytesTotal())
        {
    		trace("100%") ;
          	//on supprime ce onEnterFrame
          	delete this.onEnterFrame;
        }
    voila

    et fait attention de ne pas de tromper dans les chemins ensuite !

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci de m'avoir répondu, pyrrha.
    Je suis en train de suivre tes indications. Pas évident, je me mélange les pinceaux !
    Dès que j'ai réussi (ou bien si je n'y arrive pas...), je te tiens au courant !

    Merci encore !

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bien, je n'y arrive pas, il y a des trucs qui m'échappent...

    Voici le code sur lequel j'ai planché, en ayant pris soin de comparer tout ce que j'ai pû voir sur ce forum concernant ce problème :

    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
    MovieClip.prototype.load = function(url) {
    	this.loadMovie(url);
    	this.onEnterFrame = function() {
    		if (this.getBytesLoaded() == this.getBytesTotal()) {
     
    			largeur = this._width ;
    			hauteur = this._height ;
    			trace(largeur) ; trace(hauteur) ;
     
    			delete this.onEnterFrame;
    		}
    	}
    } 
     
    clip = this.createEmptyMovieClip("_mc", 5); 
     
    clip.load("IMG_4169.JPG");
    Alors... mes commentaires/questions :
    - ici je crée un clip vide intitulé "clip" ; ma fonction va faire le travail, mais le fameux "this" concerne quel objet en fait ? il s'agira ici de "clip" ?
    - et le "_mc" créé dans le EmptyMovieclip, à quoi sert-il ici ? est-ce que mon image chargée se charge à la place de "_mc" dans son parent "clip" ? ou bien pas du tout, mais l'image est quand même dans "clip", à côté de "_mc resté vide ?
    - j'ai essayé de placer les lignes de récupération des width et height un peu partout et toujours ces fichues valeurs 0 !!!
    - j'ai aussi essayé de placer ces récupérations dans des images-clés plus loin, et ça marche, mais sur la seule et unique image-clé de mon script ça ne marche pas. C'est peut-être un indice pour qui saura trouver une idée...
    - En fait, le principe de "onEnterFrame = function" est bien de réaliser son opération intégralement sans que rien de ce qui est inscrit par la suite ne se réalise ? c'est ça ?

    Bref, je suis perdu... Et je rage parceque ceux qui ont eu cette problématique ont trouvé la solution, mais quand j'essaie leur script, rien ne marche ! Il n'y aurait pas un truc dans les préférences ? une question de compatibilité de langage entre les version de Flash ? j'ai bien fait attention à bien enlever les typages de variables, par exemple !

    Bon, souhaitant qu'un éclair vous vienne à l'esprit pour m'éclairer, je vous souhaite de réussir tous vos scripts ! (et une bonne nuit, il est temps)

    Merci de m'avoir lu )

  5. #5
    Membre Expert
    Avatar de jean philippe
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    2 062
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 2 062
    Par défaut
    salut
    je ferai plutot un truc comme ceci :
    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
    loder = function (img, url) {
    	img.loadMovie(url);
    	this.onEnterFrame = function() {
    		if (img.getBytesTotal()>0) {
    			img.onEnterFrame = function() {
    				if (this.getBytesLoaded() == this.getBytesTotal()) {
    					trace(this._width);
    					trace(this._height);
    					delete this.onEnterFrame;
    				}
    			};
    			delete this.onEnterFrame;
    		}
    	};
    };
    //utilisation
    this.createEmptyMovieClip("imgo", 1);
    loder(imgo, "IMG_4169.jpg");
    this.createEmptyMovieClip("imgu",10);
    loder(imgu, "zz.jpg");

  6. #6
    Invité
    Invité(e)
    Par défaut
    Merci pour ta réponse Jean-Philippe,
    Je n'ai pas encore essayé ; mais ça m'a l'air intéressant.
    J'y reviendrai un peu plus tard, je suis passé à autre chose, histoire d'avancer...
    Merci encore !

Discussions similaires

  1. Comment connaître la Taille d'une image chargée dans mx.controls.Loader ?
    Par Mister Paul dans le forum ActionScript 1 & ActionScript 2
    Réponses: 2
    Dernier message: 31/12/2010, 00h01
  2. recupérer taille et placer d'une image chargé depuis un loader
    Par Sumoner dans le forum ActionScript 3
    Réponses: 2
    Dernier message: 06/05/2009, 11h14
  3. Changer la taille d'une image chargée avec Loader
    Par DeezerD dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 29/01/2008, 17h55
  4. effacer une image chargée ds TBitmap
    Par sony351 dans le forum C++Builder
    Réponses: 4
    Dernier message: 20/09/2004, 10h28
  5. [FLASH MX] taille d'une image
    Par matN59 dans le forum Flash
    Réponses: 2
    Dernier message: 10/06/2004, 10h51

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