Petite question à propos de Flash

Petite question à propos de Flash - Flash/ActionScript - Programmation

Marsh Posté le 18-01-2009 à 19:54:15    

Hello !
 
J'ai un problème et je suis pas content !  :o  
 
J'ai une intro de site avec des images en 490 * 240 je crois. Bref, interpolations de mouvements + fondu alpha entre chaque image, le tout est géré par la timeline.  
Sur un sempron 3000, ca rame, ca saccade.  
 
Première question : Est-ce que flash ne peut pas mieux gérer les mouvements d'images bitmap ? (il s'agit de jpg bien compressés)
 
Ensuite, j'ai fais une barre de scroll pour faire défiler un texte. Le texte défile à travers un masque. Quand on place la souris (rollover) sur la barre de scroll, le clip (qui contient le texte) défile dans le sens du _y.
C'est de l'AS, la fonction rollover sur cette barre de scroll entraine sur un "onEnterFrame" pour faire défiler le texte à la cadence du clip 25 fps, suivant où la souris se trouve sur la barre.
 
C'est ignoble, ça saccade à mort et ça me prend 100% d'un coeur de mon processeur (j'ai un E8400, et tous mes clients n'ont pas ce genre de matos).
Le texte n'a pas d'anti-aliasing, il est en texte bitmap.
 
Deuxième question : Rien à faire pour gérer tout ça d'une manière plus fluide ?
 
Je trouve que flash à bien du mal à gérer les mouvements de clips bitmaps ou texte bitmap. Je vois pourtant des choses terribles sur le net, très fluides. Je dois m'y prendre comme un manche ou bien ?
 
Merci d'avance pour votre aide !
 :hello:  :jap:

Reply

Marsh Posté le 18-01-2009 à 19:54:15   

Reply

Marsh Posté le 19-01-2009 à 09:24:21    

Je m'en souviens que j'avais un problème absurde de lourdeur de texte aussi (qui subissait des mouvement par enterFrame aussi)
Ecrase ton texte (Ctrl+B 2 fois)(...mais garde une copie quelque part !).
Sur mon site, j'ai même du remplacé certains textes par des images .png !!!
Bcp plus léger pour flash en ressources (mais + de poids et texte non selectionnable) !
Absurde hein ? ...

 

Ce problème semble résolu en AS3.


Message édité par abais le 19-01-2009 à 09:26:25

---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 19-01-2009 à 11:13:06    

Excellent ! Ecraser le texte, j'avais appris à faire ça en cours mais j'ai bien oublié depuis le temps (1 an rhoo...). J'avais zappé ça !
 
Merci beaucoup ça me sauve ! Quand à la méthode png, ça me semble une bonne alternative, en 8 bits ça devrait pas trop poser de soucis de poids j'ai pas un long texte
 
:D


Message édité par Sheeloo le 19-01-2009 à 11:17:05
Reply

Marsh Posté le 19-01-2009 à 11:31:19    

Pour le scroll, ca parait bizarre.
Faudrait que tu nous montres le code et que tu nous dises exactement comment est fait ton texte.
Regarde sur mon site, j'ai des scrolls sur du texte, tout ca fait maison (sans composant je veux dire) et ca passe bien.
 
Pour les images, en effet, c'est pas facile a gerer pour Flash (c'est pas fait pour hein, normalement c'est surtout du vecto). Mais elles ne sont pas si grandes, ca devrait aller. Essaie en 30fps.
 
Sinon on veut bien un exemple. :)


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

Marsh Posté le 19-01-2009 à 11:45:19    

houla si je passe en 30 fps je casse toutes les anims du site, tout deviendra plus rapide. (Pour rappel je suis en 25). J'ai descendu à 25 volontairement en me disant que moins y avait de calculs à gérer à la sec, meilleur sera le rendu pour les ptits pcs
 
Voici le morceau du code de texte. Avant ça bien évidemment y a le code qui charge l'emptymovieclip etc...
 

Code :
  1. site.container_texte_actif_mc.texte_histoire.ascenceur.onRollOver = function() {//Fonction pour le défilement du texte sur la partie Histoire
  2.  
  3.        site.container_texte_actif_mc.texte_histoire.ascenceur.onEnterFrame = function() {
  4.  
  5.            var temp:Number;
  6.            if (site.container_texte_actif_mc.texte_histoire.ascenceur._ymouse<170) {//Si on est dans la zone du haut
  7.                temp = 170-site.container_texte_actif_mc.texte_histoire.ascenceur._ymouse;
  8.                temp /= 7;
  9.                site.container_texte_actif_mc.texte_histoire.contenu_texte_histoire_mc._y += temp;
  10.            }
  11.  
  12.            if (site.container_texte_actif_mc.texte_histoire.ascenceur._ymouse>250) {//Si on est dans la zone du bas
  13.                temp = site.container_texte_actif_mc.texte_histoire.ascenceur._ymouse-250;
  14.                temp /= 6;
  15.                site.container_texte_actif_mc.texte_histoire.contenu_texte_histoire_mc._y -= temp;
  16.  
  17.            }
  18.        };
  19.    };
  20.  
  21.  
  22.    site.container_texte_actif_mc.texte_histoire.ascenceur.onRollOut = function() {
  23.        delete site.container_texte_actif_mc.texte_histoire.ascenceur.onEnterFrame;
  24.    };


 
site = container du site complet
container_texte_actif_mc (j'aime les noms à rallonge) : tout est dans le titre
texte_histoire = Le container qui contient le clip ascenceur (la barre de scroll) + texte (contenu_texte_histoire_mc) + le masque qui vient cadrer tout ça dans un petit rectangle.
contenu_texte_histoire_mc = Le clip qui contient le bloc de texte à faire défiler
 
Avec ce code, quand on passe la souris sur le haut de l'ascenceur, le défilement est plus rapide que si la souris se dirige vers le milieu.
 
Voila voila


Message édité par Sheeloo le 19-01-2009 à 11:50:16
Reply

Marsh Posté le 19-01-2009 à 11:47:41    

Ok j'ai été voir ton site, par exemple dans la partie CV quand je scroll, déja c'est fluide, et ça n'occupe que 10% de mon processeur pour un texte conséquent. Mon texte à moi est bien plus cours, et ça occupe 50% d'un coeur (donc 100% du processeur quoi)...
 
Comment t'as fait ??

Reply

Marsh Posté le 19-01-2009 à 12:13:50    

J'en profite pour flooder un exemple du site :
 
http://test.sheeloo.net/Site_web_DSP_R7.swf
 
Il n'y a que le bouton "Entrer" qui fonctionne, ne pas faire attention au reste du site (genre les images qui défilent, le scroll etc, WIP)
En ligne, le site me mange 75% de ressources, c'est énorme...


Message édité par Sheeloo le 19-01-2009 à 12:14:24
Reply

Marsh Posté le 19-01-2009 à 12:27:30    

1. Je suis un Dieu.
2. Tu ne me dis pas si ton texte est dans un champ texte statique, dynamique, si tu as importé des typos etc ...
3. Si tu pouvais mettre ton .fla sur http://dl.free.fr je te dirais ce qui ne va pas. Parce que la ca a l'air bon.
4. ton code, je l'aurai ecris de la sorte:

Code :
  1. var step : Number;
  2. var ascenceur:MovieClip = site.container_texte_actif_mc.texte_histoire.ascenceur;
  3. var texte:MovieClip = site.container_texte_actif_mc.texte_histoire.contenu_texte_histoire_mc;
  4. //
  5. ascenceur.onRollOver = function (){
  6.   step = 1;
  7. };
  8. this.onEnterFrame = function (){
  9.   if(step == 1){
  10.      if (ascenceur._ymouse < 170){
  11.         //Si on est dans la zone du haut
  12.         texte._y += (170 - ascenceur._ymouse)/7;
  13.      }else if (ascenceur._ymouse > 250){
  14.         //Si on est dans la zone du bas
  15.         texte._y -= (ascenceur._ymouse - 250)/6;
  16.      }
  17.   }
  18. };
  19. ascenceur.onRollOut = function (){
  20.   step = 0;
  21. };


J'ai pas testé, mais ca devrait marcher ;)


Message édité par Zedlefou le 19-01-2009 à 12:29:42

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

Marsh Posté le 19-01-2009 à 12:56:57    

Le texte est statique (si je le met dynamique il disparait), typo Verdana !
 
Le fla ici : (edit : j'ai changé complètement mon code, épuré, et plus propre, le lien n'a plus lieu d'être)
 
Edit : Dans ton code, le "this.onEnterFrame" ne s'active pas je ne sais pas trop pourquoi... Peut être parceque tout mon code est dans la fonction onRelease du bouton "Entrer" justement non ?
Pas grave j'ai remodifié et c'est bien plus clair. J'aime pas les maths !  :o


Message édité par Sheeloo le 21-01-2009 à 00:50:55
Reply

Marsh Posté le 19-01-2009 à 14:48:30    

Le onEnterFrame, tu peux le mettre sur ascenseur.
 
Le 30fps, chui dsl mais c'est ce qu'il y a de plus optimisé pour le Flash. Je sais c'est chiant quand toutes les anims sont faites mais bon.
Bref, avec mon code, en 30 FPS avec du texte Verdana taille 12 (le Ctrl+B sur le texte :non: ) en augmentant le coefficient (/15) c'est tout a fait convenable.


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

Marsh Posté le 19-01-2009 à 14:48:30   

Reply

Marsh Posté le 19-01-2009 à 14:49:41    

Sur mon fichier ? Ton proc tourne à combien de % pendant le scroll ?  :??:


Message édité par Sheeloo le 19-01-2009 à 14:50:53
Reply

Marsh Posté le 19-01-2009 à 14:56:12    

Autant de CPU pour les 2 (70%). Pourtant T5500 1,6GHz.
Quand je test le tien en effet c'est pas top.
Avec mes modifs, c'est beaucoup mieux.
 
Et sinon si tu veux etre au top :
http://forum.hardware.fr/hfr/Progr [...] m#t1817423
:D


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

Marsh Posté le 19-01-2009 à 15:06:18    

Je vais aller voir ça merci bien :p Ste pub :p
 
edit : Wah, ca fait un paquet de code pour faire bouger un clip de haut en bas  :ouch:  
D'autant qu'il y a des fonctions que je ne maitrise pas encore dans ce code. Il me sera utile niveau tutoriel par contre  :sol:
 
J'ai transformé le texte en gif, ca me prend moitié moins de ressources  :whistle:  
Google indexe le contenu texte des swf, qu'en est-il si on colle en intro du texte alpha sur 0 ? Est-ce qu'il le reférence malgré tout ? Un texte clip alpha 0 existe-t-il une fois compilé ?
 
*Sheeloo qui pose tjrs des questions débiles* (mais cruciales)


Message édité par Sheeloo le 19-01-2009 à 15:56:00
Reply

Marsh Posté le 19-01-2009 à 16:50:15    

Je sais pas pour le referencement.
Comme je bosse quasi jamais avec du texte en dur, je fais pas comme ca.


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

Marsh Posté le 21-01-2009 à 16:24:09    

J'aurai une autre question, un problème qui se pose assez souvent.
 
J'ai des fonctions qui font appel à des clips qui ne sont pas encore instanciés dans la scène (parcequ'ils apparaissent après un fondu ou en cliquant sur une rubrique par ex.)
 
Comment faire pour que le code s'éxecute uniquement quand le clip apparait dans la scène ?
 
J'ai essayé de mettre des écouteurs avec un onLoad ou onLoadInit mais rien n'y fait, je crois les avoir tous passés, impossible de trouver la bonne fonction...
 
Merci :)

Reply

Marsh Posté le 21-01-2009 à 16:44:17    

Je n'ai pas bien compris...
Qu'est ce qui t'empeche de lancer cette fonction au moment ou tu instance tes objets ?


---------------
Le membre ci-contre n'est pas responsable du message ci-dessus.
Reply

Marsh Posté le 21-01-2009 à 19:50:17    

Une meilleure clarté dans mon code...
 
J'aime tout avoir sur une seule base, avec différentes fonctions bien séparées les unes des autres. Là ça m'oblige à bidouiller pour lancer la fonction au moment où elle le clip est appelé, ça m'oblige (pour une fonction à lancer) à aller voir à 2 endroits...
 
Je sais pas si je suis bien clair :p
 
Je découvre les joies de flash et je fais un max pour que mon code soit propre depuis quelques jours, du coup j'évite les situations ambiguës.
 
J'arrive sur la dernière ligne droite de ce site que je suis en train de réaliser, je vous le montrerai une fois qu'il sera terminé, vous m'avez aidé dans ce projet après tout :)


Message édité par Sheeloo le 21-01-2009 à 19:51:20
Reply

Sujets relatifs:

Leave a Replay

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