フラッシュCS3で、グループのメンバーにアクセスする方法
-
21-08-2019 - |
質問
私は、スクリプトがフラッシュ(FLA)ファイルのライブラリ内のすべての動的テキストフィールドにアクセスして、特定の文字セットを埋め込むために書いています。
私は、テキストフィールドを探しているすべてのオブジェクトを繰り返し処理しますが、グループオブジェクトのメンバにアクセスしようとしたときに、いくつかの問題があるようです。これは、フラッシュファイルに子供を持っているが、私は<のhref = "http://livedocs.adobe.com/flash/mx2004/main_7_2/wwhelp/wwhimpl/で定義されたグループオブジェクトからそれらにアクセスする方法を見ることはできませんJS / HTML / wwhelp.htm?のhref = Part_JSAPI.html」のrel = "nofollowをJSFL のnoreferrer"> CS3参照。当社グループは、他の人の間で文書化されていないの層のプロパティがありますが、自分自身への参照のみを含んでいるようだ。
他のヒント
Shapeオブジェクトは、子供を持っていません。あなたは再帰でShapeオブジェクトに遭遇するのであれば、それは(そのことについては子供として内部またはフラッシュオブジェクト)の任意のダイナミックそれ内部texfieldsを持っていません。
何それは、あなたが、ステージ上のオブジェクトをグループ化する形状を作ることを考えているしない混乱される可能性があります。ステージ上のオブジェクトの「グループ」だけ簡単に編集とワークフローのためのフラッシュ編集インターフェイスに存在します。あなたが公開すると、彼らは実際にswfファイル/ ActionScriptでグループ化されていません。
も、あなたは、ステージ上に複数のベクトルのアイテムを持っているとき、あるいは、ステージ上でいくつかの状況でのビットマップの項目で、フラッシュがちょうどそれらを簡素化することで、より混乱を招くことができるものを、単一のShapeオブジェクトにフラット化。 、これは、オブジェクトをグループ化することは、子供のように各1とのShapeオブジェクトを作成するため、Shapeオブジェクトが子を持つことができるという錯覚をfurthers、実際にはそれがなかったすべては、その上に平らに描かれたものをグラフィックスで1つの形にそれをすべてを平らにしましたそれは、個々のオブジェクトとしてそれらのいずれかを保持していません。そして、そのような状況は、ダイナミックテキストフィールドで発生したことがないので、あなたは、Shapeオブジェクトをヒットした場合、非常に簡単に、そしてそこにダイナミックテキストフィールドが存在しない、に移動します)。
あなたがシェイプで作業していますか?形状は、本当に子供としてカウントされませんグラフィックス(それはスプライトのように、グラフィックスプロパティを持っている)、別に実際の子供を持つことはできないはず。彼らは、複数のグラフィックスプロパティの値が似ている。
形状が、DisplayObjectContainerを拡張していないので、私はそれが例えばスプライトまたはMovieClipなどの子表示オブジェクトを持つことができないかなり確信してます。
あなたがテキストフィールドを探している場合、それらをスキップし、安全である必要があります。
あなたはすでに答えで自分を示唆しました:シェイプオブジェクトにメンバープロパティを使用します。それは、テキストオブジェクトであってもなくてもよい内に含まれるオブジェクトの配列を返します。
あなたはテキストオブジェクトと形状(潜在的なグループ)のための文書をスキャンするfl.findObjectInDocByTypeを()を使用しているかどうかを指定していないが、それは同様に良いでしょう。
<のhref = "http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00004151.html" のrel = "nofollowをnoreferrer" > http://livedocs.adobe.com/flash/9.0/main/wwhelp/wwhimpl/common/html/wwhelp.htm?context=LiveDocs_Parts&file=00004151.html の
私は逃したいくつかの厄介なネストされたケースがありますしない限り、次のスクリプトは、FLA内のすべてのダイナミックテキストフィールドのテキスト値をトレースします信じています。いずれにせよ、それがうまくいけば、あなたが軌道に乗る必要があります。あなたがエラーをスローしない()fl.findObjectInDocByTypeためにコマンドメニューからスクリプトを実行する必要があることを警戒します。詳細は上記のリンクのコメントを参照してください。
// Look for text objects
var doc = fl.getDocumentDOM();
var typeToSearchFor = "text";
var results = fl.findObjectInDocByType(typeToSearchFor, doc);
for(var i = 0; i < results.length; i++)
{
if(results[i].obj.textType == "dynamic")
{
doWhatever(results[i].obj);
}
}
// Look for shapes
typeToSearchFor = "shape";
results = fl.findObjectInDocByType(typeToSearchFor, doc);
var textObjects;
for(var i = 0; i < results.length; i++)
{
var members = results[i].obj.members;
for(var j = 0; j < members.length; j++)
{
if(members[j].elementType == "text" && members[j].textType == "dynamic")
{
doWhatever(members[j]);
}
}
}
function doWhatever(textObj)
{
fl.trace(textObj.getTextString());
}