0

我有一个 Flex 应用程序,它从 CS3 加载 SWF。加载的 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.*层次结构仅适用于 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,因为它仅随该应用程序提供。

于 2008-09-19T15:46:08.247 回答
0

请记住,如果您按照 Theo 所说的操作并使用正确的类型引用它,它将在两个 swf 中编译该类,即使您没有在第一个中使用它。不幸的是, fl.* 类没有实现任何接口,因此您不能将它们键入接口而不是实现。如果可以的话,只有接口会被编译,这比实现要小得多。对于这个来说,这没什么大不了的,它可能只会增加几个 kb,但从长远来看,它会增加。只是提个醒;)

于 2008-09-19T18:01:34.410 回答
0

Flex 和 Flash SWF 本质上是相同的,只是使用不同的工具构建。我不确定它们是否共享相同的组件库,但根据包名,我猜它们至少大部分都是这样。

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

于 2008-09-18T20:26:55.733 回答