2013-12-11 26 views
0

我知道有沒有誰使用JSFL,但我認爲這是值得一試:用JSFL腳本改變筆畫縮放模式?

有沒有什麼辦法可以使用JSFL來循環通過文檔中的筆畫,並將其比例類型更改爲一個不同的設置?我知道如何在Flash IDE中執行此操作(在繪圖時屬性面板中),並且JSFL Documentation確實提示能夠更改第481頁上的scaleType,但我擔心這可能僅在腳本內創建新筆劃時纔可行不能編輯那些已經在文檔中存在的招。

的權威回答這個問題本質上就在於你是否能夠通過JSFL檢索文檔內現有中風的對象。

回答

0

這裏是我一直在努力的方法儘管我認爲它有一些缺陷,但要小心。

for (j=0; j < selection.edges.length; j++) 
    { 
     var cubicPoints = selection.getCubicSegmentPoints(j); 
//  for (var i=0; i<cubicPoints.length; i++) { 
//   trace("index " + i +" x: " + cubicPoints[i].x + " y: " + cubicPoints[i].y); 
//  } 
     if (Math.abs(cubicPoints[0].x - cubicPoints[3].x) && Math.abs(cubicPoints[0].y - cubicPoints[3].y)) 
     { 
      border_object.radius_array.push(Math.abs(cubicPoints[0].x - cubicPoints[3].x)); 
      continue; 
     } 
     //it's not a corner so get the stroke properties 
     var obj  = {}; 
     obj.x_pos = cubicPoints[0].x; 
     obj.y_pos = cubicPoints[0].y; 

     if (selection.edges[j].stroke) 
     { 
      obj.stroke_thickness = selection.edges[j].stroke.thickness == undefined ? '0' : selection.edges[j].stroke.thickness; 

      if (selection.edges[j].stroke.shapeFill) 
       obj.fill_properties = getFillProperties(selection.edges[j].stroke); 
      else 
       obj.fill_properties = []; 
     } 

     border_object.stroke_properties.push(obj); 
    } 

我敢打賭,你可以找到一種方法來改變筆畫對象的意願。

1

這將迭代庫中的所有符號並更改筆畫寬度。在運行之前只需將stroke_width更改爲所需的寬度即可。

var stroke_width = 20; 

fl.trace("Changing all strokes width to " + stroke_width); 

function changeStroke(element, width) 
{ 
    if (element.elementType == "shape") { 
     var stroke = element.getCustomStroke(); 
     stroke.thickness = width; 
     element.setCustomStroke(stroke); 

     // recurse for groups 
     for (var iSubE in element.members) { 
      var sub_element = element.members[iSubE]; 
      changeStroke(sub_element, width); 
     } 
    } 
} 

var libItems = fl.getDocumentDOM().library.items; 
for (var item_it in libItems) 
{ 
    var item = libItems[item_it]; 
    if (item == undefined || item.symbolType == undefined) 
    { 
     continue; 
    } 

    var timeline = item.timeline; 
    for (var layer_it in timeline.layers) 
    { 
     var layer = timeline.layers[layer_it]; 
     var frame = layer.frames[0]; 
     for (var element_it in frame.elements) 
     { 
      var element = frame.elements[element_it]; 
      changeStroke(element, stroke_width); 
     } 
    } 
}