1

我刚刚开始在 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");
}

我的输出窗口显示: Searching For Properties Layer Creating Properties Layer Properties Layer Index is 0 Creating Properties Text Field

在测试新的 Flash 文档 TypeError:propertiesLayer.frames[0].elements[0] has no properties 时出现以下错误

我很茫然,任何帮助将不胜感激。

4

2 回答 2

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";   

 }
于 2012-12-28T21:05:25.853 回答
0

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

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

希望有帮助!

于 2012-12-29T00:09:58.903 回答