0

swcからコンパイルされたアセットとコードを使用しようとしています。新しいfla内で、エクスポート時に含めるswcを選択します。コードのタイムラインでインスタンスを作成すると、動作し、swc内にあるアセットを確認し、同じオブジェクトからプロパティをトレースできます。問題は、ムービークリップ内で同じことを行う場合にのみ、アセット(ムービークリップ)に到達できないことですが、クラスからプロパティをトレースすることはできます。

作業ファイルをアップロードしました。master.flaはswcを作成するファイルです。template.flaは、swcをテストする場所です。

ファイル(これはcs4 .fla + .swc + .asです)

編集: 私が持っていた問題を再現する方法:

.1新しいmaster.flaを作成し、swcをコンパイルします。

.2 master.flaタイムラインでテキストフィールドを作成し、それに「tfield」というインスタンス名を付けて、そこからMovieClipを作成します。

.3 TextBox.asクラスを作成し、パブリック変数「tfield」を定義します(これにより、ムービー内にあるTextFieldアセットが取得されます)。

.4ライブラリで、新しく作成されたMovieClipをTextBoxクラスにリンクします。

.5エクスポートすると、TextBoxクラスのインスタンスが表示されます。

swcの使用:

.1新しいflaを作成し、master.swcをソースとして使用するようにします

.2タイムラインの最初のフレームを開き、次のコードを記述します。

var tf : TextBox = new TextBox();
addChild(tf)

これは期待どおりに機能し、TextBoxのインスタンスを作成し、内部にTextFieldが表示されるはずです。

.3前のコードにコメントを付け、同じコードを記述しますが、今回はMovieClip内に記述し、タイムラインにドロップします。コードは機能しますが、「tfield」にはアクセスできません。また、あなたはそれを見ることができません。

解決策:ダニエルが指摘したように、コードを含むMovieClipにリンケージIDを指定するだけです(TextBoxクラスIDを指定せずに、「lalala」のような新しいクラスを作成するだけです)。

ダニエルありがとう!

4

2 に答える 2

1

テンプレートのtfにリンケージIDを追加します

于 2011-02-04T03:24:02.903 に答える
0

(トレース時のnull参照を回避するために)に
追加されたTextField初期化を修正し、ステージ上とは異なる名前にするために名前を変更しましたTextBox.astfield.texttf: TextBoxtb:TextBoxtf

于 2011-02-03T22:52:07.883 に答える