Apache flex 如何从Flex应用程序读取Flash SWF中输入的文本值?
我有一个Flex应用程序,它从CS3加载SWF。加载的SWF包含一个名为“myText”的文本输入。我可以在SWFLoader.content中看到这一点,没有问题,但我不知道应该在我的Flex应用程序中将其视为什么类型。我原以为flex文档涵盖了这一点,但我只能找到如何与另一个flex SWF交互Apache flex 如何从Flex应用程序读取Flash SWF中输入的文本值?,apache-flex,flash,actionscript-3,cs3,Apache 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类
Flex调试器告诉我它属于fl.controls.TextInput类型,这很有意义。但是FlexBuilder似乎不知道这个类。虽然Flash和Flex都使用AS3,但Flex有一个全新的GUI类库。我认为它也有所有的Flash类,但我无法让它知道任何fl.**软件包。Flex和Flash SWF本质上是相同的,只是使用不同的工具构建。我不确定它们是否共享相同的组件库,但根据包名,我猜它们至少大部分共享相同的组件库
如果它是一个普通的文本输入,那么我猜它是mx.controls.TextInput的一个实例。类的
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,因为它只与该应用程序一起提供。请记住,如果您按照西奥所说的操作并使用正确的类型引用它,它将在两个SWF中编译该类,即使您在第一个SWF中没有使用它。不幸的是,fl.*类没有实现任何接口,因此不能将它们键入接口而不是实现。如果可以,则只编译接口,这比实现小得多。对于这一个,它不会是一个大问题,它可能只会增加几kb,但从长远来看,它会增加。只是一个提醒;)