1

Adobe 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 プロパティ レイヤーの作成 プロパティ レイヤー インデックスは 0 です プロパティ テキスト フィールドの作成

そして、新しいフラッシュ ドキュメント 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() を呼び出すと、作成されるテキスト フィールドのタイプは、最後に作成されたタイプになります。したがって、静的フィールドを作成してからコードを実行すると、ご覧のようにエラーが発生します。これは、静的テキスト フィールドにインスタンス名 (「name」プロパティを使用して設定) を設定できないためです。問題の簡単な修正方法は次のとおりです。

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

それが役立つことを願っています!

于 2012-12-29T00:09:58.903 に答える