我有一个Flex应用程序,它从CS3加载SWF。加载的SWF包含一个名为“myText”的文本输入。我可以在SWFLoader.content中看到这个没有问题,但我不知道我应该在我的Flex应用程序中处理它的类型。我认为flex文档涵盖了这一点,但我只能找到如何与另一个Flex SWF进行交互。
Flex调试器告诉我它的类型是fl.controls.TextInput,这是有道理的。但是FlexBuilder似乎并不了解这个类。虽然Flash和Flex都使用AS3,但Flex有一个全新的GUI类库。我认为它也有所有的Flash课程,但我无法让它知道任何fl。***包。
答案 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,但从长远来看它会加起来。只是抬头;)