Forum-webmaster
Webdesign / graphisme => Flash / Director => Message commencé par: mathdoy le le 25-08-2004 a 16:28:49

Titre: swf lent que faire?
Posté par: mathdoy le le 25-08-2004 a 16:28:49

Bonjour j'ai un probleme avec les swf que j'exporte...
il sont au relenti sur un pentium 3, il prend plus de 85% du cpu de la machine.

parcontre sur un pentium 2.66 il roule très bien, mais prend quand meme 50% et plus du cpu je ne crois pas que ça sois normal.

lors des animations elle "lag".

que dois-je faire pour corriger le problème.

j'ai essyer de passer mon "frame rate" de 30 à 15 et ça ne marche pas.

Titre: Re:swf lent que faire?
Posté par: hacknours le le 25-08-2004 a 23:36:24

Salut,
Je n'utilise pas de PC, mais j'ai déjà été confronté à ce genre de problèmes...
Pour que les gens les plus qualifié (= pas moi) puissent te répondre efficacement, tu devrais mettre online un exemple de ton .swf
Ce qui ralenti un swf :
1. le mode plein écran
2. d'ordre plus général, une taille d'affichage différente de la taille du swf (ex: 800/600 pour un swf de 400/300)
3. les effets _alpha sur des clips de grandes taille (même un clip simple aura ce problème s'il est de grande taille) (ex: un carré blanc qui disparait et apparait)
4. de nombreux duplicateMovieClip. même minuscules, une vingtaine d'étoiles qui défilent en permanance ralentissent considérablement l'animation.
5. un code action script un peu tordu. (ex: une boucle for dans un enterFrame)

Dans ton cas, si changer le FPS ne résous pas le problème, cela viens surement du code.
Dans un premier temps, mieux vaut tester le swf dans ton explorer internet.
Dans un second temps, fais un preload. Peut-être le lag viens du chargement en même temps que la lecture.
Trois, si tu dois absolument synchroniser ton animation (avec une bande son par exmple) tu peux forcer l'animation à accéder à l'image voulue, en temps voulu (ex: onSoundComplete ou if(tempsécoulé>1000){ _root.gotoAndPlay(10)...)

En conclusion, forcer l'animation à accéder à une image ne résoudra pas les problèmes de lag, mais pourra déjà être calée sur un timing.
Si les problèmes de lag viennent de clips de grande taille qui bougent... il faut refaire le graphisme (ex: un fond qui bouge latéralement ---> découper les objets, récupérer la couleur princpale du fond, mettre un fond fixe de cette couleur et ne faire bouger que les objets)

Mieux vaut tout de même mettre un exemple en ligne çà serait plus simple.
Bon courage.

Titre: Re:swf lent que faire?
Posté par: tavman le le 26-08-2004 a 15:43:30

Pas grand chose a rajoutter... tu t'en sort tres bien hacknours...

C'est vrai qu'une annimation peut ralentir a cause de beaucoup de choses mais peut etre que tu n'as pas le meme pluggin Flash sur tes 2 config... Le pluggin Flash 7 lira mieux les annimations que le Flash 6.

Sinon, c'est vrai qu'il vaut mieux se limiter sur les effets d'alpha et tout ca, sinon, ca te jouera des tours... Les onEnterFrame peuvent aussi faire beaucoup ramer (tout dépend du code que tu met dedans, mais un grosse boucle for... c'est pas le pieds). Sinon, pour le callage d'une annimation, tu pourrait très bien imaginer un truc tout simple :

- une Liste avec des temps dedans
- une autre liste avec le numéro des frame correspondant au temps (pas la peine de le faire pour chaques frames...)
- un setInterval (dans ce cas précis, il est préférable au onEnterFrame) qui regarde tous les X temps et qui recale ton annim

Sinon, la rapidité d'une annimation dépend aussi beaucoup du navigateur dans lequel tu la lie... J'ai déjà fait des annim qui passaient très bien sous IE et qui ramaient a fond sous Mozzi par exemple...

Bon sinon, bonne chance a toi...

PS : ton problème pourrait aussi venir de manipulations intensives de textes ou des trucs comme ca... en général, ca bouffe plein de ressources...

Titre: Re:swf lent que faire?
Posté par: mathdoy le le 26-08-2004 a 16:17:50

merci du coup de main, voici quand meme le lien pour le visualiser : http://pizza.azilda.ca

je vais décrire ce que j'ai fais :
1. animation pour faire le "frame" du site.
2. lorsque fini load les photos dans le centre
3. dance ces photos animation en continue de ligne qui bouge de gauche a droite (en script)
4. les photos apparaisse avec un animation en tweening et un mask qui est la meme animation sur 2 layer différent un mask et l'autre est par dessus pour donner l'effet.

5. les boutons los du over sont aussi en script.



Code:

script sur frame 1 actions:

objects = 5;
loop = 1;
while (loop <= objects) {
duplicateMovieClip("mask", ("mask" add loop), (16384 + loop));
loop += 1;
}


script sur mon object de ma bar qui bouge :

onClipEvent (load) {
_x = Math.random() * 800;
speed = Math.random() * 0.5 + 1;
_xscale = Math.random() * 150;
//trace(speed);
}
onClipEvent (enterFrame) {
_x = (_x + speed);
if (_x >= 800) {
_xscale = Math.random() * 150;
speed = Math.random() * 0.5 + 1;
_x = _width * -1;
//trace(speed);
}
}


script bouton :
script rectagle blanc lors du over:

onClipEvent(load){
this._alpha = 60;
this._yscale = 2;

function scaleDown(){
this.onEnterFrame = function () {
if (this._yscale <=100){
this._yscale += 15;
}else{
this._yscale = this._yscale
}
}
}
function scaleUp(){
this.onEnterFrame = function () {
if (this._yscale >=2){
this._yscale -= 15;
}else{
this._yscale = this._yscale
}
}
}
}

Titre: Re:swf lent que faire?
Posté par: jb_gfx le le 26-08-2004 a 17:30:16

C'est clair, grosse image + nombreux alphas + masques animés = ça rame.

Essai de voir si tu peux optimiser tes images de fonds et réduire le nombre de blocs animés avec des alphas parceque là y'en a vraiment trop. C'est normal que ça rame.

En passant: joli le site :)

Titre: Re:swf lent que faire?
Posté par: tavman le le 26-08-2004 a 17:34:29

En tout cas, j'aime bien ton site... mais jai rien vu comme images dans les menus... enfin bon...

Sinon, le probleme doit venir de trucs comme ca :

onClipEvent (enterFrame) {
_x = (_x + speed);
if (_x >= 800) {
_xscale = Math.random() * 150;
speed = Math.random() * 0.5 + 1;
_x = _width * -1;
//trace(speed);
}
}

Normalement, ca passe parceque t'en a pas beaucoup... mais bon... chai pas trop.

[désollé... me suis planté là....]

et peut etre aussi du fait que t'ait 2 fois :

onClipEvent (load) {
}

sur le meme clip... je sais pas si ca joue, je pense pas, mais normalement, vaut mieux n'en mettre qu'un seul... Déjà pour des problemes de lecture, ensuite ca, parceque je pense qu'il n'y en aura qu'un seul qui sera pris en compte...

[/désollé... me suis planté là....]

Bon sinon, jte donne un "ptit truc" pour raccourcir ton code... t'as le droit de faire ceci :

objects = 5;
loop = 0;
while (loop++ <= objects) {
duplicateMovieClip("mask", ("mask" add loop), (16384 + loop));
}

ca reviendra exactement au même... Et puis perso, j'ai vu nulle part que ca ramait (remarquez, c'est pas pour ce que j'ai vu du site...)


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.