Blog
Translate Existing Flash Applications
I've been encharged to translate three existing games for disney from english to italian.
It's quite a pain in the ass enter in other's people applications especially games.
Here's a nice jsfl command that will help you when translating old AS2 aplications.
This script will:
- convert statics to dynamics
- apply a global variable into any textfield
- embed fornts and
JavaScript:
-
if(!counter){
-
var counter = 0;
-
}
-
-
fl.trace('// include in first frame');
-
fl.trace('_global.texts= new Object()');
-
-
scanLibrary(fl.getDocumentDOM().library);
-
-
-
-
function getIsWholeInt(n)
-
{
-
var s = String(n);
-
if(s.indexOf(".") != -1)
-
{
-
return false;
-
}
-
else
-
{
-
return true;
-
}
-
}
-
-
function round(n)
-
{
-
var s = String(n);
-
var a = s.split(".");
-
var num = parseInt(a[0]);
-
var dec = parseInt(a[1].substr(0, 1));
-
if(dec>= 5)
-
{
-
num++;
-
}
-
return num;
-
}
-
-
/**
-
* Scans the supplied flash library for linked classes and makes sure the textfields are set up properly
-
* @param library A flash library to scan.
-
*/
-
function scanLibrary(library)
-
{
-
var items = library.items;
-
var item;
-
var replaceCount = 0;
-
-
//fl.trace('items.length' + items.length);
-
-
for( var i = 0; i <items.length; i++ )
-
{
-
item = items[i];
-
-
-
-
if (item.itemType == 'movie clip' || item.itemType == 'graphic' || item.itemType == 'button')
-
{
-
var timeline = item.timeline;
-
var h = timeline.layerCount;
-
-
library.selectItem(item);
-
library.editItem();
-
-
-
while(h--)
-
{
-
-
//fl.trace('layer' + h);
-
-
var k = timeline.layers[h].frameCount;
-
-
//fl.trace('k' + k);
-
-
while(k--)
-
{
-
-
try{
-
var j= timeline.layers[h].frames[k].elements.length;
-
//fl.trace('j' + j);
-
-
while(--j>=0 )
-
{
-
-
//fl.trace('j' + j);
-
-
var elems = timeline.layers[h].frames[k].elements;
-
var p = elems.length;
-
-
//fl.trace('p' + p);
-
-
-
while(--p>=0)
-
{
-
//fl.trace('p' + p);
-
fixField(elems[p])
-
}
-
-
-
-
}
-
}catch(err){
-
-
}
-
}
-
-
}
-
}
-
}
-
}
-
-
function fixField(elt){
-
-
if(elt.elementType == "text" ) {
-
-
if(elt.textType == "static"){
-
-
var thestr = '_global.texts.text_' + counter;
-
-
var theValueStr = elt.getTextString();
-
theValueStr = theValueStr.replace(/[\r\n]+/g, "");
-
-
fl.trace('_global.texts.text_' + counter + ' = "NN_'+ theValueStr +'";');
-
-
counter++;
-
-
elt.textType = "dynamic";
-
elt.selectable = false;
-
elt.lineType = "multiline";
-
//elt.useDeviceFonts = false;
-
elt.embedRanges = "1|2|3|4|5|17";
-
elt.setTextAttr('autoKern', false);
-
//elt.setElementProperty("fontRenderingMode", "customThicknessSharpness");
-
elt.variableName = thestr;
-
-
}
-
-
}
-
}
-
-
-
var items;
-
var doc = fl.getDocumentDOM();
-
-
var i = 0;
-
var curTimelines = doc.timelines;
-
while(i <doc.timelines.length){
-
fl.trace('///////////////////////////////' + curTimelines[i].name + '//////////////////////////////////');
-
iterateTimeline(curTimelines[i]);
-
++i;
-
}
-
-
-
-
function iterateTimeline(timeline){
-
var layer, frame, elem, cls;
-
var arr = new Array();
-
-
// go through all frames in all layers and search for instance variables.
-
for( var i=0; i <timeline.layers.length; i++ )
-
{
-
layer = timeline.layers[i];
-
for( var j=0; j <layer.frames.length; j++ )
-
{
-
frame = layer.frames[j];
-
for( var k=0; k <frame.elements.length; k++ )
-
{
-
elem = frame.elements[ k ];
-
-
fixField(elem);
-
-
}
-
}
-
}
-
}
Tags: Flash

Xing
LinkedIn
Delicious
Flickr