IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

ActionScript 3 Discussion :

Charger des fonts "Externes" selon les choix d'un utilisateur


Sujet :

ActionScript 3

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 158
    Points : 38
    Points
    38
    Par défaut Charger des fonts "Externes" selon les choix d'un utilisateur
    Bonjour,

    Je suis actuellement en train de travailler sur un projet Flash permettant la personnalisation de son contenu via un formulaire externe (PhP/HTML).

    Tout fonctionne parfaitement, cependant j'aimerais pouvoir utiliser autant de fonts (police de caractères) différentes que je le souhaites. Pour cela je ne peux pas me permettre de les inclure dans le SWF principal sans quoi le poids va être trop important.

    Du coup j'ai pensé à faire appel aux font via des SWF externes, ainsi je pourrais en ajouter autant que je le souhaite sans que cela est un impact sur le SWF principal. Cependant je ne sais pas si cela est possible et si oui comment le mettre en place.

    Le but n'est pas de charger toutes les fonts mais uniquement celle dont l'utilisateur se servira. Je m'explique, l'utilisateur doit pouvoir choisir parmis des centaines de font dispo sur le formulaire HTML/PhP, si il choisi 3 font différentes pour ces trois textes, il n'y aura alors que 3 fonts de chargées dans le SWF principal. Toute l'astuce est la, c'est de ne charger que les font qui au final seront choisi par l'utilisateur.

    Et nous souhaitons pouvoir proposer des fonts et non utilisé les font systèmes assez "moches" et limitées...

    Pensez-vous que c'est une bonne idée, en voyez vous une meilleure ?

    Merci par avance pour votre aide,

    Alex.

  2. #2
    Membre habitué
    Homme Profil pro
    Creative Technologist
    Inscrit en
    Avril 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Creative Technologist

    Informations forums :
    Inscription : Avril 2007
    Messages : 126
    Points : 174
    Points
    174
    Par défaut
    J'ai bossé en agence sur des sites qui fonctionnaient comme ça. Un SWF par font, ou même plusieurs fonts dans un SWF. Le SWF ne contient rien d'autre. Tu ne charges ainsi donc que les fonts dont tu as besoin.

    C'est donc une bonne idée, et je confirme que c'est possible.

    Par contre, ce n'est pas moi qui aie développé le code qui permettait cela. Je ne peux donc pas te dire comment l'implémenter.

    Ceci dit, pour te guider, regarde la doc AS3 autour de la classe Font.

    Bonne chance

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 158
    Points : 38
    Points
    38
    Par défaut
    Salut David,

    Merci beaucoup pour ta confirmation, je pensais effectivement qu'une font par SWF pourrait fonctionner.

    C'est dommage que tu n'ai pas plus d'info la dessus. Je vais effectivement essayer de revoir la Doc AS3 la dessus.

    Si d'autres trucs te reviennent, n'hésites pas !

    Alex.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 158
    Points : 38
    Points
    38
    Par défaut
    Je reviens vers vous car je patauge vraiment...
    Quelqu'un aurait il une piste technique pour moi afin d'arriver à la solution ci-dessus ?

    Merci par avance pour votre aide.
    Alex.

  5. #5
    Membre habitué
    Homme Profil pro
    Creative Technologist
    Inscrit en
    Avril 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Creative Technologist

    Informations forums :
    Inscription : Avril 2007
    Messages : 126
    Points : 174
    Points
    174
    Par défaut
    Bon, je viens de vérifier:

    Construit un premier FLA dans lequel tu importes dans la librairie une Police (ici AdvoCut). Click droit->liaison, tu lui donnes un nom de liaison, ici "myAdvoCut" (je fais exprès de pas mettre le même nom pour bien différencier). Par défaut, Flash proposera comme typage flash.text.Font, c'est ce qu'il faut.
    Dans ton FLA, qu'ici on appel FontTest.fla, tu peux vérifier que la font est embendée comme ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    import flash.text.Font;
     
    var embeddedFonts:Array = Font.enumerateFonts(false);
    embeddedFonts.sortOn("fontName", Array.CASEINSENSITIVE);
     
    trace("FONT ------------------------------");
    for (var i:int=0; i<embeddedFonts.length; i++) {
    	trace("name:"+embeddedFonts[i].fontName+", style:"+embeddedFonts[i].fontStyle+", type:"+embeddedFonts[i].fontType);
    }
    trace("FONT ------------------------------");
    Maintenant, tu fais un second FLA, ici appelé FontLoad avec ce code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    import flash.display.Loader;
    import flash.net.URLRequest;
    import flash.text.Font;
     
    var loader:Loader = new Loader();
    loader.contentLoaderInfo.addEventListener("init", init);
    loader.load(new URLRequest("FontTest.swf"));
     
    function init(evt:*):void {
    	var embeddedFonts:Array = Font.enumerateFonts(false);
    	embeddedFonts.sortOn("fontName", Array.CASEINSENSITIVE);
     
    	trace("FONT LOADED ------------------------------");
    	for (var i:int=0; i<embeddedFonts.length; i++) {
    		trace("name:"+embeddedFonts[i].fontName+", style:"+embeddedFonts[i].fontStyle+", type:"+embeddedFonts[i].fontType);
    	}
    	trace("FONT LOADED ------------------------------");
    }
    Ce FLA charge l'autre et vérifie quelles polices sont mises à sa disposition. Tu remarqueras qu'ici, il ne trace rien. Cela veut donc dire que charger un SWF dans lequel il y a des polices, ne suffit pas pour accéder à ces polices.

    En fait, il faut "enregistrer" les polices. Dans FontTest, où la polices est embendée en bibliothèque, il faut en fin de code ajouter la ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Font.registerFont(myAdvoCut);
    Refais les compilations, et ça devrait marcher.

    Note: il faut se méfier lors des appels de polices, notamment dans des CSS, tu accèdes parfois par le nom d'export, "myAdvoCut" parfois par le nom de la police "Advocut". Je ne me rappelle plus dans quel cas c'est l'un ou l'autre. Mais surtout, il faut retenir que si on accède à la police par son nom, il faut tenir compte des espaces s'il en contient. Par exemple "HelveticaNeueLT Std Blk" sera appelée en CSS avec les espaces dans son nom et non pas "HelveticaNeueLTStdBlk", ce qui peut être contre-intuitif...

    Bon test

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 158
    Points : 38
    Points
    38
    Par défaut
    Salut David !

    Un grand merci pour toutes ces explications... et surtout d'avoir pris le temps de faire tout ça !

    Je vais tester ça de suite...

    Je te tiens au courant dès que c'est ok,

    Encore merci,

    Alex.

  7. #7
    Rédacteur

    Avatar de The_Pretender
    Homme Profil pro
    Formateur Développement / Programmation
    Inscrit en
    Juin 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Formateur Développement / Programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2004
    Messages : 739
    Points : 4 673
    Points
    4 673
    Par défaut
    Bonjour,

    Il suffit d'utiliser le logiciel swfmill (gratuit) qui permet à partir d'un fichier xml et d'une font ttf de créer le swf (qui peut contenir une ou plusieurs font).

    Une fois le swf de font chargé par ton swf principal, les fonts seront accessibles par leur id de liaison.

    C'est la méthode la plus rapide et pratique que j'ai trouvé pour les fonts dynamiques.
    Réclamez La Méthode Développement Facile pour Créer Rapidement des Applications Performantes sur Mobiles et Ordinateurs : Développement Facile

    Développez des Applications Web Performantes avec la Formation Vidéos Developpez : Programmation Facile

    Découvrez : Tutoriels, ressources AS2 et AS3

  8. #8
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 158
    Points : 38
    Points
    38
    Par défaut
    Salut The pretender,

    Merci pour ton aide.

    Tu veux dire que dans mon SWF principal je n'ai qu'a appeler la font utilisée parmis les centaines disponible et uniquement celle la sera chargé donc mon SWF restera leger, c'est bien ça?

    Merci pour tes précisions,

    Alex.

  9. #9
    Rédacteur

    Avatar de The_Pretender
    Homme Profil pro
    Formateur Développement / Programmation
    Inscrit en
    Juin 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Formateur Développement / Programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2004
    Messages : 739
    Points : 4 673
    Points
    4 673
    Par défaut
    Citation Envoyé par rigolman Voir le message
    Salut The pretender,

    Merci pour ton aide.

    Tu veux dire que dans mon SWF principal je n'ai qu'a appeler la font utilisée parmis les centaines disponible et uniquement celle la sera chargé donc mon SWF restera leger, c'est bien ça?

    Merci pour tes précisions,

    Alex.
    En fait dans ton swf principal, l'utilisateur sélectionne une font, ensuite tu lances le chargement d'un swf (généré par swfmill) contenant uniquement cette font.
    Réclamez La Méthode Développement Facile pour Créer Rapidement des Applications Performantes sur Mobiles et Ordinateurs : Développement Facile

    Développez des Applications Web Performantes avec la Formation Vidéos Developpez : Programmation Facile

    Découvrez : Tutoriels, ressources AS2 et AS3

  10. #10
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 158
    Points : 38
    Points
    38
    Par défaut
    Salut,

    En fait j'ai un problème car ça parait ne pas fonctionner dans mon cas:

    j'envois des valeurs a travers des parametres:
    EX: avant de charger le SWF, nous devons ajouter une font dans le SWF principal mais dans notre cas, nous envoyons la font après avoir chargé le SWF... (après que l'utilisateur est fait son choix).

    Et je devrais recharger la page pour que ca fonctionne, mais je ne peux pas recharger la page a chaque fois que l'utilisateur "test" une font...

    Une idée ?

  11. #11
    Rédacteur

    Avatar de The_Pretender
    Homme Profil pro
    Formateur Développement / Programmation
    Inscrit en
    Juin 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Formateur Développement / Programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2004
    Messages : 739
    Points : 4 673
    Points
    4 673
    Par défaut
    Je ne vois pas le problème : " dans ton swf principal, l'utilisateur sélectionne une font, ensuite tu lances le chargement d'un swf (généré par swfmill) contenant uniquement cette font".

    Les swf des fonts doivent être toutes générées avec swfmill et mises sur le serveur web.

    Ensuite, en flash, tu fais du chargement dynamiques de fonts (swf), il n'y a pas besoin de recharger la page.
    Réclamez La Méthode Développement Facile pour Créer Rapidement des Applications Performantes sur Mobiles et Ordinateurs : Développement Facile

    Développez des Applications Web Performantes avec la Formation Vidéos Developpez : Programmation Facile

    Découvrez : Tutoriels, ressources AS2 et AS3

  12. #12
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 158
    Points : 38
    Points
    38
    Par défaut
    En fait mon développeur me dit qu'il y a un soucy, car nous passons tous les variables en paramètres.

    Voila ce qu'ils me dit:
    les fonts dynamiques sont possibles si on copmile l'un des SWF avant de charger les SWF principal.
    Mais nous envoyons les variables a travers les paramètres, dans ce cas le SWF principal ne chargera pas la FONt externe.

    <param name='flashvars'

    De plus mon dev me dit que sans recharger la page (nous utilisons de l'ajax actuellement), cela fonctionne mal...

    J'y comprend rien...

  13. #13
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 158
    Points : 38
    Points
    38
    Par défaut
    j'ai oublié de préciser... je suis en AS2 (je viens de l'apprendre...)

    Est-ce le problème ?

  14. #14
    Rédacteur

    Avatar de The_Pretender
    Homme Profil pro
    Formateur Développement / Programmation
    Inscrit en
    Juin 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Formateur Développement / Programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2004
    Messages : 739
    Points : 4 673
    Points
    4 673
    Par défaut
    Citation Envoyé par rigolman Voir le message
    En fait mon développeur me dit qu'il y a un soucy, car nous passons tous les variables en paramètres.

    Voila ce qu'ils me dit:
    les fonts dynamiques sont possibles si on copmile l'un des SWF avant de charger les SWF principal.
    Mais nous envoyons les variables a travers les paramètres, dans ce cas le SWF principal ne chargera pas la FONt externe.
    Cette technique fonctionne en AS2 sans problème.

    Pourquoi toutes les fonts proposées, ne sont pas compilées dans des swf indépendant (comme je te le conseille au premier post), puis chargées à la volée?

    Dans ton flashvars, tu peux transmettre sous forme de tableau, le nom de chaque font avec l'url du swf associé.
    Réclamez La Méthode Développement Facile pour Créer Rapidement des Applications Performantes sur Mobiles et Ordinateurs : Développement Facile

    Développez des Applications Web Performantes avec la Formation Vidéos Developpez : Programmation Facile

    Découvrez : Tutoriels, ressources AS2 et AS3

  15. #15
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 158
    Points : 38
    Points
    38
    Par défaut
    Si ça fonctionne en AS2, ça ne devrait pas poser de problème, c'est bizarre.

    Pourquoi toutes les fonts proposées, ne sont pas compilées dans des swf indépendant (comme je te le conseille au premier post), puis chargées à la volée?
    >> Si si justement c'est bien ce que je veux faire, mais mon dev me dit que ce n'est pas possible. En fait j'ai un système / technique comme "Slide.com" par couches successives, j'aimerais donc aussi appeler ces font en externe pour ne pas surcharger le SWF principal mais mon dev me dit qu'il faut recompiler patati patata.

    Je suis sur que c'est parcequ'il ne sait pas faire qu'il me dit ça et c'est pour ça que ca m'embete et que j'ai posé la question ici...

    Je vais essayer de lui dire ce que tu m'as dit:
    Dans ton flashvars, tu peux transmettre sous forme de tableau, le nom de chaque font avec l'url du swf associé.
    >> Donc il suffit de mettre l'URL des font en var (ex: font1=/font/mafont.ttf font2= ...) puis de les appliquer sur les textes dans le FLA principal via Action Script? Le FLA ira de lui même utiliser cette font sans avoir besoins de recompiler, c'est bien ça ?

    Désolé de te demander confirmation mais j'ai un niveau technique très moyen et je dois essayer d'être assez précis pour mon dev afin qu'il ne me dise pas que ce n'est pas faisable...

  16. #16
    Rédacteur

    Avatar de The_Pretender
    Homme Profil pro
    Formateur Développement / Programmation
    Inscrit en
    Juin 2004
    Messages
    739
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Formateur Développement / Programmation
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2004
    Messages : 739
    Points : 4 673
    Points
    4 673
    Par défaut
    Citation Envoyé par rigolman Voir le message
    >> Donc il suffit de mettre l'URL des font en var (ex: font1=/font/mafont.ttf font2= ...) puis de les appliquer sur les textes dans le FLA principal via Action Script? Le FLA ira de lui même utiliser cette font sans avoir besoins de recompiler, c'est bien ça ?

    Désolé de te demander confirmation mais j'ai un niveau technique très moyen et je dois essayer d'être assez précis pour mon dev afin qu'il ne me dise pas que ce n'est pas faisable...
    Non, avec swfmill (et un fichier xml de config à créer), il faut créer un swf par font. Puis dans flashvars : font1=/font/arial.swf font2=font_name.swf ...)
    Réclamez La Méthode Développement Facile pour Créer Rapidement des Applications Performantes sur Mobiles et Ordinateurs : Développement Facile

    Développez des Applications Web Performantes avec la Formation Vidéos Developpez : Programmation Facile

    Découvrez : Tutoriels, ressources AS2 et AS3

  17. #17
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 158
    Points : 38
    Points
    38
    Par défaut
    Ok Merci beaucoup, je vais tester ca !

Discussions similaires

  1. Problème pour charger des font dynamiquement et les utiliser (marche à moitié)
    Par rigolman dans le forum ActionScript 1 & ActionScript 2
    Réponses: 1
    Dernier message: 31/03/2009, 08h29
  2. desactiver des input d'1 form, selon les radios
    Par zimotep dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/08/2006, 17h09
  3. Réponses: 4
    Dernier message: 09/08/2006, 11h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo