【问题标题】:JSFL How do I set the instance name of a text field I just added?JSFL 如何设置我刚刚添加的文本字段的实例名称?
【发布时间】:2012-12-13 06:56:11
【问题描述】:

我刚刚开始在 Adob​​e Flash 中使用 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] 没有属性

我很茫然,非常感谢任何帮助。

【问题讨论】:

    标签: flash textfield jsfl


    【解决方案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";   
    
     }
    

    【讨论】:

      【解决方案2】:

      调用 addNewText() 时,创建的文本字段类型是最后创建的类型。因此,如果您创建了一个静态字段然后运行您的代码,它会如您所见的那样出错,因为静态文本字段不能有实例名称(使用“名称”属性设置)。这是您的问题的快速解决方案:

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

      希望有帮助!

      【讨论】:

      • 看了更多之后,我意识到选择图层的方式有些问题。一旦我有更好的答案,我会回复。
      猜你喜欢
      • 1970-01-01
      • 2019-05-20
      • 1970-01-01
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-08
      相关资源
      最近更新 更多