Problème de preload avec composants mx 2004

Résolu
Signaler
Messages postés
4
Date d'inscription
mardi 29 juin 2004
Statut
Membre
Dernière intervention
30 novembre 2005
-
Messages postés
4
Date d'inscription
mardi 29 juin 2004
Statut
Membre
Dernière intervention
30 novembre 2005
-
Bonjour !

Sujet classique parmi les classiques... j'ai un problème avec un preload.
J'ai tout d'abord fait un preload perso, nada. Ensuite, j'ai du essayer une douzaine de sources de tous horizons, nada. J'ai fini par voir dans l'aide de flash que les composants mx 2004 se chargeaient à l'image 1 via les liaisons dans la bibliothèque, j'ai désactivé cette option...

Mais rien à faire, tout mon swf se charge avant d'afficher la première image où se trouve mon preloader. Si quelqu'un a déjà eu ce pépin... merci de me dire le petit truc (sûrement idiot) que j'ai laissé passé avec les composants.

Le preloader actuel sur mon flash est le suivant (rien de bien méchant, c'est même carrément old-school comme diraient certains sur ce site..) :

stop();
_root.onEnterFrame = function()
{
total = _root.getBytesTotal();
lu = _root.getBytesLoaded();
rapport = Math.round((lu/total)*100);
setProperty("barre", _xscale, rapport);
if (total >= 100)
{
delete this.onEnterFrame;
gotoAndStop(2);
}
}

Donc voilà, avec ça (extrêmement simple) ou même des scripts archi-compliqués, j'ai toujours le même problème : toute l'animation qui se charge dès la première image malgré le changement des liaisons dans la bibliothèque du .fla

Je continue bien sûr à chercher mais... au secours !

3 réponses

Messages postés
4
Date d'inscription
mardi 29 juin 2004
Statut
Membre
Dernière intervention
30 novembre 2005

Et voilà, j'ai fini par comprendre, je donne donc la solution pour ceux qui auront les mêmes ennuis que moi avec les composants dans le futur...

Voici ce qu'il faut faire pour qu'un preload soit bien efficace quand on utilise des composants et aussi quand on veut respecter les normes du w3c. Parce-qu'une partie de mon problème venait également du fait que mon site est en xhtml 2.0 !

Les étapes importantes lors de l'exportation du fichier flash :
1.
Dans la bibliothèque des composants, pour chaque composant, dans la propriété Liaison, enlever l'export sur la première image. C'est déjà des octets gagnés sur la première image (où se situe le preload bien sûr).
2.
Dans les propriétés de la publication (Fichier -> Paramètes de publication), dans l'onglet flash, on trouve un joli bouton 'paramètres' à côté d'un menu déroulant indiquant le type d'AS qu'on souhaite exporter. Là, dans les paramètres, on voit que les classes AS 2.0 (dont celles des composants) sont exportés sur la première image... à mettre sur la deuxième image au moins donc...
3.
Enfin, dernier point côté html donc (XHTML même), je me perdais dans les attributs de la balise object, ce qui fait que le streaming ne se faisait pas et flash attendait la fin de tout le chargement pour lancer la bête... Plutôt que de me lancer dans une description monumentale, voici donc une page complète pour insérer un flash en xhtml 2.0 (compatible IE 5.5, 6.0) :

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 2.0//EN" "TBD">


<html>


<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />


<title>laby</title>


<style type="text/css">
object#laby
{
width: 600px;
height: 400px;
}
</style>
</head>




<object type="application/x-shockwave-flash" id="laby">

</object>




</html>

Mon anim s'apelle laby... c'est un labyrinthe... voilà pour y'a laby partout ^^
Le plus important pour le streming c'est de ne pas mettre data="laby.swf" dans les attributs de object, sinon IE attends la fin du chargement. Par contre, sans ça Firefox ne veut rien savoir...
En gros, il ne reste plus qu'à se taper une détection du navigateur pour bien faire

Une petite rapide en php, juste pour savoir si c'est IE :

<?php
if (eregi('msie', $HTTP_SERVER_VARS['HTTP_USER_AGENT']) && !eregi('opera', $HTTP_SERVER_VARS['HTTP_USER_AGENT']))
{
$navigateur = "IE";
}
else
{
$navigateur = "Linuxien à la ***"; //Sans prise de partie ;)
}
?>

En tous cas merci à toi Peg', en générant le rapport de taille j'ai pu me rendre compte du chargement des classes AS 2.0 sur ma première image. Sans elles je suis passées de 48 Ko à 0.1 Ko sur ma première image !

Pour finir, voici mon preload, on ne peut plus concon :

_root.onEnterFrame = function()
{
total = _root.getBytesTotal();
lu = _root.getBytesLoaded();
rapport = Math.round((lu/total)*100);
barre = "Chargement... "+rapport+"%";
if (lu == total)
{
gotoAndStop(2);
delete _root.onEnterFrame;
}
}
stop();

barre c'est juste la variable d'un texte dynamique qui affiche donc un truc du genre :
Chargement... 23%

Bonne chance à tous ceux qui galèrent comme moi ^^
++
Messages postés
6146
Date d'inscription
dimanche 21 décembre 2003
Statut
Modérateur
Dernière intervention
4 septembre 2013
10
Déjà, si tu mettais ton delete this.onEnterFrame; après ton goto, ça devrait mieux marcher ... car ton script se coupe l'herbe sous le pied tout seul (tu la détruit avant qu'elle n'ait eut le temps d'exécuter la fonction de déplacement).

Après, pour ton soucis, ce n'est pas simple de te dire pourquoi ça foire. Tu peux avoir X solutions :

- Vérifier que tes polices contenues dans ton affichage de préload ne se chargent pas en dernier
- Vérifier le poids de tes composants/sons/images qui seraient liés lors de la première Frame
- Voir si ton PC n'est pas ensorcellé et si tu as bien fait ta prière hier soir
- etc ...

Bref, tu as toujours la possibilité d'éditer un rapport de taille pour savoir où ça foire !

Peg'
Messages postés
4
Date d'inscription
mardi 29 juin 2004
Statut
Membre
Dernière intervention
30 novembre 2005

Heu... a priori c'est de l'ensorcellement alors...

Je crois que je vais refaire tout le flash en commençant par le preload... je verrai bien...