Blog
Translate Existing Flash Applications
7 years, 6 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

JavaScript:
  1. if(!counter){
  2. var counter = 0;
  3. }
  4.  
  5. fl.trace('// include in first frame');
  6. fl.trace('_global.texts= new Object()');
  7.  
  8. scanLibrary(fl.getDocumentDOM().library);
  9.  
  10.  
  11.  
  12. function getIsWholeInt(n)
  13. {
  14.     var s = String(n);
  15.     if(s.indexOf(".") != -1)
  16.     {
  17.         return false;
  18.     }
  19.     else
  20.     {
  21.         return true;
  22.     }
  23. }
  24.  
  25. function round(n)
  26. {
  27.     var s = String(n);
  28.     var a = s.split(".");
  29.     var num = parseInt(a[0]);
  30.     var dec = parseInt(a[1].substr(0, 1));
  31.     if(dec>= 5)
  32.     {
  33.         num++;
  34.     }
  35.     return num;
  36. }
  37.  
  38. /**
  39. * Scans the supplied flash library for linked classes and makes sure the textfields are set up properly
  40. * @param   library      A flash library to scan.
  41. */
  42. function scanLibrary(library)
  43. {
  44.     var items = library.items;
  45.     var item;
  46.     var replaceCount = 0;
  47.    
  48.     //fl.trace('items.length' + items.length);
  49.  
  50.     for( var i = 0; i <items.length; i++ )
  51.     {
  52.         item = items[i];
  53.        
  54.        
  55.        
  56.         if (item.itemType == 'movie clip' || item.itemType == 'graphic' || item.itemType == 'button')
  57.         {
  58.             var timeline = item.timeline;
  59.             var h = timeline.layerCount;
  60.            
  61.             library.selectItem(item);
  62.             library.editItem();
  63.  
  64.            
  65.             while(h--)
  66.             {
  67.            
  68.                 //fl.trace('layer' + h);
  69.  
  70.                 var k = timeline.layers[h].frameCount;
  71.                
  72.                 //fl.trace('k' + k);
  73.                
  74.                     while(k--)
  75.                     {
  76.                        
  77.                         try{
  78.                                 var j= timeline.layers[h].frames[k].elements.length;
  79.                                 //fl.trace('j' + j);
  80.  
  81.                                 while(--j>=0 )
  82.                                 {
  83.                                
  84.                                     //fl.trace('j' + j);
  85.                                    
  86.                                     var elems = timeline.layers[h].frames[k].elements;
  87.                                     var p = elems.length;
  88.                                    
  89.                                     //fl.trace('p' + p);
  90.                                    
  91.                                    
  92.                                     while(--p>=0)
  93.                                     {
  94.                                         //fl.trace('p' + p);
  95.                                         fixField(elems[p])
  96.                                     }
  97.                                    
  98.                                    
  99.                                    
  100.                                 }
  101.                             }catch(err){
  102.                            
  103.                             }
  104.                     }
  105.                
  106.             }
  107.         }
  108.     }
  109. }
  110.  
  111. function fixField(elt){
  112.    
  113.     if(elt.elementType == "text" ) {
  114.    
  115.         if(elt.textType == "static"){
  116.  
  117.             var thestr = '_global.texts.text_' + counter;
  118.            
  119.             var theValueStr = elt.getTextString();
  120.                 theValueStr = theValueStr.replace(/[\r\n]+/g, "");
  121.                
  122.             fl.trace('_global.texts.text_' + counter + ' = "NN_'+ theValueStr +'";');
  123.            
  124.             counter++;
  125.            
  126.             elt.textType = "dynamic";
  127.             elt.selectable = false;
  128.             elt.lineType = "multiline";
  129.             //elt.useDeviceFonts  = false;
  130.             elt.embedRanges = "1|2|3|4|5|17";
  131.             elt.setTextAttr('autoKern', false);
  132.             //elt.setElementProperty("fontRenderingMode", "customThicknessSharpness");
  133.             elt.variableName = thestr;
  134.            
  135.         }
  136.  
  137.     }
  138. }
  139.  
  140.  
  141. var items;
  142. var doc = fl.getDocumentDOM();
  143.  
  144. var i = 0;
  145. var curTimelines = doc.timelines;
  146. while(i <doc.timelines.length){
  147.     fl.trace('///////////////////////////////' +  curTimelines[i].name  + '//////////////////////////////////');
  148.     iterateTimeline(curTimelines[i]);
  149.     ++i;
  150. }
  151.  
  152.  
  153.  
  154. function iterateTimeline(timeline){
  155.     var layer, frame, elem, cls;
  156.     var arr  = new Array();
  157.  
  158.     // go through all frames in all layers and search for instance variables.
  159.     for( var i=0; i <timeline.layers.length; i++ )
  160.     {
  161.         layer = timeline.layers[i];
  162.         for( var j=0; j <layer.frames.length; j++ )
  163.         {
  164.             frame = layer.frames[j];
  165.             for( var k=0; k <frame.elements.length; k++ )
  166.             {
  167.                 elem = frame.elements[ k ];
  168.                
  169.                 fixField(elem);
  170.  
  171.             }
  172.         }
  173.     }
  174. }

Comments are closed.

Image compression on this page is provided by WordPress Image Compressor