1

Flash CS3 と ActionScript 2 を使用しています。「innerText」という識別子を持つダイナミック テキスト ブロックを含む MovieClip シンボル (「MySymbol」として識別) があります。シンボルは、次の「MySymbol.as」ファイルを使用して「ActionScript のエクスポート」としてマークされます。

クラス MySymbol は MovieClip を拡張します
{
        関数 SetText(テキスト)
        {
                innerText.text = テキスト;
        }
}

フレームアクションでは、次のことを試しました。

var symInst = _root.attachMovie("MySymbol", "MySymbol" + _root.getNextHighestDepth(), _root.getNextHighestDepth());
symInst.SetText("こんにちは"); // 失敗
symInst.innerText.text = "こんにちは"; //作品

コンパイルエラーが発生します:

「innerText」という名前のプロパティはありません。

フレーム アクションから innerText にアクセスできるのに、.as ファイル内で参照できないのはなぜですか?

4

2 に答える 2

2

コンパイル時に "innerText" がクラスで利用できない (つまり、実行時に利用できる) ため、コンパイラ エラーが発生します。

簡単な修正は使用することです

this['innerText'].text = text;

それ以外の

innerText.text = text;
于 2009-02-16T23:48:04.010 に答える
1

TextField の「innerText」は、Flash CS3 の Text ツールを使用して作成されたと推測しています。その場合、コンパイラは、ステージ上に作成する必要がある要素、またはライブラリに配置する必要があるシンボルに関する情報を .FLA ファイルから取得する必要があるため、コンパイラはそれをある程度認識しています。

クラスからそのプロパティにアクセスするには、技術的には MovieClip の一部ですが、クラスで変数を定義する必要があります。

次のようにクラスを変更してみてください。

class MySymbol extends MovieClip

{

    private var innerText:TextField;

    function SetText(text)
    {
            innerText.text = text;
    }

}

クラスに innerText の宣言を追加することにより、コンパイラは、this['innerText'] の場合のように、プロパティが存在すると仮定するのではなく、探しているものを確実に知ることができます。(ただし、それはそのプロパティにアクセスする有効な方法です。

于 2009-02-17T21:33:41.623 に答える