Blog
Translate Existing Flash Applications
2 years, 5 months ago Posted in: Blog Comments Off

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

[js]
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);

}
}
}
}

[/js]

Comments are closed.