2012-12-27 82 views
1

我剛剛開始使用Adobe Flash中的JSFL,並試圖將文本字段添加到新創建的圖層,然後將其實例名稱更改爲「屬性」。JSFL如何設置我剛剛添加的文本字段的實例名稱?

這裏是我的代碼:

fl.outputPanel.clear(); 

var document = fl.getDocumentDOM(); 

var timeline = document.getTimeline(); 

var layers = timeline.layers; 

var propertiesLayer = null; 

var propertiesTextBox = null; 

var layerIndex = 0; 

fl.trace("Searching For Properties Layer"); 

for (var index in layers) 
{ 
    if(layers[index].name == "properties") 
    { 
     propertiesLayer = layers[index]; 
     layerIndex = index; 
    } 
} 

if(!propertiesLayer) 
{ 
    fl.trace("Creating Properties Layer"); 
    timeline.addNewLayer("properties"); 
    layerIndex = timeline.findLayerIndex("properties"); 

    fl.trace("Properties Layer Index is " + layerIndex); 
    propertiesLayer = layers[layerIndex]; 

    timeline.setSelectedLayers(layerIndex * 1); 

    fl.trace("Creating Properties Text Field"); 
    document.addNewText({left:0, top:-100, right:100, bottom:0}); 

    propertiesLayer.frames[0].elements[0].name = "properties"; 

    fl.trace("Setting Properties Text Field's Instance Name"); 
    //propertiesTextBox.name = "properties"; 

    fl.trace("Setting Properties Text Field"); 
    document.setTextString("test"); 
} 

我的輸出窗口顯示: 搜索屬性 層中產生屬性層 屬性層次索引0 創建屬性文本字段

而且我得到以下錯誤當在新的Flash文檔上測試時 TypeError:propertiesLayer.frames [0] .elements [0]沒有屬性

我很茫然,任何幫助將非常感激。

回答

1

修改您的代碼,它的工作原理。以下內容只是我修改代碼的一部分。儘管需要進一步改進。

if(!propertiesLayer) 
{ 
     timeline.addNewLayer("properties"); 
     layerIndex = timeline.findLayerIndex("properties"); 

     propertiesLayer = layers[layerIndex]; 

     timeline.setSelectedLayers(0); 

     document.addNewText({left:0, top:-100, right:100, bottom:0}); 

     document.setTextString("test"); 

     var element = document.selection[0]; 

     document.selection[0].textType = "dynamic"; 
     element.name = "properties"; 

} 
0

當調用addNewText()文本字段創建的類型是創建的最後一個類型。因此,如果你創建了一個靜態字段,然後運行你的代碼,它會像你所看到的那樣出錯,因爲靜態文本字段不能有實例名稱(使用「name」屬性設置)。這裏是你的問題的快速解決方案:

propertiesLayer.frames[0].elements[0].textType = "dynamic"; 
propertiesLayer.frames[0].elements[0].name = "properties"; 

希望幫助!

+0

看過這些之後,我意識到圖層的選擇方式有些問題。一旦我有更好的答案,我會回覆。 – Jordan

相關問題