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

  FORUM HardWare.fr
  Graphisme
  Web design

  défilement aléatoire image sous flash

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

défilement aléatoire image sous flash

n°925064
la ptiote
Posté le 21-02-2007 à 10:14:55  profilanswer
 

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
mood
Publicité
Posté le 21-02-2007 à 10:14:55  profilanswer
 

n°925079
craps_youp​la
Posté le 21-02-2007 à 10:58:59  profilanswer
 

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 );

n°925093
la ptiote
Posté le 21-02-2007 à 11:13:36  profilanswer
 

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

n°925094
craps_youp​la
Posté le 21-02-2007 à 11:19:22  profilanswer
 

de mon cerveau génial.

n°925245
Pyksel
Locker fou !
Posté le 21-02-2007 à 20:00:29  profilanswer
 

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 !
n°925317
craps_youp​la
Posté le 22-02-2007 à 09:06:30  profilanswer
 

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

n°925378
Pyksel
Locker fou !
Posté le 22-02-2007 à 11:44:27  profilanswer
 

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 !
n°925456
la ptiote
Posté le 22-02-2007 à 14:17:41  profilanswer
 

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

n°925531
craps_youp​la
Posté le 22-02-2007 à 15:40:03  profilanswer
 

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

n°925556
la ptiote
Posté le 22-02-2007 à 16:18:40  profilanswer
 

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

mood
Publicité
Posté le 22-02-2007 à 16:18:40  profilanswer
 

n°927982
la ptiote
Posté le 02-03-2007 à 15:19:33  profilanswer
 

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 );



n°928047
Zedlefou
In cabbage we trust !
Posté le 02-03-2007 à 18:28:29  profilanswer
 

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
n°928050
craps_youp​la
Posté le 02-03-2007 à 18:31:04  profilanswer
 

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
n°928053
Zedlefou
In cabbage we trust !
Posté le 02-03-2007 à 18:45:59  profilanswer
 

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
n°928110
Pyksel
Locker fou !
Posté le 02-03-2007 à 22:14:44  profilanswer
 

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 !
n°928260
Zedlefou
In cabbage we trust !
Posté le 03-03-2007 à 19:37:51  profilanswer
 

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
n°928318
Pyksel
Locker fou !
Posté le 04-03-2007 à 07:30:56  profilanswer
 

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 !
n°928507
craps_youp​la
Posté le 05-03-2007 à 09:11:14  profilanswer
 

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.

n°928746
Pyksel
Locker fou !
Posté le 05-03-2007 à 19:52:24  profilanswer
 

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 !
n°928842
craps_youp​la
Posté le 06-03-2007 à 09:14:21  profilanswer
 

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
n°928943
Zedlefou
In cabbage we trust !
Posté le 06-03-2007 à 12:32:14  profilanswer
 

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
n°928945
craps_youp​la
Posté le 06-03-2007 à 12:40:26  profilanswer
 

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
n°928949
Zedlefou
In cabbage we trust !
Posté le 06-03-2007 à 12:55:20  profilanswer
 

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
n°928972
craps_youp​la
Posté le 06-03-2007 à 14:04:00  profilanswer
 

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
n°929048
tompouss
Petit chat
Posté le 06-03-2007 à 17:31:50  profilanswer
 

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
n°929095
Zedlefou
In cabbage we trust !
Posté le 06-03-2007 à 19:18:09  profilanswer
 

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
n°929192
Pyksel
Locker fou !
Posté le 07-03-2007 à 06:39:20  profilanswer
 

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 !
n°929203
craps_youp​la
Posté le 07-03-2007 à 09:03:18  profilanswer
 

: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
mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Graphisme
  Web design

  défilement aléatoire image sous flash

 

Sujets relatifs
Rediriger vers une galerie flash dynamiquequi serai interesser de faire un site flash
[Toshop] Comment depixeliser une image agrandie ??Intégrer du php dans du Flash
Résolution d'image et Personnages Poserimage qui change automatiquement de résolution
De photoshop a FlashBesoin urgent d'image d'une Alfa Romeo GTV 2K3
Recherche une image raretransformer une photo en image bd
Plus de sujets relatifs à : défilement aléatoire image sous flash


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