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 3 Discussion :

Chargement dynamique d'image et redimensionner.


Sujet :

ActionScript 3

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Par défaut Chargement dynamique d'image et redimensionner.
    Bonjour,

    Je suis en train de créer une galerie qui va chercher des images dans un dossier externe.
    Je galère pas mal pour plusieurs points qui me sont flou...

    Je voulais savoir tout d'abord comment modéliser le code pour que celui-ci prenne en compte plusieurs images et pas juste une. En gros que je n'ai pas à faire 30 fois le même blocs...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     var myloader:Loader = new Loader();
     var request:URLRequest = new URLRequest("1.jpg");  
     myloader.load(request);  
     addChild(myloader);  
     myloader.x=-406;  
     myloader.y=17;
    J'aimerai aussi connaître comment utiliser les outils pour redimensionner mes images ??
    Je sais que c'est avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    img.scaleY = 150; 
    img.scaleX = 100;
    Mais je ne suis pas sûr... et je ne trouve pas de tuto en AS3.

    Je vous remercie

  2. #2
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    76
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 76
    Par défaut
    Si toutes tes images se nomme 1.jpg, 2.jpg, 3.jpg, tu créer un tableau (ou vecteur), puis tu fais une boucle pour qu'il se remplisse tout seul:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     var myloader:Array;
     var request:URLRequest;
     for(var idx:int =0;idx<30;idx++){ //ta boucle qui va tourner 30 fois
       request = new URLRequest(idx + ".jpg");  //concaténation
       myloader[idx] = new Loader();
       myloader[idx].load(request);  
       addChild(myloader[idx]);  
     
       myloader[idx].x=-406 + 50*idx; //il faut créer une décalage à chaque nouvelle image
       myloader[idx].y=17;
    }
    Pour le scaleX et scaleY, c'est bon, mais il faut faire attention, car tes images ne seront pas lissées.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Par défaut
    Bonjour & merci

    J'ai une erreur suite à l'entrée de ce code, le journal m'indique l'erreur #1009.

    Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
    at essai_fla::CasesMulti_1/essai_fla::frame33()


    Si quelqu'un peu m'éclairer mercii

  4. #4
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    76
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 76
    Par défaut
    La boucle que j'ai t'es montré initialise idx à 0, et s'arrête pour que idx n'atteigne pas 30. Autrement dis, les valeurs de idx seront 0;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
    à mon avis, tu as soit une image que tu as nommé "30.jpg", soit tu as oublié une images qui se nommerait "0.jpg"... et j'imagine même les 2.

    Pour éviter une erreur lorsque tu charges des images dynamiquement comme c'est le cas, il faut que tu surveilles ton loader. Il continuera le chargmeent uniquement si il a bien trouvé l'image.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Par défaut
    Bonjour,

    Oui j'ai bien inséré le code avec dans le dossier où se trouve mon swf, les 30 image de 0.jpg à 29 .jpg mais j'ai toujours cette erreur #1009 qui revient...

    TypeError: Error #1009: Il est impossible d'accéder à la propriété ou à la méthode d'une référence d'objet nul.
    at essai_fla::CasesMulti_1/essai_fla::frame33()

    Je n'arrive pas à comprendre...

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 17
    Par défaut
    Voici la pièce jointe du fichier.

  7. #7
    Membre éprouvé Avatar de greatalain
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Novembre 2007
    Messages : 124
    Par défaut
    Pour le scale il y a aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tonImage.transform.matrix.scale(ratio,ratio);

  8. #8
    Invité
    Invité(e)
    Par défaut
    greatalain
    Pour le scale il y a aussi :
    Code :

    tonImage.transform.matrix.scale(ratio,ratio);
    ca m'intéresse!!! j'ai testé mais ca n'a pas l'air de vouloir marcher...
    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
    22
     
    function parse(myInput:XML):void{
    	var imageURLliste:XMLList = myInput.item.image;
    	for(var i:Number = 0; i< imageURLliste.length(); i++){
    		var vue:XML = imageURLliste[i];
    		var clipConteneur:MovieClip = new MovieClip();
    		var conteneurImage:Loader = new Loader();
    		var imageRequest:URLRequest = new URLRequest(vue);
    		conteneurImage.load(imageRequest);
    		conteneurImage.x = posX;/
    		conteneurImage.addEventListener(MouseEvent.ROLL_OVER, RollOver);
    		posX +=500;
    		conteneurImage.y =400;
     
    		conteneurImage.transform.matrix.scale(5, 5);
     
                     myArray.push(conteneurImage);
    		addChild(myArray[i]);
    		var myTweenAlpha:Tween = new Tween(conteneurImage, "alpha", Strong.easeOut, 0, 0.5, 3, true);
     
    	}
    }
    mes images font toujours la même taille qu'avant....Qu'es-ce qui cloche??

  9. #9
    Membre confirmé
    Étudiant
    Inscrit en
    Janvier 2007
    Messages
    76
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2007
    Messages : 76
    Par défaut
    ConteneurImage est ton Loader, toi tu veux redimensionner une image, donc BitMap.
    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
     
    var _scale:int = 5;
    public function main():void{
    conteneurImage.load(imageRequest);
    //On récupère un object LoaderInfo pour extraire le BitMap
    conteneurImage.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded);
    }
     
    private function loaded(e:Event):void {
    			var info:LoaderInfo = e.target as LoaderInfo;
    //on dimensionne L'objet BitMapData à la taille de l'image final, info.content est de type BitMap
    			var bmp:BitmapData = new BitmapData(info.content.width * _scale, info.content.height * _scale, true, 0);
    //on initialise la matrice			
    			var mat:Matrix = new Matrix();
    			mat.scale(_scale, _scale);
    //on applique la matrice de transformation à l'image, dans le BitmapData bmp
    			bmp.draw(info.content, mat, null, null, null, true); //true pour lisser
     
    			conteneurImage = new Bitmap(bmp, "always", true);//on place le BitmapData dans le conteneur, et activant le lissage
     
    			addChild(_content);//tadam!
    		}
     
    public function get contentLoaderInfo():LoaderInfo {
    			return loader.contentLoaderInfo;
    		}
    Faut modifier 2 ou 3 petite chose sans nul doute, mais dans l'idée c'est ça. Le mieux étant de créer une classe spécifique se chargeant du chargement et affichage des images.

Discussions similaires

  1. [JSF 1.2] Chargement dynamique d'images
    Par mow dans le forum JSF
    Réponses: 10
    Dernier message: 04/08/2008, 16h47
  2. [AS3][Delphi]Chargement dynamique d'images
    Par spg40 dans le forum Flash
    Réponses: 0
    Dernier message: 06/03/2008, 17h01
  3. [FLASH 5] Chargement dynamique d'image
    Par ViveLesQuads dans le forum Flash
    Réponses: 26
    Dernier message: 12/12/2006, 10h59
  4. [CR.NET]Chargement dynamique d'une image
    Par Moah dans le forum SAP Crystal Reports
    Réponses: 8
    Dernier message: 14/12/2004, 11h46

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