0

CS3 から SWF をロードする Flex アプリケーションがあります。読み込まれた SWF には、「myText」というテキスト入力が含まれています。これは SWFLoader.content で問題なく確認できますが、Flex アプリでどのタイプを扱うべきかわかりません。Flex のドキュメントでこれがカバーされていると思いましたが、別の Flex SWF と対話する方法しか見つかりません。

Flex デバッガーは、タイプが fl.controls.TextInput であることを教えてくれます。これは理にかなっています。しかし、FlexBuilder はこのクラスを認識していないようです。Flash と Flex はどちらも AS3 を使用しますが、Flex にはまったく新しい GUI クラスのライブラリがあります。すべての Flash クラスも含まれていると思っていましたが、fl.*** パッケージを認識できませんでした。

4

3 に答える 3

2

クラスのfl.*階層はFlashCS3のみです。これはFlashComponents3ライブラリです(私はそれが呼ばれていると思います、私は間違っているかもしれません)。ただし、オブジェクトを操作するためにクラスは必要ありません。あなたが持っているように見えるあなたのコードでそれへの参照を得ることができる限り、あなたはその参照を型なし変数に割り当てて、とにかくそれを扱うことができます:

var textInput : * = getTheTextInput(); // insert your own method here

textInput.text = "Lorem ipsum dolor sit amet";

textInput.setSelection(4, 15);

オブジェクトを操作するために、オブジェクトのタイプを知る必要はありません。もちろん、コンパイル時に型チェックが失われますが、それは実際にはそれほど問題ではないので、特に注意する必要があります。

オブジェクトを実際の型として参照したい場合は、問題のクラスは次の場所にあります。

Adobe Flash CS3/Configuration/Component Source/ActionScript 3.0/User Interface/fl/controls/TextInput.as

... Flash CS3がインストールされている場合、それはそのアプリケーションにのみ付属しているためです。

于 2008-09-19T15:46:08.247 に答える
0

FlexとFlashSWFは基本的に同じであり、異なるツールを使用して構築されています。それらが同じコンポーネントライブラリを共有しているかどうかはわかりませんが、パッケージ名に基づいて、少なくともほとんどの場合は共有していると思います。

通常のテキスト入力の場合は、mx.controls.TextInputのインスタンスだと思います。

于 2008-09-18T20:26:55.733 に答える
0

Theoが言ったようにして正しいタイプで参照すると、最初のswfsで使用していなくても、両方のswfsでそのクラスがコンパイルされることに注意してください。残念ながら、fl.* クラスはインターフェイスを実装していないため、実装の代わりにインターフェイスに入力することはできません。可能であれば、インターフェースのみがコンパイルされ、実装よりもはるかに小さくなります。これについては大したことではありません。おそらく数キロバイトしか追加されないでしょうが、長期的には合計されます. ただ注意してください;)

于 2008-09-19T18:01:34.410 に答える