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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 158
    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 expérimenté
    Homme Profil pro
    Creative Technologist
    Inscrit en
    Avril 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Creative Technologist

    Informations forums :
    Inscription : Avril 2007
    Messages : 126
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 158
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 158
    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 expérimenté
    Homme Profil pro
    Creative Technologist
    Inscrit en
    Avril 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Creative Technologist

    Informations forums :
    Inscription : Avril 2007
    Messages : 126
    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
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 158
    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.

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, 09h29
  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, 18h09
  3. Réponses: 4
    Dernier message: 09/08/2006, 12h05

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