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 :

Modification d'images chargée à la volée


Sujet :

Flash

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 268
    Points : 128
    Points
    128
    Par défaut Modification d'images chargée à la volée
    Bonsoir à tous,

    Je suis un gros débutant en flash ...

    Je crée un Bitmap pour toutes les images chargées à partir d'un tableau de Loader.

    Le programme fonctionne bien mais, il me retourne une erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Error: Error #2099: L'objet en cours de chargement n'est pas suffisamment chargé pour fournir ces informations.
    	at flash.display::LoaderInfo/get content()
    	at MethodInfo-270()
    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
    for (i=0; i<=nb_images; i++) {
    		images[i] = new Loader();
    		images[i].contentLoaderInfo.addEventListener(Event.COMPLETE,resize_and_reflect);
    		images[i].load(new URLRequest(url + xml.img.@src[i]));
     
    		function resize_and_reflect(ev:Event) {
    			loaded++;
    			if (loaded>=nb_images) {
    				for (i=0; i<=nb_images; i++) {
    					//ON AJOUTE LE REFLET DE LIMAGE
    					var bmpData:BitmapData = Bitmap(images[i].contentLoaderInfo.content).bitmapData;
    					reflet = new Reflect(bmpData);
    					var bmp:Bitmap = reflet.get_reflect();
    					bmp.x=Bitmap(images[i].content).x;
    					bmp.y=Bitmap(images[i].content).y;
    					images[i]= new Bitmap();
    					images[i] = bmp;
    					images[i].x = (stage.stageWidth - images[i].width) / 2;
    					if (i!=0) {	images[i].alpha = 0; }
    					addChild(images[i]);
    				}
    			}
    		}
    	}
    Merci à vous

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    UP

    J'ai également ce message d'erreur, dans un contexte un peu différent. Je me dis que poster mon pb ici pourrait p'tete aider popovitch à comprendre le siens.

    Je me demandais quelle était la méthode la plus pratique pour le (le message d'erreur) contourner ?

    Apparement ce message apparait tant que l'instance qui gère l'image (ou l'image elle même) n'est pas fini de loader dans le programme ?
    Il faut donc, si j'ai bien suivi, utiliser l'event COMPLETE pour savoir quand l'objet à fini de loader et ensuite récup les infos.

    Je dois me tromper qq part, je pense que je n'ai pas bien saisi le principe de l'event COMPLETE.

    Si quelqu'un à une suggestion.
    Thx

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 268
    Points : 128
    Points
    128
    Par défaut
    Il faut ajouter un écoutteur sur le Loader afin de pouvoir accéder au contenu chargé une fois seulement le chargement terminé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var url:URLLoader = new URLLoader("http://localhost/directory/fichier.xml");
    var leDataFormat:String = URLLoaderDataFormat.TEXT;
    var ldr:URLLoader = new URLLoader();
    ldr.dataFormat = leDataFormat;
    ldr.load(url);
    ldr.addEventListener(Event.COMPLETE, uneFonction);
     
    function uneFonction(e:Event):void{
    var xml:XML = e.target.data;
    ...
    ...
    }
    Lorsque l'on charge plusieurs fichiers, il faut prendre en compte que les fichiers ne finissent pas de se charger dans l'ordre dans lequel on les a lancé mais en fonction de la taille de ceux-ci. Par conséquent, l'idéal est de passer par un compteur qui s'incrémente chaque fois qu'un des fichiers est complétement chargé. Une fois que le compteur vaut le nombre de fichiers demandés, on peut lancer le traitement.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 15
    Points : 16
    Points
    16
    Par défaut
    Je ne capte pas la logique de la chose (à un niveau pratique).

    Si l'on a, au lancement de l'applie, une multitude de class qui demandent le chargement d'images (externes au swf) comment fait on pour savoir quand on peut lancer l'applie (que tt est bien chargé) ?

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 268
    Points : 128
    Points
    128
    Par défaut
    Tu crées N loader pour les N fichiers à charger et tu enregistres N écouteurs. A chaque fois qu'un écouteur est appelé, tu incrémentes un compteur de fichiers chargés. Lorsque ton compteur a atteins le nombre de fichiers à charger là tu fais ton traitement :


    En gros l'idée c'est ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    ldr.addEventListener(Event.COMPLETE, uneFonction);
     
    public function uneFonction(e:Event):void{
    compteur++;
    setup(e);
    }
     
    public function setup(e:Event):void{
        if (compteur==nbImages) {
              monImage = (Image)(e.currentTarget);
        }
    }

Discussions similaires

  1. Format des images chargé en mémoire
    Par Gonath dans le forum SDL
    Réponses: 4
    Dernier message: 01/03/2006, 13h01
  2. probleme avec le zoom avec une modification d'image
    Par yoyo59650 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 22/02/2006, 09h22
  3. [FLASH] Imprimer une image chargée dynamiquement
    Par penchu dans le forum Flash
    Réponses: 2
    Dernier message: 04/01/2006, 16h59
  4. [FLASH MX] copier une image chargée avec loadClip
    Par JulPoWeR dans le forum Flash
    Réponses: 4
    Dernier message: 02/09/2005, 20h07
  5. effacer une image chargée ds TBitmap
    Par sony351 dans le forum C++Builder
    Réponses: 4
    Dernier message: 20/09/2004, 10h28

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