Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DÉFORMATION D'IMAGE BITMAP EN AS


Information sur la source



Description

Cliquez pour voir la capture en taille normale
Le code est simple, mais demande pas mal de ressource (tout dépend de votre gourmandise en fait). Lorsqu'on déplace les coins de l'images, celle-ci est analysée (BitmapData.getPixel) et reproduite en déformant les pixels (le code refait chaque pixel un par un).

Le résultat est vraiment sympa. Dans cette exemple, 1 coin bouge aléatoirement, les 3 autres tournent sur eux mêmes. Au bout d'un tour, toutes les images calculées depuis le début sont affichées les unes à la suite des autres (histoire d'avoir une petite animation sympa). Par contre, en raison du cacheAsBitmap, il faudra attendre 1 tour complet (une fois les images calculées, donc 2 tours au total) pour avoir une animation fluide.

Il est possible de modifier certains paramètres, comme la précision. PrecX et PrecY sont les variables responsables de la précision.
PrecX représente "le nombre de pixel utilisé pour reproduire l'image, sur l'axe des X (horizontale)".
PrecY représente "le nombre de pixel utilisé pour reproduire l'image, sur l'axe des Y (verticale)".
Donc plus PrecX (respectivement PrecY) est proche de la largeur (de la hauteur) de l'image, plus le résultat sera fidèle à l'original, mais plus le temps de calculs sera long.

Dans l'exemple, j'ai mis une précision globale à 0.5 (ça veut dire qu'on calcul un pixel sur 2 seulement).

J'ai mis initié parce que c'est pas assez facile pour un débutant. Il faut quand même commencé à comprendre un code AS sans avoir à se servir de l'aide ;)

L'image est libre de droit :)
 

Conclusion

Bon, il y a quelques problèmes, déjà pour le moment, les coins doivent rester dans leur position relative (je ne sais pas si je ferai une mise à jour ou non). C'est à dire que le coin en haut à gauche doit rester grosso modo en haut à gauche (sinon ça fait une boucle for infini ! Paf !). C'est pas trop difficile à changer, malheureusement je suis pressé et je ne peut pas le faire maintenant, je le ferais dès que j'aurai du temps libre je pense.

Je ne sais pas si je ferai la mise à jour sur ce site, donc si vous êtes intéressé, venez sur http://lfabreges.free.fr/slagt (choisissez HTML ou Flash pour le type d'affichage du site, puis cliquez sur "Deformation"). Par contre, étant donné que je n'ai pas beaucoup de temps, la source n'y sera pas avant quelques heures (voire jour, je ne sais pas), donc la mise à jour pas avant quelques jours je pense, s'il y en a une. Bon promis, si j'y pense, je ferai aussi la mise à jour ici ;)
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de Slagt le 10/11/2006 16:28:10

N'hésitez pas à noter, et surtout à commenter :)

signaler à un administrateur
Commentaire de scara 51 le 13/11/2006 12:43:00

Petit commentaire rapide. Le code est un peu illisible et j'ai pas pris le temps de tout refaire sur une feuille.

Donc je vais juste analyser le résultat :
La qualité est médiocre, alors que l'utilisation des bitmapData permet normalement un très bon lissage. Pourquoi des pixels aussi gros sur le résultat final ?
Les performances ne sont pas au rendez-vous. Je ne sais pas ce qui alourdit l'anim, mais ça l'alourdit. Tu sais d'où ça vient ?

signaler à un administrateur
Commentaire de Slagt le 16/11/2006 23:40:11

Ho oui, il s'agit de la méthode de traitement :)

Je parcours l'image pixel par pixel, je récupère la valeur de la couleur, je calcul la forme du pixel correspondant (il n'est plus carré), et je le dessine. Donc ça prend beaucoup de ressource. C'est... amusant à coder, mais pas à utiliser je le reconnait.

signaler à un administrateur
Commentaire de scara 51 le 16/11/2006 23:46:09

Bon une tite solution pour optimiser tt ça : diviser l'image en 2 triangles rectangles et appliquer à chaque une torsion. Tout ca bien sûr en bitmap. Ca permet de déformer l'image sans qu'il y ait parallélisme car on sépare en 2 l'image.

Et là la qualité comme la vitesse suivent.

Je ne sais pas si je suis clair. Sinon je peux réexpliquer

signaler à un administrateur
Commentaire de Slagt le 17/11/2006 16:15:51

une torsion ?

signaler à un administrateur
Commentaire de scara 51 le 17/11/2006 17:57:53

Au chapitre martix de l'aide de flash, recherches les infos sur "Inclinaison ou cisaillement".

signaler à un administrateur
Commentaire de Slagt le 18/11/2006 23:07:38

En effet, ça à l'air fort pratique. Mais de la à le généraliser pour sortir l'image en fonction de la position des 4 coins, c'est tout de suite beaucoup plus dur non ?

A chercher...

Merci pour l'info, je n'ai pas l'habitude de me servir des matrices, et c'est vrai que leurs capacités d'action sont assez étendues.

signaler à un administrateur
Commentaire de scara 51 le 19/11/2006 23:18:47

C pour ca que je dis de couper l'image en 2 images ! La découpe se fait au nv des diagonales.

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Modifier bitmap dans la bibliotheque [ par blat ] Bonjour, Je ne sais pas si c'est possible mais je ch la commande actionscript qui permettrait de modifier un bitmap de ma bibliotheque... le but est d popup avec contenu dynamique de .... !!!!!!! [ par zilkyan ] salut à tous ! voilà mon problème : je charge des données d'un xml dans un champs texte dynamique (option  : format HTML). champ texte dynamique et image [ par fitchou ] SalutVoila je débute dans le monde merveilleux de l'action script et forcément je trouve déja quelques difficultés.Je m'explique. action script pour lien avec btn en texte dynamique vers page html redimensionne [ par webding ] Bonjour, j'ai l'habitude de faire des btns flash vers des page internet redimensionnees. J'utilise cette action btn:on(press){ getURL("javas texte dynamique+scroll en AS [ par Neferieb ] voila commençons par le code pour etre plus compréhensible:  panel1._x=700;  panel1._y=500;  panel1.beginFill(0x92A Formater un texte dynamique avec textFormat [ par barhoum75 ] BonjourJe n'arrive pas à formater mon texte avec l'objet TextFormatcadre_texte étant l'occurance de mon champ texte dynamique// créatio Formater un texte dynamique avec textFormat [ par barhoum75 ] BonjourJe n'arrive pas à formater mon texte avec l'objet TextFormatcadre_texte étant l'occurance de mon champ texte dynamique// créatio urgent script externe(dynamique) [ par elesard ] salut, je suis nouveau sur le site(qui au passage est genial), j'ai un petit souci, j'aimerai charger des bout de scripte depuis un fichier texte j'ut Texte dynamique+variable [ par celbob ] Salut, après de longues heures à chercher sur ce site, j'ai trouvé pleins d'ébauches pour résoudre mon problèmes, mais r modifier les dimensions d'un inputText dynamiquement ? [ par diedatnight ] Est-ce possible de changer la hauteur puis la largeur d'un inputText dynamiquement par actionScript ???


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,593 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.