tutoriaux flash ciblage_dynamique

Vous êtes ici: Les articles techniques » tutoriaux » Tutoriaux et ressources Adobe Flash CS3 » ciblage dynamique



ciblage dynamique

Article écrit le 05/04/2007 13:34.
Par k-ny ( blog ).



Dans ce tutorial, je vais vous montrer comment ne plus avoir de problèmes d’url relative ou absolue en ciblant des fichiers externes à votre swf.

Mais de quels problèmes il parle celui-là ? Moi je n’ai jamais eu de soucis avec mon ciblage de fichier !

Oui et non, ce tuto va aussi vous montrer comment vous faciliter la vie, surtout si vous ètes du genre à appeler vos swf depuis differents endroits, ou depuis d’autres domaines ...

Au programme

Preface

Qu'est ce qu'un ciblage absolu ?

Une URL absolue permet d’indiquer comment accéder à une ressource indépendamment de tout contexte où elle peut être précisée ou transmise. Donc c’est l’adresse complète d’un fichier.

Exemple d’url : http://blog.webinventif.fr/tuto/astuce_ciblage/flash/fichier/logo.png

Qu'est ce qu'un ciblage relatif ?

Les protocoles utilisant un chemin hiérarchique permettent l’utilisation d’URL relatives. Une URL relative ne contient ni protocole ni nom de domaine. Ceux-ci sont déduits à partir de l’URL de la ressource contenant l’URL relative.

Les URL relatives sont souvent utilisées pour les hyperliens à l’intérieur d’un même site Web. Si le document d’URL http://fr.wikipedia.org/wiki/Web contient l’URL relative Navigateur, cela correspond à http://fr.wikipedia.org/wiki/Navigateur . L’usage d’URL relatives permet de copier l’ensemble d’un site Web sur un autre serveur Web sans avoir à changer les URL.

Exemple : ici/bienvenue

Lien utile: Fonctionnement URL

Quelles genres de problèmes vais-je rencontrer avec mon ciblage ?

Problèmes rencontrés avec un ciblage absolu

Le ciblage absolu c’est très pratique, dans la mesure où l’on peut appeler ou loader un fichier sans s’occuper de l’endroit où l’on se trouve !

Mais celà devient problèmatique si l’on deplace nos fichiers, d’un dossier à un autre, ou si l’on change de nom de domaine ! Il faudrait alors réouvrir tous nos swf pour changer les url des fichiers externes !

Problèmes rencontrés avec un ciblage relatif

Il se revèle très utile dans le cas de deplacement de dossier par exemple. On peut tout à fait deplacer un dossier complet sans que nos liens deviennent obsolètes.

Mais encore une fois, le relatif à ses limites. Dès que l’on appel notre swf sur des pages qui ne sont pas situées au mème niveau, et bien celà influe sur le ciblage relatif dans notre swf !
Flash ne cherchera plus les fichiers externe au bon endroit :$

Exemples:
Un fichier swf, qui load des images situées dans le mème dossier se trouvant là: http://blog.webinventif.fr/mon_flash/
On affiche ce swf dans une page html situé dans le dossier parent: http://blog.webinventif.fr/ma_page.html

Que va-til se produire d’après vous ?

Et bien tous les liens relatifs du swf vont ètre changés !
Une image se trouvant là : http://blog.webinventif.fr/mon_flash/image.jpg, une fois le swf affiché dans la page html, notre swf ira chercher l’image là : http://blog.webinventif.fr/image.jpg !


Et oui, ce n’est donc pas si simple de choisir son type de ciblage !

La solution, en une ligne de code !

//On defini l'url de base de notre swf
var adresse_swf:String = _url.substring(0, _url.split(".swf")[0].lastIndexOf("/")+1);
//Et après, vos url relative devront juste contenir cette variable, exemple:
mcLoader.loadClip(adresse_swf+"logo.png", container);

Voilà, avec cette methode, on definit une variable qui va contenir l’url absolue de façon dynamique. Maintenant, vous pouvez appeler votre swf d’où vous le voulez, vous pouvez aussi le deplacer à votre guise.
On a réuni tous les avantages liés au deux types de ciblage !

Plus loin ...

Le code vu en detail
/********************************************
 
  url racine de l'emplacement du fichier swf
  
*********************************************/
//on cherche la position de la 1ère chaine contenant ".swf"
var tri_1 = Number(this._url.indexOf(".swf"));
//on renvoi une chaine en partant du debut de l'url jusqu'à la 1ère chaine ".swf"
var tri_2:String = this._url.substring(0, tri_1);
//dans cette nouvelle chaine on cherche la position du dernier "/"
var tri_3 = Number(tri_2.lastIndexOf("/"));
//on renvoi une chaine en partant du debut de tri_2 jusqu'au dernier "/"
var tri_4:String = tri_2.substring(0, tri_3)+"/";
//On affiche
trace(tri_4);

Voilà, ce code fait la mème chose que le code precedant, mais en passant en details chaque étapes de la recuperation de l’url ;)



Download

En savoir plus




veille
inscrits inscrits ! Compensation à la rédaction
  • Inscription au wiki
  • Connexion

vod