Bonsoir tout le monde,
j'essaie de sortir tous les textes d'un fla avec un jsfl afin de le rendre
traductible mais j'ai un problème pour détecter les saut à la ligne.
j'ai essayer \n et \u000A mais je ne les détecte pas, est-ce que vous savez
comment je pourrai les détecter ? merci

p.s. je met le code au cas où àa vous inspire ou si vous voyez une meilleure
solution elle est biensûr bien venue, le fla est en as tout simple vu qu'à
la base il n'y avait que 3 boutons à gérer

// variables
var oDES
var oDOM
var oLIB
var nbTexts
var extractedTexts = [];

// boucle principale
function run(){
    nbTexts = 0;
    fl.outputPanel.clear();        // nettoie la fenetre output

    oDOM = fl.getDocumentDOM();        // référence au fla actuel
    oTML = oDOM.getTimeline();        // référence à la timeline de la scène
    oLIB = oDOM.library;            // référence à la bibliothèque
    oTML.layers[0].frames[0].actionScript += "\nLocalisation = {get :
function(str){ trace(str);}};\n";
    parseTl(oTML);    // parse la timeline
    parseLib();        // parse la bibliothèque

    fl.trace(nbTexts+"  texts found.");
    fl.trace(extractedTexts.join("\n"));
}

// parseur de timeline
function parseTl(oTimeline){
    // parcourt les calques de la timeline
    for(var layer in oTimeline.layers){
        // parcourt les frames du calque
        for(var i=0 ; i<oTimeline.layers[layer].frames.length ; i++){
            // parcourt les éléments de la frame
            for(var e=0 ;
e<oTimeline.layers[layer].frames[i].elements.length ; e++){
                var oElement =
oTimeline.layers[layer].frames[i].elements[e];
                var text = '';
                if(oElement.elementType=='text'){
                    // si élément text, remplace le texte
                    if (oElement.getTextString().indexOf('@_')!==0){
                        text =
oElement.getTextString().split("'").join("\\'").split("\u000A").join("\\u000A");
                        extractedTexts.push(text);
                        oElement.textType = 'dynamic';
                        oElement.setTextString('@_' +
oElement.getTextString());
                        //pas de nom, obliger d'en donner un
                        if(!(oElement.name.length > 0)){
                            oElement.name = 'namesbyext'+nbTexts;
                        }
                        oTimeline.layers[layer].frames[i].actionScript +=
"\n "+oElement.name+".text = Localisation.get('"+text+"');\n";
                        nbTexts++;
                    }
                }
            }
            // avance dans les frames
            var nDur = oTimeline.layers[layer].frames[i].duration;
            i+=nDur;
        }
    }
}

// parseur de bibliothèque
function parseLib(){
    var aItems = oLIB.items;
    for(var i=0 ; i<aItems.length ; i++){
        if(aItems[i].itemType=='instance' || aItems[i].itemType=='movie
clip' || aItems[i].itemType=='button'  || aItems[i].itemType=='graphic'){
            // parcourt la timeline de chaque item
            parseTl(aItems[i].timeline);
        }
    }
}

// gogogo .... fire in the hall
run();
--
Vous recevez ce message, car vous êtes abonné au groupe Google Groupes FCNG.
Pour envoyer un message à ce groupe, adressez un e-mail à [email protected].
Pour vous désabonner de ce groupe, envoyez un e-mail à l'adresse [email protected].
Pour plus d'options, consultez la page de ce groupe : http://groups.google.com/group/fcng?hl=fr

Répondre à