2008-09-18 22 views
0

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

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

回答

0

Flex和Flash SWF实质上是相同的,只是使用不同的工具构建而成。我不确定他们是否共享相同的组件库,但是基于我猜测它们至少大部分都是这样的软件包名称。

如果这是一个正常的文本输入,那么我会猜测它是mx.controls.TextInput的一个实例。

2

fl.*类的层次结构仅限Flash CS3。这是Flash组件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,因为它只是附带了应用程序。

0

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

相关问题