défilement aléatoire image sous flash

défilement aléatoire image sous flash - Web design - Graphisme

Marsh Posté le 21-02-2007 à 10:14:55    

Je cherche un tuto pour faire défiler de façon aléatoire 4 ou 5 photos
sur une petite animation. J'ai trouvée plusieurs tuto pour changer des
images aléatoires au chargement de la page mais aucun pour ce que je
cherche à faire.
En gros l'idée c'est que l'on a plusieurs partenaires, trop nombreux
pour pouvoir les mettre tous en place directement. Il faut donc les
faires défiler à 2 ou 3 sur 1 emplacement. Pour éviter les problèmes du
type "je suis en derniere position, personne ne me voit", il faut que
leur ordre d'apparation soit aléatoire.
 
Quelqu'1 à t'il déjà vu un tuto en flash dans ce sens ?
Perso j'ai pas trouvé
Merci à tous et bonne journée
La p'tiote  :pfff:  


---------------
la p'tiote
Reply

Marsh Posté le 21-02-2007 à 10:14:55   

Reply

Marsh Posté le 21-02-2007 à 10:58:59    

Code :
  1. // calque <functions>
  2. function onImageSwap():Void {
  3. var imgToShow:Number = getRandomImage();
  4. while( currentImageID == imgToShow ) {
  5.  imgToShow = getRandomImage();
  6. }
  7. currentImageID = imgToShow;
  8. displayImage(imgToShow);
  9. }
  10. function displayImage( pImgToShow:Number ):Void {
  11. // code de chargement/affichage à compléter...
  12. trace( 'displayImage: ' + images[pImgToShow].path );
  13. }
  14. function getRandomImage():Number {
  15. return Math.floor( Math.random() * imgCount );
  16. }
  17. // calque <code>
  18. var SWAP_TIMER:Number = 1000;
  19. var images:Array = new Array( { path:'/img/001.jpg' , caption:'...' },
  20.         { path:'/img/002.jpg' , caption:'...' },
  21.        { path:'/img/003.jpg' , caption:'...' },
  22.        { path:'/img/004.jpg' , caption:'...' },
  23.        { path:'/img/005.jpg' , caption:'...' } );
  24. var imgCount:Number = images.length;
  25. var currentImageID:Number = getRandomImage();
  26. displayImage(currentImageID);
  27. var swapInt:Number = setInterval( this , 'onImageSwap' , SWAP_TIMER );

Reply

Marsh Posté le 21-02-2007 à 11:13:36    

Merci de ta réponse.
Tu sors cela d'ou ?

Reply

Marsh Posté le 21-02-2007 à 11:19:22    

de mon cerveau génial.

Reply

Marsh Posté le 21-02-2007 à 20:00:29    

craps_youpla a écrit :

Code :
  1. // calque <functions>
  2. function onImageSwap():Void {
  3. var imgToShow:Number = getRandomImage();
  4. while( currentImageID == imgToShow ) {
  5.  imgToShow = getRandomImage();
  6. }
  7. currentImageID = imgToShow;
  8. displayImage(imgToShow);
  9. }
  10. function displayImage( pImgToShow:Number ):Void {
  11. // code de chargement/affichage à compléter...
  12. trace( 'displayImage: ' + images[pImgToShow].path );
  13. }
  14. function getRandomImage():Number {
  15. return Math.floor( Math.random() * imgCount );
  16. }
  17. // calque <code>
  18. var SWAP_TIMER:Number = 1000;
  19. var images:Array = new Array( { path:'/img/001.jpg' , caption:'...' },
  20.         { path:'/img/002.jpg' , caption:'...' },
  21.        { path:'/img/003.jpg' , caption:'...' },
  22.        { path:'/img/004.jpg' , caption:'...' },
  23.        { path:'/img/005.jpg' , caption:'...' } );
  24. var imgCount:Number = images.length;
  25. var currentImageID:Number = getRandomImage();
  26. displayImage(currentImageID);
  27. var swapInt:Number = setInterval( this , 'onImageSwap' , SWAP_TIMER );



 
Pas mal, mais un petit couplage php/xml ca eviterais d'avoir ça :
 

Code :
  1. var images:Array = new Array( { path:'/img/001.jpg' , caption:'...' },
  2.    { path:'/img/002.jpg' , caption:'...' },
  3.    { path:'/img/003.jpg' , caption:'...' },
  4.    { path:'/img/004.jpg' , caption:'...' },
  5.    { path:'/img/005.jpg' , caption:'...' } );


 
 
...si le nombre d'images viendrait à gonfler regulierement evidement...
 
 :D


Message édité par Pyksel le 21-02-2007 à 20:00:59

---------------
Rien est impossible, il suffit d'y croire !
Reply

Marsh Posté le 22-02-2007 à 09:06:30    

pyksel, t'es totalement hors-sujet - mieux vaut élaguer le code quand on répond sur un forum, n'est-ce pas ?

Reply

Marsh Posté le 22-02-2007 à 11:44:27    

craps_youpla a écrit :

pyksel, t'es totalement hors-sujet - mieux vaut élaguer le code quand on répond sur un forum, n'est-ce pas ?


 
Oui, je suis d'accord, mais là, il y a un contexte :
 

Citation :

En gros l'idée c'est que l'on a plusieurs partenaires, trop nombreux  
pour pouvoir les mettre tous en place directement
. Il faut donc les  
faires défiler à 2 ou 3 sur 1 emplacement. Pour éviter les problèmes du  
type "je suis en derniere position, personne ne me voit", il faut que  
leur ordre d'apparation soit aléatoire.


 
Donc ton code est nickel, il suffit de l'adapter, j'ai juste orienté la réponse pour qu'il puisse avoir une alternative afin de recuperer les images d'un dossier par exemple... Et là, le xml + php est une des solutions...
 


---------------
Rien est impossible, il suffit d'y croire !
Reply

Marsh Posté le 22-02-2007 à 14:17:41    

Bonjour les gars,  
Je suis vos discussions même si je n'interviens pas. Pour le moment j'ai rien fait, que des rendez vous, cela n'a pas fait avancer le boulot.
 
 
Je me penche dessus cet après midi. Dans un premier temps faut que je fasse mon devis, combien ce genre de prestation se vends t'elle d'après vous ?
Je sais que c'est drolement chiant ce type de question mais avez vous une idée pour une fourchette
Merci de vos réponse en tout cas, et de votre interet
La ptiote

Reply

Marsh Posté le 22-02-2007 à 15:40:03    

moi ça sera une journée, et c'est 350€/j, la version Remoting + le back + le déploiement est à 500€/j.

Reply

Marsh Posté le 22-02-2007 à 16:18:40    

Ok ça me donne déjà une idée
Merci

Reply

Marsh Posté le 22-02-2007 à 16:18:40   

Reply

Marsh Posté le 02-03-2007 à 15:19:33    

Bon, j'avais une autre piste qui me semblait plus facile à mettre en place mais cela ne semble pas fonctionner, alors je reviens vers vous.
 
Par contre, j'ai peur d'être un peu boulet :o
Craps_youpla, te mets pas en colère mais ...
Je le mets ou ce foutu code :  
 
Dans flash,  
Je pense que je peux faire 1 calque avec toutes mes images (10 au total).
Je fais précéder ces 10 images par 1 image clés vide dans laquelle je place ton code du côté des actions.
Qu'en penses tu, je suis sur la bonne piste ?
 
Penses tu que cela fonctionne sous flash mx, j'ai pas la dernière version, trop chère pour ce que je fais de flash.
En tout cas, j'ai pas mal écumé google à ce sujet, et il n'existe pas de tuto pour faire cela :(  
 
 

craps_youpla a écrit :

Code :
  1. // calque <functions>
  2. function onImageSwap():Void {
  3. var imgToShow:Number = getRandomImage();
  4. while( currentImageID == imgToShow ) {
  5.  imgToShow = getRandomImage();
  6. }
  7. currentImageID = imgToShow;
  8. displayImage(imgToShow);
  9. }
  10. function displayImage( pImgToShow:Number ):Void {
  11. // code de chargement/affichage à compléter...
  12. trace( 'displayImage: ' + images[pImgToShow].path );
  13. }
  14. function getRandomImage():Number {
  15. return Math.floor( Math.random() * imgCount );
  16. }
  17. // calque <code>
  18. var SWAP_TIMER:Number = 1000;
  19. var images:Array = new Array( { path:'/img/001.jpg' , caption:'...' },
  20.         { path:'/img/002.jpg' , caption:'...' },
  21.        { path:'/img/003.jpg' , caption:'...' },
  22.        { path:'/img/004.jpg' , caption:'...' },
  23.        { path:'/img/005.jpg' , caption:'...' } );
  24. var imgCount:Number = images.length;
  25. var currentImageID:Number = getRandomImage();
  26. displayImage(currentImageID);
  27. var swapInt:Number = setInterval( this , 'onImageSwap' , SWAP_TIMER );



Reply

Marsh Posté le 02-03-2007 à 18:28:29    

Va voir là et laisse tomber le code de Craps.
http://www.flashperfection.com/tut [...] 94003.html
Si tu ne connais rien à Flash ça sera surement mieu.

 

Quand a faire des boulots dont tu n'as aucune idée ni de la manière ni du prix ... ça sera sans commentaires aucun.


Message édité par Zedlefou le 02-03-2007 à 18:28:51

---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
Reply

Marsh Posté le 02-03-2007 à 18:31:04    

meeeeeuh, il était *nickel* ce code, il finira au cimetière des codes non utilisés, quelle tristesse

Message cité 1 fois
Message édité par craps_youpla le 02-03-2007 à 18:31:47
Reply

Marsh Posté le 02-03-2007 à 18:45:59    

Mais nooon je te proposerais presque de le mettre dans mon snippets mais moi j'ai des méthodes plus barbare
 
var nb = mon nombre d'image
random qui va bien sur nb, et comme j'ai intelligement appelé mes fichiers proprement 01.jpg, 02.jpg,03.jpg :
var monImg = "0"+nb+".jpg";
et je l'affiche :D


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
Reply

Marsh Posté le 02-03-2007 à 22:14:44    

craps_youpla a écrit :

meeeeeuh, il était *nickel* ce code, il finira au cimetière des codes non utilisés, quelle tristesse


 
Normal, tel quel il sert à rien sans devoir le modifier toutes les 5 mn (dans le cas d'ajout d'images réguliérement)
 
Par contre dans le cas ou il y a toujours le même nombre d'images : perfect  :jap:  
 
Sinon, oui : nickel, propre, efficace, parfait...  


---------------
Rien est impossible, il suffit d'y croire !
Reply

Marsh Posté le 03-03-2007 à 19:37:51    

Aaaah j'adore quand y'a des petites prises de bec de bac à sables pour savoir qui détient la vérité absolue !
Où finalement on s'en fou complétement de la question d'origine parce qu'elle est aussi vague que l'océan pacifique .... ahlala
Parce que de toute façon si Laptiote ne bite que dale à Flash/Xml/Php tout le code du monde ne va pas trop l'aider si c'est un travail d'envergure. :D


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
Reply

Marsh Posté le 04-03-2007 à 07:30:56    

Zedlefou a écrit :

Aaaah j'adore quand y'a des petites prises de bec de bac à sables pour savoir qui détient la vérité absolue !
Où finalement on s'en fou complétement de la question d'origine parce qu'elle est aussi vague que l'océan pacifique .... ahlala
Parce que de toute façon si Laptiote ne bite que dale à Flash/Xml/Php tout le code du monde ne va pas trop l'aider si c'est un travail d'envergure. :D


 
+1 :)  :love:  


---------------
Rien est impossible, il suffit d'y croire !
Reply

Marsh Posté le 05-03-2007 à 09:11:14    

pyksel, t'as été tellement relou que j'avais codé la couche d'accès aux données le jour où tu m'as pris la tête avec ça, je poste ça demain.

Reply

Marsh Posté le 05-03-2007 à 19:52:24    

craps_youpla a écrit :

pyksel, t'as été tellement relou que j'avais codé la couche d'accès aux données le jour où tu m'as pris la tête avec ça, je poste ça demain.


 
+1 Craps_Youpla :)  :hello:  
 
Ca te tente d'en faire un nouveau topic avec les explicatif qui vont avec ?
 
Ca ferait un super code utile ça...
 
En tout cas :  :jap:  
 
 


---------------
Rien est impossible, il suffit d'y croire !
Reply

Marsh Posté le 06-03-2007 à 09:14:21    

Code :
  1. import mx.events.EventDispatcher;
  2. import mx.utils.Delegate;
  3. class RandomImgData {
  4. private var data:Array;
  5. private var xmlData:XML;
  6. private var xmlPath:String;
  7. private var dispatchEvent:Function;
  8. public var addEventListener:Function;
  9. public var removeEventListener:Function;
  10. public function RandomImgData() {
  11.  EventDispatcher.initialize(this);
  12. }
  13. // --------------------------------------
  14. private function onLoad( pLoaded:Boolean ):Void {
  15.  try {
  16.   if(pLoaded) {
  17.    data = new Array();
  18.    var fc:XMLNode = xmlData.firstChild;
  19.    var imageCount:Number = fc.childNodes.length;
  20.    for( var i:Number = 0 ; i < imageCount ; i++ ) {
  21.     var item:XMLNode = fc.childNodes[i];
  22.     data.push({ filename:item.attributes.filename,
  23.        title:item.childNodes[0].firstChild.nodeValue,
  24.        caption:item.childNodes[1].firstChild.nodeValue,
  25.        link:item.childNodes[2].firstChild.nodeValue });
  26.    }
  27.    delete xmlData;
  28.    dispatchEvent({ type:'onModelChange',
  29.        target:this });
  30.   } else {
  31.    throw new Error( xmlPath + " can't be loaded" );
  32.   }
  33.  } catch(e:Error) {
  34.   // Console.dump(e.toString());
  35.   trace(e.toString());
  36.  }
  37. }
  38. // --------------------------------------
  39. public function update( pPath:String ):Boolean {
  40.  try {
  41.   if( pPath == undefined ) {
  42.    throw new Error( pPath + ' path' );
  43.   } else if( pPath.substring( pPath.length - 4 , pPath.length ) != '.xml' ) {
  44.    throw new Error( pPath + ' is not a valid XML file' );
  45.   }
  46.  } catch(e:Error) {
  47.   // Console.dump(e.toString());
  48.   trace(e.toString());
  49.   return false;
  50.  }
  51.  xmlPath = pPath;
  52.  xmlData = new XML();
  53.  xmlData.ignoreWhite = true;
  54.  xmlData.onLoad = Delegate.create( this , onLoad );
  55.  xmlData.load( pPath );
  56.  return true;
  57. }
  58. public function get length():Number {
  59.  return data.length;
  60. }
  61. public function getRow(pID:Number):Object {
  62.  if(data[pID] == undefined)
  63.   // Console.dump('* warning: row ' + pID + ' is undefined');
  64.   trace('* warning: row ' + pID + ' is undefined');
  65.  return data[pID];
  66. }
  67. }


 

Code :
  1. // dans le .fla calque 'code'
  2. var model:RandomImgData = new RandomImgData();
  3. model.addEventListener( 'onModelChange' , this );
  4. if(!model.update('images.xml'))
  5. trace('erreur de chargement du fichier XML');


 

Code :
  1. // dans le .fla calque 'functions'
  2. function onModelChange():Void {
  3. trace( model.getRow( Math.floor( Math.random() * model.length ) ).filename );
  4. }


 
il reste à coller le tout dans le code précédent, mais c'est trivial si vous comprenez le code ci-dessus.
 
NDLR : rôooh, c'est quand-même péta-clean, j'ai déconné :D


Message édité par craps_youpla le 06-03-2007 à 09:16:08
Reply

Marsh Posté le 06-03-2007 à 12:32:14    

Joli le code.
Je sens que j'ai pas fini d'en apprendre avec Flash :P
 
Par contre t'utilises pas Xpath ?


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
Reply

Marsh Posté le 06-03-2007 à 12:40:26    

non, l'API Xpath de Macromedia est ridicule, et celle d'XfactorStudio est complète, et donc à réserver à l'usage théorique d'XPath : parser un document profond et complexe.
 
quand je vois du XPath partout en ce moment dans du dév. Flash, je rigole doucement, inclure 4ko de bibliothèque pour parser 1ko de xml, c'est pas franchement un gage de compétence :D chaque outil à son usage précis.
 
qui plus est, un document XML profond et compliqué en dév. Flash, c'est le signe d'un pb de conception côté serveur IMHO.


Message édité par craps_youpla le 06-03-2007 à 12:42:03
Reply

Marsh Posté le 06-03-2007 à 12:55:20    

Et AMFPHP tu l'utilises beaucoup ? je sais ça n'a rien à voir et j'ai plein de questions :p Enfin non ça n'a pas complétement rien à voir ...
 


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
Reply

Marsh Posté le 06-03-2007 à 14:04:00    

le choix entre la solution d'un cache de fichier(s) XML (le cas ici) et AMFPHP/Remoting dépend de la volatilité des données, et de la complexité des cache-hits.
 
Pour un magasin en ligne théoriquement tu fais tout en XML (c'est pas très volatile), mais si en réalité la page du magasin dépend d'un filtrage user-driven multi-critères ( = si la page affichée dépend de 3 combos, soit n^3 états possibles du cache avec n le nombre de critères du combos), il vaut mieux le faire en AMFPHP direct.
 
en gros si le cache-hit tend vers une  complexité similaire à la requête directe, on utilise AMFPHP. Sinon c'est l'inverse. en haute disponibilité, un cache XML c'est mieux, comme énoncé récemment ici-même par francois_bxl. sur un nombre intermédiaire de VU, (inf. à 500k), AMFPHP reste plus facile et plus rapide à développer.
 
après, AMFPHP vient d'être transformé en extension C native pour PHP, donc il va aller de plus en plus vite (200 fois plus rapide l'extension, quand même :D ), donc il est possible que ça devienne utilisable pour de la haute dispo.
 
Dans tous les cas, c'est rapide et efficace, je m'en sert sur tous les projets d'importance, même si parfois c'est juste pendant la phase de dév. (comme stub quand le cache XML est pas développé).


Message édité par craps_youpla le 06-03-2007 à 14:09:00
Reply

Marsh Posté le 06-03-2007 à 17:31:50    

craps_youpla a écrit :

de mon cerveau génial.


 
 
modeste avec ca  :whistle:  
 
 
je m'incline et me prosterne en signe de respect
 
 
 :p  
 
 


Message édité par tompouss le 06-03-2007 à 17:33:40

---------------
collectionneur de pâtes thermiques
Reply

Marsh Posté le 06-03-2007 à 19:18:09    

Tu fais bien petit scarabé !
 
Merci Craps pour ces précisions ! Ta science m'est bien utile.


---------------
Jeu de simulation Boursière - Version BETA - https://www.facebook.com/wildstocks
Reply

Marsh Posté le 07-03-2007 à 06:39:20    

Zedlefou a écrit :

Tu fais bien petit scarabé !
 
Merci Craps pour ces précisions ! Ta science m'est bien utile.


 
+1 et UP ! pour ce code...  
Mais il manque un effet curl page encore et du blur par-ci par-là, parceque là c'est moyen comme longueur de ligne... (je rigole ;))


Message édité par Pyksel le 07-03-2007 à 06:39:34

---------------
Rien est impossible, il suffit d'y croire !
Reply

Marsh Posté le 07-03-2007 à 09:03:18    

:jap: de rien, de rien.
 
qui veut tenter la version composant v2, ou l'abstraction de la couche de données pour gérer au choix par un paramètre XML ou Remoting ou LoadVars direct ? moi j'ai moult travail en ce moment, mais je peux aider de loin.


Message édité par craps_youpla le 07-03-2007 à 09:05:53
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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