如何从Flex App读取Flash SWF中文本输入的值?

时间:2008-09-18 20:16:25

标签: flex flash actionscript-3 cs3

我有一个Flex应用程序,它从CS3加载SWF。加载的SWF包含一个名为“myText”的文本输入。我可以在SWFLoader.content中看到这个没有问题,但我不知道我应该在我的Flex应用程序中处理它的类型。我认为flex文档涵盖了这一点,但我只能找到如何与另一个Flex SWF进行交互。

Flex调试器告诉我它的类型是fl.controls.TextInput,这是有道理的。但是FlexBuilder似乎并不了解这个类。虽然Flash和Flex都使用AS3,但Flex有一个全新的GUI类库。我认为它也有所有的Flash课程,但我无法让它知道任何fl。***包。

3 个答案:

答案 0 :(得分:2)

类的fl.*层次结构仅限Flash CS3。它是Flash Components 3库(我相信它被称为,我可能是错的)。但是,您不需要该类来处理该对象。只要您可以在代码中获得对它的引用,您可以将引用分配给无类型的变量并始终使用它:

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,因为它只附带该应用程序。

答案 1 :(得分:0)

Flex和Flash SWF基本相同,只是使用不同的工具构建。我不确定他们是否共享相同的组件库,但基于包名称,我猜他们至少大部分都是。

如果它是普通的文本输入,那么我猜它是mx.controls.TextInput的一个实例。

答案 2 :(得分:0)

请记住,如果你像Theo所说的那样并用正确的类型引用它,它将在swfs中编译该类,即使你没有在第一个中使用它。不幸的是,fl。*类没有实现任何接口,所以你不能将它们键入接口而不是实现。如果可以的话,只会编译接口,这比实现要小得多。对于这个它不会是一个大问题,它可能只会增加几个kb,但从长远来看它会加起来。只是抬头;)