Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3263 connectés 

  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  [Flash AS2] Problème de preload en XML

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Flash AS2] Problème de preload en XML

n°1636582
ludo-r
^^
Posté le 04-11-2007 à 23:29:13  profilanswer
 

Bonjour, mon problème est en rapport avec l'action script 2 et le XML
 
Voilà je désire preloader une image dans chacuns des 3 movieclip ("holder", "holder2"," holder3" ), le problème est que mon code de preload fonctionne pour le 1er movieclip "holder" mais pour les autres ça ne precharge pas :/ voici mon code :
 
AS pour loadé le fichier XML :
 

Code :
  1. // Création du XML
  2. var xml:XML = new XML();
  3. // On ignore l'espace blanc
  4. xml.ignoreWhite = true;
  5. // Appel de la fonction une fois loadé
  6. xml.onLoad = function() {
  7. var nodes = this.firstChild.childNodes;
  8. // Nombre d'items
  9. numOfItems = nodes.length;
  10. // Attachement des icons
  11. for (var i = 0; i<numOfItems; i++) {
  12. //--------------------------------------------------------------------
  13. // Chargement des images dans le MC
  14.   holder.loadMovie(nodes[i].attributes.image1);
  15.   holder2.loadMovie(nodes[i].attributes.image2);
  16.   holder3.loadMovie(nodes[i].attributes.image3);
  17.  
  18. // Chargement du texte
  19.   bloctext.myText.text = nodes[i].attributes.caption;
  20. }
  21. };
  22. // Chargement du fichier XML
  23. xml.load("xml/images.xml" );


 
AS du preloader :
 

Code :
  1. onEnterFrame = function () {
  2.         loading = (_parent.holder,_parent.holder2,_parent.holder3).getBytesLoaded();
  3.         total = (_parent.holder,_parent.holder2,_parent.holder3).getBytesTotal();
  4.         percentage = Math.round((loading / total) * 100);
  5.         if (isNaN(percentage) or (percentage == 0)) {
  6.             percentage = 0;
  7.             left.half._rotation = 0;
  8.             right.half._rotation = 0;
  9.         } else if ((percentage <= 50) && (percentage > 0)) {
  10.             left.half._rotation = 0;
  11.             right.half._rotation = 3.6 * percentage;
  12.         } else if ((percentage > 50) && (percentage < 100)) {
  13.             left.half._rotation = 3.6 * (percentage - 50);
  14.             right.half._rotation = 180;
  15.         }
  16.         if ((percentage == 100) && (total > 100)) {
  17.             left.half._rotation = 180;
  18.             right.half._rotation = 180;
  19.             if (this._alpha > 0) {
  20.                 this._alpha = this._alpha - 10;
  21.             }
  22.             if ((_parent.holder,_parent.holder2,_parent.holder3)._alpha < 100) {
  23.                 (_parent.holder,_parent.holder2,_parent.holder3)._alpha = (_parent.holder,_parent.holder2,_parent.holder3)._alpha + 10;
  24.             }
  25.         } else if (percentage < 100) {
  26.             if (this._alpha < 100) {
  27.                 this._alpha = this._alpha + 10;
  28.             }
  29.             (_parent.holder,_parent.holder2,_parent.holder3)._alpha = 0;
  30.         }
  31.         _parent.bloctext._alpha = (_parent.holder,_parent.holder2,_parent.holder3)._alpha;
  32.         percentageTxt = percentage;
  33.     };
  34.     stop();


 
et enfin le fichier XML en lui meme :
 

Code :
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <IMAGES>
  3. <image
  4.  image1="img/img1.jpg"
  5.  image2="img/img2.jpg"
  6.  image3="img/img3.jpg" 
  7.  caption="Découvrez nos luxeuses chambres, adaptées à vos besoins et vos budgets blablablablablabla"/>
  8. </IMAGES>


 
Voilà donc en gros je voudrais que mon preloader preloade chaques images contenues dans les 3 mc (ex : image1 preloadée dans mc1 image2 dans mc2 etc...)
 
Si quelqu'un peut m'aider c'est super ! Merci beaucoup, :)

mood
Publicité
Posté le 04-11-2007 à 23:29:13  profilanswer
 

n°1636589
antika
Posté le 04-11-2007 à 23:55:08  profilanswer
 

c'est pas de l'AS2 ça.

n°1636619
ludo-r
^^
Posté le 05-11-2007 à 03:38:45  profilanswer
 

Réponse constructive et totalement raccord avec le sujet ^^ et à part ça ?

n°1636621
Zedlefou
In cabbage we trust !
Posté le 05-11-2007 à 03:48:35  profilanswer
 

Ton code de preload est 10 fois trop compliqué. Par exemple traiter tes 3 images en meme temps c'est super bizare.
Comme le sous entend Antika, une classe aurait ete la bienvenue.
Sinon une fonction peut faire l'affaire. Ensuite t'envoie chaque holder a ta fonction qui s'occupe du reste. L'interet de bosser comme ca, c'est que d'abord, c'est 10fois plus clair et ensuite le jour ou tu dois ajouter une autre image, c'est facile comme une ligne de code.


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
n°1636624
ludo-r
^^
Posté le 05-11-2007 à 06:54:12  profilanswer
 

Merci pour ta réponse, tout dabord si je preload une image dans chaques mc c'est pour animer à ma guise le mc en question je peux ainsi manipuler sur la timeline le mc holder, holder2 ou holder3 à ma guise.

 

Quelle serait la solution alors pour garder mon idée de base (preloader plusieurs images dans 3 mc differents en XML) ?

 

La solution que tu évoques m'a l'air sympa mais ça fonctionne avec le XML ? Serait t-il possible (si tu as le temps) de me faire l'AS pour que ça fonctionne comme ça ? (j'en demande peut etre beaucoup) ^^

 

Merci,


Message édité par ludo-r le 05-11-2007 à 07:01:40
n°1636626
Zedlefou
In cabbage we trust !
Posté le 05-11-2007 à 07:04:51  profilanswer
 

Dans les grandes lignes
function preload (targ:MovieClip, img:String){
ici targ c'est holder et ton img tu la tiens de ton xml, que tu devrais d'ailleurs mettre dans un tableau pour pouvoir le reutiliser facilement.
 
Ensuite tu utilises MovieClipLoader pour charger ton image.
Et grace aux fonctions de loading de celui-ci tu peux modifier ta barre de progression, que tu plqces devant holder avec un DuplicateMovieClip()
 
Et voila
}


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
n°1637178
antika
Posté le 05-11-2007 à 20:19:30  profilanswer
 

Citation :

Réponse constructive et totalement raccord avec le sujet


 

Code :
  1. class ImgBarDataXML() implements IImgBarData {
  2. public function load( pSource:String ):Void {
  3. ...
  4. }
  5. private function onLoad():Void {
  6. ...
  7. dispatchEvent({ type:'onDataLoad' });
  8. }
  9. }


 
L'interface c'est pour pouvoir changer à la volée ta couche de données en Remoting, à l'occasion, pour rigoler (ou comment faire des versions CD-ROM en 2h de sites énormes en implémentant l'abstraction de données sur du full-flash - c'est véridique :lol: ) :

Code :
  1. class ImgBarDataAMF() implements IImgBarData {
  2. public function load( pSource:String ):Void {
  3. ...
  4. }
  5. private function onResult():Void {
  6. ...
  7. dispatchEvent({ type:'onDataLoad' });
  8. }
  9. }


 
L'interface c'est vaguement ça :

Code :
  1. interface IImgBarData {
  2. public function load(pSource:String):Void;
  3. ...
  4. //(+ méthodes publiques de l'EventDispatcher)
  5. }


 
le code du composant c'est ça - on notera le coup de l'Iterator, toujours très clâssieux pour éviter les boucles for...next (c'est vulgaire!) :

Code :
  1. class ImgBar extends MovieClip { // extends UIComponent pour un vrai composant
  2. private var _data:IImgBarData;
  3. public function ImgBar(pMode:String) {
  4. if(pMode == 'XML') // diantre, j'ai oublié comment faire un nom de classe dynamique à partir d'une String, qui peut corriger?
  5. _data = new ImgBarDataXML();
  6. _data.addEventListener( 'onDataLoad' );
  7. //...idem si pMode == 'AMF' pour utiliser la couche Remoting à la place...
  8. private function onDataLoad(e:Object):Void {
  9. var _dataItr:Iterator = _data.getIterator();
  10. while(_dataItr.next()) {
  11. //...on attache les sous-composants servant à charger les images...
  12. //...et on les intialisent avec les données de path corrects...
  13. //...et on lance le chargement sur chaque image séparée...
  14. }
  15. }
  16. }
  17. }


 
le code du sous-composant :
 

Code :
  1. class ImgHolder extends MovieClip { // normalement, il devrait plutôt étendre ImgHolder, et ImgHolder devrait être un de tes composants persos les plus utilisés
  2. private var _mcl:MovieClipLoader;
  3. private var _holder:MovieClip;
  4. public function ImgHolder() {
  5. ...
  6. }
  7. public function set filename(pFilename:String):Void {
  8. // en utilisant un setter implicite, tu peux directement déclenché le chargement en faisant <instance>.filename = 'nom_du_fichier', c'est + joli
  9. _mcl.loadclip(pFilename, _holder);
  10. }
  11. // gestion des événements du MovieClipLoader, bubbling à traver le composant principal, et hop, on touche à la perfection
  12. }
  13. }


 
Ne pas oublier des événements typés, et la gestion des exceptions.
 

Citation :

et à part ça ?


 
ça c'est l'AS2, et toi tu sors.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
(sans déconner, moi je fais vraiment comme ça  :lol:  )


Message édité par antika le 05-11-2007 à 20:38:48
n°1637201
antika
Posté le 05-11-2007 à 20:45:52  profilanswer
 

hahalala, j'oublie le plus important : converti _holder en BitmapData dans ImgHolder, comme ça tu peux le tourner et le scaler, et faire des rollOvers super-disco en code avec Fusekit, miam.

n°1637228
ludo-r
^^
Posté le 05-11-2007 à 21:52:11  profilanswer
 

Super merci ! Je m'en vais tester ça ^^

n°1637422
alpseb
Posté le 06-11-2007 à 10:41:03  profilanswer
 

antika a écrit :

hahalala, j'oublie le plus important : converti _holder en BitmapData dans ImgHolder, comme ça tu peux le tourner et le scaler, et faire des rollOvers super-disco en code avec Fusekit, miam.


 
Fusekit c'est pour les filles  :D

mood
Publicité
Posté le 06-11-2007 à 10:41:03  profilanswer
 

n°1637851
antika
Posté le 06-11-2007 à 21:55:26  profilanswer
 

tu suggères quoi?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Flash/ActionScript

  [Flash AS2] Problème de preload en XML

 

Sujets relatifs
Problème de class et d'attributprobleme avec ShellExecute
Probleme bordure tableau! Casse tête!Flash sur nuked
[C] Problème avec une fonction récursive[Debutant] probleme boucle
Probleme avec une variable dasn un formulaireProblème avec un IF/ELSE
[Access] Petit problème de requete[AJAX] Problème pour affichage de l'heure
Plus de sujets relatifs à : [Flash AS2] Problème de preload en XML


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR