redimensionner automatiquement des images issues d'un XML

redimensionner automatiquement des images issues d'un XML - Flash/ActionScript - Programmation

Marsh Posté le 21-01-2010 à 21:07:59    

bonjour à tous  :hello:  
 
Je souhaite afficher des images dans un clip vide via un loadMovie.
Jusque la pas de souci.
des boutons  me permettent de defiler dans ces images qui sont appelées via un fichier xml.
 
maintenant je souhaiterai redimensionner automatiquement les images (qui sont toutes de tailles differentes),  
soit avec une largeur de 70% de la scene si l'image est en payasage
soit avec une hauteur de 70% de la scene si l'image est en portrait.
et ce, en conservant le rapport H/L d'origine !!
 
voici ma fonction affichage :

Citation :

function affichage(variable) {
 unload (monClipConteneur);
 loadMovie(mesURLImages[variable], monClipConteneur);
 chargeur.onEnterFrame = function() {
   if ((monClipConteneur.getBytesLoaded() == monClipConteneur.getBytesTotal()) && (monClipConteneur.getBytesTotal()>0)) {  
    delete this.onEnterFrame;
    largeur = monClipConteneur._width;
    hauteur = monClipConteneur._height;
    rapport = largeur / hauteur;
    if (largeur > hauteur) {
     monClipConteneur._width = Stage.width*.7;
     monClipConteneur._height = monClipConteneur._width/rapport;
    } else {
 
     monClipConteneur._height = Stage.height*.7;
     monClipConteneur._width = monClipConteneur._height/rapport;
    };
   };
  };
};


 
 
Ca fonctionne tres bien à l'affichage de la premiere photo.
Mais à partir de la 2eme, et meme si je reviens sur la 1ere, monClipConteneur._height garde la taille de l'affichage de l'image precedente.
si je trace monClipConteneur._height à la fin du chargement (sur la ligne au dessus du delete) il n'a pas la taille de mesURLImages[variable], comme je pensais qu'il aurait.
Y'a-t-il moyen de recuperer mesURLImages[variable]._x et ._y ?
 
merci de votre aide !!

Reply

Marsh Posté le 21-01-2010 à 21:07:59   

Reply

Marsh Posté le 22-01-2010 à 09:53:22    

C'est normal, tu as beau "unloader" monClipConteneur, ça n'en supprime pas les propriété pour autant, il garde donc sa taille...
 
plutôt qu'un unload, essaye un delete


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 22-01-2010 à 10:51:01    

effectivement, tu as bien cerné mon souci je pense, merci !
 
mais :
le resultat est le meme avec delete
trace(monClipConteneur._width); me renvoie la taille de l'ancien monClipConteneur, meme placé 1 ligne sous le delete, le delete ne semble pas supprimer non plus les propriétés
 
Ce que je ne comprend pas c'est que le meme trace placé en 1ere ligne du if qui verifie la fin du chargement me renvoie egalement la taille de l'ancien monClipConteneur.
 
 
edit :
j'ai trouvé !!
 
en fait il faut que monClipConteneur soit créé "dynamiquement en AS via createEmptyMovieClip("monClipConteneur",0);  
(je l'avais créé dans la bibliotheque flash)
 
du coup, pas besoin de delete ni meme de unload, le ClipConteneur prend bien les dimensions de l'image chargée à chaque fois.
et j'ai pu faire mes operations de redimensionnement.
 
merci de ton coup de pouce.


Message édité par Ch'DUP le 22-01-2010 à 11:23:17
Reply

Marsh Posté le 22-01-2010 à 12:02:27    

Oui, c'est ce que j'aurai pu te dire, mais j'aurai pensé que le delete aurait solutionner la chose...
Honte à l'AS2 qui par sa sur-tolérance n'aide pas à comprendre les problème...  
 
L'AS3 a une philosophie bien différente...
 
Tu pourras juste par curiosité essayer ce script :
en plus du unload, j'ecrase monClipConteneur en redéfinissant un nouveau MovieClip...

Code :
  1. function affichage(variable) {
  2.     monClipConteneur = new MovieClip();
  3.     monClipConteneur.loadMovie(mesURLImages[variable]);
  4.     chargeur.onEnterFrame = function() {
  5.             if ((monClipConteneur.getBytesLoaded() == monClipConteneur.getBytesTotal()) && (monClipConteneur.getBytesTotal()>0)) {    
  6.                 delete this.onEnterFrame;
  7.                 largeur = monClipConteneur._width;
  8.                 hauteur = monClipConteneur._height;
  9.                 rapport = largeur / hauteur;
  10.                 if (largeur > hauteur) {
  11.                     monClipConteneur._width = Stage.width*.7;
  12.                     monClipConteneur._height = monClipConteneur._width/rapport;
  13.                 } else {
  14.  
  15.                     monClipConteneur._height = Stage.height*.7;
  16.                     monClipConteneur._width = monClipConteneur._height/rapport;
  17.                 };
  18.             };
  19.         };
  20. };



---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 22-01-2010 à 12:30:19    

(info importante : je suis un gros boulet en AS, j'ai ouvert flash pour la premiere fois de ma vie il y a 15 jours)
 
à priori ce que tu me demandes d'essayer ne fonctionne pas. Il n'y a aucune image de chargée.
j'ai cette erreur : Cible introuvable : Cible="undefined" Base="_level0"
 
en fait, dans mon ancien AS (qui fonctionne) j'ai " createEmptyMovieClip("monClipConteneur",0);" qui est DANS la function
donc recréé à chaque fois.
dis moi si tu veux que j'essaie autre chose

Reply

Marsh Posté le 22-01-2010 à 12:37:18    

non c'est ok pour moi, j'ai pigé... heureusement que je suis passé à ll'AS3 :o


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 22-01-2010 à 12:58:24    

arf
va peut etre falloir que je m'y mette alors.

Reply

Marsh Posté le 23-01-2010 à 11:08:25    

Je me permets de rouvrir ce topic pour demander à nouveau de l'aide !!
en fait mon code ne fonctionne pas avec une image en 3872 X 2592 alors qu'il fonctionne avec la meme image redimensionnée en 1024 X 685
 
de quoi cela peut-il venir ?

Reply

Marsh Posté le 23-01-2010 à 11:13:58    

La limite bitmapData de flash qui est de 2880px ...
En AS2 je sais pas si il y a une parade, mais en AS3 il y en a une qui permet de repousser ses limites un peu plus loin...
Je sais que Flash Player 10 supporte plus en théorie : http://kb2.adobe.com/cps/496/cpsid_49662.html


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 23-01-2010 à 11:34:20    

fais gaffe , tu vas devenir ma bible AS/flash  :D  
 
merci de ton explication, je vais me pencher la dessus.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed