Lors de la consultation de fichier Swf dans une page de navigateur, vous utilisez un Lecteur Flash (ou Flash Player), pour lire et interpréter le contenu. Et c'est tout ! Le texte, le son, la vidéo sont lues uniquement grâce au lecteur !!
Il existe en fait 2 lecteurs, selon le navigateur que vous utilisez : l'ActiveX et le Plugin . Donc ce n'est pas parce que vous avez installé une fois un lecteur, que tous vos navigateurs (NN, IE) vont être capables de lire les Swf ;)
Lorsque vous intégrez un Swf à une page Html (par la publication de Flash, ou directement dans Dream), le code Html comprend certains paramètres qui permettent de lire et d'afficher le Swf tel que vous l'avez souhaité.
Ces balises sont spécifiques, selon, à chacun de ces 2 lecteurs ! Les infos sont communes !
<object classid ="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase = "http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,0,0" width="500" height="300"> <param name =movie value="r_flash/f_as/as_obcapab/systemCap.swf"> <param name =quality value=high> <embed src ="r_flash/f_as/as_obcapab/systemCap.swf" quality=high pluginspage ="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" type ="application/x-shockwave-flash" width="500" height="300"> </embed> </object>
Balise Object pour IE PC (et aol)
1er mode de détection automatique : Penser au codebase à modifier dans la page HTML pour ne pas détecter systématiquement Flash 6. Pour IE PC en effet, la détection du lecteur Flash (ActiveX) se fait automatiquement d'après ce codebase et le numéro stipulé. Si celui-ci n'est pas installé chez l'utilisateur, une boîte de dialogue demande à l'internaute s'il veut le charger.
Balise Embed pour IE NN Mac, NN PC, Opéra, Linux, Irix, Solaris
Il s'agit d'un plugin qui n'est pas détecté automatiquement, d'où problèmes...
Lisibilité, à quel format exporter :
D'après les dernières statistiques (janvier 2002), 95 % des internautes auraient le lecteur Flash. Celui-ci est implémenté dans les navigateurs que vous télécharger, sur Win 2000 (flash4), Win XP (flash5), QT, real etc... Aujourd'hui, le souci est donc davantage de savoir quelle version a l'internaute (notamment si votre animation comprend de la programmation), que s'il a ou non le lecteur !
Notez qu'aucune différence graphique n'existe de Flash 3 à Flash 5 et que les actions de base sont aussi communes à ces versions. (Quelques exceptions : évènement touche sur Bouton et loadMovie dans une cible, c'est du Flash 4...) Pour des contenus simples, bannières de pub, animations linéaires (...), choisissez un export en Flash 3 - La version du lecteur est paramétrable dans Flash, sur le bouton "Lecteur Flash 6" de l'inspecteur des propriétés.
Solutions
Le moins efficace - Détecteur Flash de la version et de la présence du lecteur
Détection en Javascript (mais ne marche pas si Javascript enlevé et sur IE Mac, Opera..) Il existe un paliatif consistant à effectuer la détection JS + détection VBS pour IE (fonctionne sur Mac et PC) - voir le MoockFPI
Le must mais faut s'y coller - Détecteur Flash de la version du lecteur
Faire un détecteur en Flash qui selon la version de l'internaute se comportera différemment selon ce que vous avez prévu dans le Swf détecteur. On appelle aussi ces détecteurs Flash, des sniffers. Ils exploitent les actions ou fonctionnalités sépcifiques à chaque version et qui ne seront pas interprétées par les autres versions. Voir les "ressources utiles", en bas de page.
Le plus simple mais il y a coupure dans la visite - Détecteur Flash de la présence du lecteur
Faire une page Html d'accueil demandant à la personne ne voyant pas le Swf que vous avez placé dans cette page, de télécharger le lecteur.
Mixte : Bien souvent, toutes ces techniques sont couplées, pour une efficacité totale ;) Voir les Kits cités dans "ressources utiles", en bas de page.
Les actions dans Flash
Notez que pour la détection du lecteur de Flash MX, nous détecterons bien la chaîne de caractère "6" et non "MX" ! Ouf :)
capabilities()
Pour récupérer la version du lecteur Flash MX et plus. Renvoie un String décrivant la version du lecteur utilisé.
L'Objet Capabilities, de façon plus large permet de récupérer des informations sur l'environnement de vos internautes :
getVersion() Pour détecter Flash 5 et plus. Fonction (Flash 5 et plus) qui renvoie un String décrivant la version du lecteur utilisée. S'utilise avec les méthodes de l'objet String : .substr() et .substring() Exemple de chaîne récupérée : WIN 5,0,42,0 (Flash 5 : la version 42 est la dernière release du lecteur sur Windows, la précédente étant la 30 - quelques modifications ont été faites, notamment sur l'XML !)
$version Pour détecter Flash 4.11 et plus. Propriété qui renvoie un string décrivant la version du lecteur utilisé (CF ci dessus). S'utilise avec la fonction de chaîne : substring() ce coup-ci, qui est aussi du Flash 4 ! $version, par sa compatibilité reste le moyen le plus sûr de créer une détection efficace. Le détecteur cité dans la section suivante utilise cette propriété.