EFFET ONDES SUR L'EAU

Mansuz Messages postés 169 Date d'inscription lundi 11 décembre 2006 Statut Membre Dernière intervention 25 janvier 2014 - 26 juil. 2008 à 09:24
cs_Mikoxx Messages postés 2 Date d'inscription samedi 26 février 2011 Statut Membre Dernière intervention 8 mars 2011 - 8 mars 2011 à 18:34
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/47412-effet-ondes-sur-l-eau

cs_Mikoxx Messages postés 2 Date d'inscription samedi 26 février 2011 Statut Membre Dernière intervention 8 mars 2011
8 mars 2011 à 18:34
Salut !!!

Pour commencer merci a tous pour toutes vos astuces et codes ;)

J'ai créé une petite animation d'introduction, avec un effet d'onde dans l'eau, en mixant l'animation de Smoochy (http://www.flashkod.com/codes/EFFET-ONDES-SUR-EAU_47412.aspx) et celle dont il s'est inspiré pour la créer (lien présent dans le zip)... j'ai mixé les deux, parce qu'en gros, je voulais juste obtenir l'onde sans l'incidence relative au clic de la souris... Je précise d'ailleurs que je n'y connais rien en AS et que donc, j'ai bien galeré comme il faut...

Si je post ici, c'est parce que j'ai une question... mon animation rame énormément... j'aurai aimé savoir s'il était possible d'une façon ou d'une autre de "transformer" l'effet relatif au code en séquence image par image mises les unes après les autres en images clés...?

Merci
aureli1bl Messages postés 1 Date d'inscription jeudi 17 avril 2008 Statut Membre Dernière intervention 22 septembre 2009
22 sept. 2009 à 11:36
Bonjour,

Je viens de voir cette source qui me parait tout à fait convenir à mon projet : Je suis en train de monter ma propre table multitouch (ex MS Surface). En terme d'application, j'aimerai pouvoir utiliser ton flash comme écran d'attente :

Faire en sorte que la surface de la table soit clean (eau calme sans ondes) mais dès qu'un doigt est détecté l'effet se lance (comme à la souris) le problème est que sur ces tables il peut y avoir plusieurs "clics" en même temps.

Comment je peux modifier ta source pour que cela fonctionne en multitouch ? (bibliothèque à rajouter ?)

Merci d'avance, et Encore bravo !
Selenore Messages postés 11 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 7 novembre 2009
11 nov. 2008 à 18:48
J'ai pas mal cherché et je dois avouer que j'ai un peu de mal à comprendre comment l'adapter à un autre bitmap.

Quelqu'un pourrait-il me renseigner ?
Alex7576 Messages postés 2 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 18 septembre 2008
18 sept. 2008 à 15:36
Hello,

j'ai hâte d'essayer ça. En tout cas merci pour le code!

Ciao
cs_smoochy Messages postés 183 Date d'inscription mercredi 29 novembre 2000 Statut Membre Dernière intervention 23 avril 2010
17 sept. 2008 à 17:39
hello,
tout est possible, il suffit d'adapter un peu le code... si tu veux l'effet sur un bouton, tu n'as plus besoin du code de duplicatemovie, donc procède comme ceci:

1/ convertit ton bouton en clip, que tu nommes btn (dans les propriétés)

2/ si tu veux que le fond aie l'onde en dessous mais pas le bouton, met le clip btn sur un calque en dessus du calque deforme
ensuite remplace le code suivant (à partir de onenterframe):

onEnterFrame = function() {

Bmp.draw(Map);

// je vous conseille d'aller à cette adresse pour mieux comprendre les paramètres du filtre displacementmapfilter
// http://wiki.mediabox.fr/documentation/flash/flash/filters/displacementmapfilter/constructeur

displacementMap = new DisplacementMapFilter(Bmp, new Point(0, 0), 1, 1, 10, 10, "clamp");
deforme.filters = [displacementMap];

// le clip vague suit la souris et s'active quand on clique
this.btn.onRelease = function () {

this._parent.Map.vague1._x = this._parent._xmouse;
this._parent.Map.vague1._y = this._parent._ymouse;
this._parent.Map.vague1.gotoAndPlay(2);
}
}

2bis: si tu veux que le fond et le bouton aie l'onde, met le clip btn à l'intérieur du clip deforme ensuite remplace le code suivant (à partir de onenterframe):

onEnterFrame = function() {

Bmp.draw(Map);

// je vous conseille d'aller à cette adresse pour mieux comprendre les paramètres du filtre displacementmapfilter
// http://wiki.mediabox.fr/documentation/flash/flash/filters/displacementmapfilter/constructeur

displacementMap = new DisplacementMapFilter(Bmp, new Point(0, 0), 1, 1, 10, 10, "clamp");
deforme.filters = [displacementMap];

// le clip vague suit la souris et s'active quand on clique
this.deforme.btn.onRelease = function () {

this._parent._parent.Map.vague1._x = this._parent._parent._xmouse;
this._parent._parent.Map.vague1._y = this._parent._parent._ymouse;
this._parent._parent.Map.vague1.gotoAndPlay(2);
}
}

voilà voilà
++
Alex7576 Messages postés 2 Date d'inscription mercredi 17 septembre 2008 Statut Membre Dernière intervention 18 septembre 2008
17 sept. 2008 à 16:45
Hello,

bravo pour cet effet, c'est vraiment excellent.
Je voulais l'utiliser comme effet lorsqu'on clic sur un bouton, mais j'ai l'impression que ce n'est pas possible, on a pas la main sur les boutons si l'effet est activé... Dommage.
gremlins7 Messages postés 380 Date d'inscription mardi 29 avril 2003 Statut Membre Dernière intervention 28 décembre 2009
15 août 2008 à 18:04
Salut,
Je faisait un recherche sur les bytearray et je suis retombé ici.
J'essaye de faire une class qui manipule des bytearray dans un soucis de gain de temps. Or il s'avère qu'au finish je trouve pas cela plus rapide qu'un int32 qui est le type naturel d'un pc. Il se trouve que, bien que l'on puisse manipuler des bytesarray, on ne peut manipuler des bytes tout court. Il faut donc se taper les fonctions de convertion et ca bouffe du temps. Je presume qu'un bytearray n'est ni plus ni moins qu'un tableau de int32 en mémoire, donc autant travailler sur des int32...

Sinon, pour parler de cette source je la trouve magnifique...encore une idée des plus originale "made in" Smoochy
hpotter Messages postés 61 Date d'inscription lundi 15 décembre 2003 Statut Membre Dernière intervention 23 janvier 2009
1 août 2008 à 14:10
Une petite recherche rapide sous google : http://www.bytearray.org/?page_id=82 pour des exemple de byteArray ^^
l'effet Equalizers nous interresse le plus ici
hpotter Messages postés 61 Date d'inscription lundi 15 décembre 2003 Statut Membre Dernière intervention 23 janvier 2009
1 août 2008 à 14:05
non, ca fonctionne bien par ByteArray ( je ne parle pas de cette source là )
effectivement, le bytearray n'existe que depuis flash 9, mais il c'est une class très interressante car elle permet, notament, de convertir une image en un tableau d'octet et de trtavailler dessus uniquement par le calcul et de façons bien plus rapide.

je vais regardé une fois que je serait chez-moi (je suis en vaccances là), j'ai un site spécialisé uniquement sur les BytesArray, très utililes tout de même puisque les plus fou de flash au monde on développer des générateur d'image jpeg, de document PDF, et même à commander flash à partir d'une wiimote ! mais bon, on sort un peu du sujet là ^^
pegase31 Messages postés 6138 Date d'inscription dimanche 21 décembre 2003 Statut Modérateur Dernière intervention 4 septembre 2013 12
1 août 2008 à 00:27
ce n'ets pas BytesArray mais BitmapData et c'est du Flash 8 ...

Peg'
cs_smoochy Messages postés 183 Date d'inscription mercredi 29 novembre 2000 Statut Membre Dernière intervention 23 avril 2010
31 juil. 2008 à 13:32
hello, c'est gentil de venir faire un petit coucou aux gens qui pompent tes sources ^^

je vois que tu en connais un rayon sur le sujet en tout cas...

"Certains, spécialiste des BytesArrays de flash 9 ont réussis à générer des effets comme celui-ci avec des collisions entre plusieurs vagues... ne me demander pas comment ils font, je n'en sait rien, mais l'annimation est parfaitement fluide."

tu as un exemple de ça quelque part? sur un site ou autre? j'ai mis plusieurs vagues à la fois grâce à un duplicate movie mais la nouvelle vague passe par dessus l'autre... gérer les collisions me semblait tout simplement impossible... donc à voir c'est possible mais bien en dessus de mes connaissances ^^

"En dessinant les vague par la programmation, avec la méthode beginGradientFill, tu peut alors dessiner tes vagues de fàçon dynamiques et cadrer leurs hauteurs sur un son par exemple, en les fesant se propager d'un même point. Je pense que je vais mettre la source de cela sur le site, je vais juste la retrouver d'une part ^^ et la nettoyer un bon coup."

volontiers, ça m'intéresse de voir ça

En tout cas, merci pour tes commentaires et tes conseils

++
hpotter Messages postés 61 Date d'inscription lundi 15 décembre 2003 Statut Membre Dernière intervention 23 janvier 2009
31 juil. 2008 à 12:54
Je revient faire un petit coucou ^^en réponse à piv29
il est tout a fait possible de générer plusieurs vague à la fois ^^
Si le code est bien écrit, et qu'il n'y a pas déjà trop d'effets sur l'annimation cela fonctionne bien.
Certains, spécialiste des BytesArrays de flash 9 ont réussis à générer des effets comme celui-ci avec des collisions entre plusieurs vagues... ne me demander pas comment ils font, je n'en sait rien, mais l'annimation est parfaitement fluide.

Les effets visuel de ce genre se répendent dans flash, surtout autour du moteur 3D papervision entièrement écrit en flash AS3 : http://blog.papervision3d.org/ et cela n'est pas fini, aves l'arrivée bientôt de flash 10, nom de code ASTRO qui arrive avec l'accélération matérielle, et une grande nouveau, un nouveau language pour créer ses propres filtres... que du bonheur donc ^^

Donc, tu vois Blacknight, il sera bientôt possible d'améliorer un peu (beaucoup) cet effet.
En ce qui concerne cet effet comme celui-ci, je vais vous donner 2 ou trois conseil que j'ai moi-même expérimenté :
- Si votre annimation est static, qu'elle n'a pas d'interaction avec l'utilisateur :
Utilisé une vidéo, ou à l'aide d'une petite boucle for et d'un tableau, préchargez les images dans le tableau, et appelez-les dans la boucles, car c'est le dessin des images qui prend le plus de puissance.

- Il est également possible de ne drawer que ce qui nous interesse en précisant une zone avec un object Rectangle, ici il suffirait de ne drawer que dans un rectangle qui englobe toutes les vagues pour accélérer un peu l'animation.

- Si vous voulez effectuer des calculs mathématiques sur la map, utilisé ( sous flash 9 uniquement ) la classe bytearray qui est plus rapide que la manipulation de pixel classique.

- Eviter le plus possible les manipulations de Bitmap qui sont très gourmandes en ressources mémoires et processeurs confondus, tout vous utilisateurs n'ont pas forcéméne un 3Ghz en quad-coeur ( si vous en avez un ^^ ) ni une GeForce 9

Ces effets ne doivent être qu'utilisé à usage décorative, pour l'instant, car ils sont trop gourmant pour avoir une utilisé dans un jeu par exemple.

En tout cas, bravo ^^
Je te propose aussi une ouverture que j'ai déjà expérimenté :
En dessiant les vague par la programmation, avec la méthode beginGradientFill, tu peut alors dessiner tes vagues de fàçon dynamiques et cadrer leurs hauteurs sur un son par exemple, en les fesant se propager d'un même point. Je pense que je vais mettre la source de cela sur le site, je vais juste la retrouver d'une part ^^ et la nettoyer un bon coup.
Blacknight91titi Messages postés 1732 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 9 mars 2015 2
29 juil. 2008 à 13:21
Ca marche beaucoup mieux comme sa.

Par contre c'est toujours un peu dur pour le processeur ;)

Bonne continuation

Blacknight
Note : 7/10, Effet à améliorer encore un peu celon moi.
cs_smoochy Messages postés 183 Date d'inscription mercredi 29 novembre 2000 Statut Membre Dernière intervention 23 avril 2010
29 juil. 2008 à 11:39
du coup, plus de surcharge, donc je peux mettre plusieurs vagues comme on me l'a proposé

si vous pouvet jetter un coup d'oeil pour voir si la mémoire vive monte en flèche
(j'ai un ordi surpuissant donc chez moi ça marche lol)
cs_smoochy Messages postés 183 Date d'inscription mercredi 29 novembre 2000 Statut Membre Dernière intervention 23 avril 2010
29 juil. 2008 à 11:12
bien sûr...

c'est la ligne

Bmp = new BitmapData(Map._width, Map._height);

qui ne devait pas être dans le onEnterFrame

...

ça devrait mieux marcher à présent non?

(j'en ai profité pour mettre une version flash 8 aussi)
Blacknight91titi Messages postés 1732 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 9 mars 2015 2
28 juil. 2008 à 09:33
Alors au passage et pour information, à peine le swf ouvert que ma mémoire vive utilisée monte en flèche !
Si bien que faute de l'avoir laissé un peu trop lontemps ouvert je me suis retrouvé avec une utilisation de mémoire vive de 4GO ! Mon disque dur en à pris un coup !

Je précise que je me suis servit de l'aperçu (réservé aux membres clubs) pour voir le rendu final.

En espérant que cela vienne bel et bien de codes-sources et non de ta source, je te suggère tout de même d'y jeter un petit coup d'oeil.

Blacknight
cs_smoochy Messages postés 183 Date d'inscription mercredi 29 novembre 2000 Statut Membre Dernière intervention 23 avril 2010
27 juil. 2008 à 23:38
hélas oui, j'y ai aussi pensé, mais je n'ai pas trouvé de solution... et je pense que ça boufferait énormément de ressources
piv29 Messages postés 1 Date d'inscription samedi 15 avril 2006 Statut Membre Dernière intervention 27 juillet 2008
27 juil. 2008 à 22:14
sympa, dommage qu'on ne puisse avoir qu'une vague à la fois
Mansuz Messages postés 169 Date d'inscription lundi 11 décembre 2006 Statut Membre Dernière intervention 25 janvier 2014 1
26 juil. 2008 à 09:24
Je télécharge vite cette source. :) j'ai déjà fait quelques essais sur les filtres. Mais l'aide de flash est pas très explicite à ce sujet. Donc je suis resté sur ma fin. :p
Rejoignez-nous