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 :

A propos du tuto "Chargement dynamique de JPEG"


Sujet :

Flash

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Par défaut A propos du tuto "Chargement dynamique de JPEG"
    Bonjour, je viens de lire et essayer le tutoriel "Chargement dynamique de JPEG". Ca marche, mais avec la méthode du prototype pour le préchargement, quand je charge mon swf externe, le conteneur va prendre automatiquement la taille de mon fichier externe. Comment le forcer à charger le fichier, mais à la taille qui m'interesse, genre vignette ?

    Voici mon 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
    19
    20
    21
    MovieClip.prototype.charge_image = function(file) {
    // On crée un clip vide conteneur
    conteneur = this.createEmptyMovieClip("conteneur", 100);
    // On charge l'image dans conteneur
    conteneur.loadMovie(file);
    this.onEnterFrame = function() {
    var total = this.getBytesTotal() ; // taille de l'animation en byte
    var lu = this.getBytesLoaded() ; // l'état courant de chargement d'animation en byte
    var rapport = Math.round((lu)/(total)*100); // le pourcentage de chargement de l'imge
    this.pourcentage.text = Math.round(rapport) + " %"; //Affiche le pourcentage dans un champs texte dynamique
    if (rapport >= 1) {
    //on supprime l'évènement onEnterFrame
    delete this.onEnterFrame;
    }
    }
    };
    // on lance le protype
    this.charge_image("interface.swf");
    // On le dimensionne
    conteneur.width = 50
    conteneur.height = 60
    Merci d'avance.

  2. #2
    Membre émérite
    Avatar de thecaptain
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Décembre 2003
    Messages
    919
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Décembre 2003
    Messages : 919
    Par défaut
    Salut,

    Est-tu en AS2 ? Si oui, utilise plutot MovieClipLoader, tu as l'événement onLoadInit pour resizer ton clip Il n'est pas possible de charger directement le swf à la bonne taille, il faut le resizer une fois chargé. Avec onLoadInit, tu peux le faire instantanément. Avec ton onEnterFrame, on verra un cours laps de temps l'image à la taille original avant de se resizer !

    @++

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Par défaut
    Est-ce la méthode avec onLoadInit est plus propre ou meilleure que ça ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    // On crée un clip vide:
    //this.createEmptyMovieClip("image01", 1);
     
    // On charge le clip
    //this.image01.loadMovie("http://www.fond-d-ecran.com/html/download-1152x864.php?file=http://www.fond-d-ecran.com/wallpapers/voyage/monde/monde-1.jpg");
     
    // On réduit le clip 3 fois
    //this.image01._xscale = this.image01._yscale /= 3;
    Car comme ceci ça fonctionne bien, vu que le temps qu'il charge l'image d'exemple il passe à la suite du code ...

  4. #4
    Membre expérimenté
    Homme Profil pro
    Creative Technologist
    Inscrit en
    Avril 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Creative Technologist

    Informations forums :
    Inscription : Avril 2007
    Messages : 126
    Par défaut
    Je suis pas sûr que ça marche ton code. Il ne faut jamais oublier que tout le code d'une frame est exécuté d'un coup. Or quand tu lances le chargement, il faut un petit temps pour charger. Ainsi, quand tu appliques juste derrière ton changement d'échelle, l'image n'est pas encore chargée.

    Il est probable qu'au moment où les données de l'image sont disponibles, cela remette les transformations que tu avais appliquées à 0.

    Essaye, je ne suis pas sûr.

    Mais en tout cas, c'est pour éviter ce genre de problème assez courant, et parfois difficile à debugger, que l'on asynchronise le chargement, comme le propose theCaptain. Ainsi, tu es certain d'appliquer tes effets sur ton image, et non pas sur un clip encore vide.

    Familiarise-toi avec MovieClipLoader, c'est la solution la plus propre. De plus, tu pourras faire myLoadedImage._width et ._height et connaître sa taille exacte, et la resizer exactement en fonction.

    Enfin, sur le web, en général, on essaye de limiter la taille des données transmises... la solution la plus simple n'est-elle pas de réduire l'image JPG elle-même?

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Par défaut
    C'est justement là le hic. Ma page va présenter des images (vignettes au départ), qui grandiront lorsque l'on cliquera dessus. Donc pour être en qualité 100% à ce moment là, je veux les ouvrir et les redimmensionner !! J'ai fait comme ça étant donné que je ne comprends rien au système de vignette-xml ...
    Je vais voir ce que je peux faire avec MovieClipLoader, merci

  6. #6
    Membre expérimenté
    Homme Profil pro
    Creative Technologist
    Inscrit en
    Avril 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Creative Technologist

    Informations forums :
    Inscription : Avril 2007
    Messages : 126
    Par défaut
    Oui, c'est la meilleure solution.

    Et puis en relisant ton code, je viens de voir que ta ligne:
    if (rapport >= 1) {

    devrait être:
    if (rapport >= 100) {

    puisque tu ne compte pas de 0 à 1 mais bien de 0 à 100... ce qui fait que ton onEnterFrame est supprimé dès le début.

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    581
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 581
    Par défaut
    Alors voilà. Je n'arrive pas à faire fonctionner le code qui suit dans ma page, alors que sur une page test ça fonctionne nickel :

    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
    this.createEmptyMovieClip("image_mc", 1);
    var mclListener:Object = new Object();
    mclListener.onLoadStart = function(target_mc:MovieClip) {
         target_mc.startTimer = getTimer();
    };
    mclListener.onLoadComplete = function(target_mc:MovieClip) {
         target_mc.completeTimer = getTimer();
    };
    mclListener.onLoadInit = function(target_mc:MovieClip) {
         var timerMS:Number = target_mc.completeTimer-target_mc.startTimer;
    	 target_mc._xscale = target_mc._yscale /= 4;
    		//target_mc._x = 100;
    		//target_mc._y = 100;
    };
    var image_mcl:MovieClipLoader = new MovieClipLoader();
    image_mcl.addListener(mclListener);
    image_mcl.loadClip("images/Thumbs1.swf", image_mc);
    Peut-être que ça vient de l'emplacement : j'ai ma page sur laquelle je mets un clip "scroller", et dans celui-ci un clip "images". Je mets le code dans ce sous sous clip pour que mon swf externe vienne bien ce placer dans le scroller. Est-ce que ça peut venir de là ?

Discussions similaires

  1. [MySQL] A propos du tuto de site dynamique
    Par jlb59 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 05/09/2010, 12h05
  2. [FLASH MX] Chargement dynamique de Jpeg progressif
    Par Pierre-Yves VAROUX dans le forum Flash
    Réponses: 3
    Dernier message: 13/02/2005, 15h16
  3. Dll a chargement dynamique
    Par delire8 dans le forum C++Builder
    Réponses: 7
    Dernier message: 05/06/2003, 22h47
  4. Chargement dynamique de DLL sous Unix
    Par Willou dans le forum Autres éditeurs
    Réponses: 7
    Dernier message: 18/12/2002, 18h25

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