Como ler o valor de uma entrada de texto em um Flash SWF de um aplicativo Flex?

Eu tenho um aplicativo Flex, que carrega um SWF do CS3. O SWF carregado contém uma entrada de texto chamada "myText". Eu posso ver isso no SWFLoader.content sem problemas, mas eu não sei o tipo que eu deveria estar tratando como no meu Flex App. Eu pensei que os documentos flexíveis cobriam isso, mas eu só posso descobrir como interagir com outro Flex SWF.

O depurador Flex me diz que é do tipo fl.controls.TextInput, o que faz sentido. Mas o FlexBuilder não parece conhecer essa classe. Enquanto o Flash e o Flex usam o AS3, o Flex possui uma nova biblioteca de classes GUI. Eu pensei que também tinha todas as classes do Flash, mas não consigo saber de todos os pacotes.

0
adicionado editado
Visualizações: 1

3 Respostas

A hierarquia de classes fl. * é somente para Flash CS3. É a biblioteca do Flash Components 3 (acredito que seja chamada, posso estar errada). No entanto, você não precisa que a classe trabalhe com o objeto. Contanto que você possa obter uma referência a ela em seu código, o que parece ter, você pode atribuir a referência a uma variável não tipificada e trabalhar com ela de qualquer maneira:

var textInput : * = getTheTextInput();//insert your own method here

textInput.text = "Lorem ipsum dolor sit amet";

textInput.setSelection(4, 15);

Não há necessidade de saber o tipo de um objeto para interagir com ele. É claro que você perde a verificação de tipos em tempo de compilação, mas isso não é um grande problema, você só precisa ser extremamente cuidadoso.

Se você realmente quiser referenciar o objeto como seu tipo real, a classe em questão está localizada em

Adobe Flash CS3/Configuration/Component Source/ActionScript 3.0/User Interface/fl/controls/TextInput.as

... se você tiver o Flash CS3 instalado, porque ele só é fornecido com esse aplicativo.

0
adicionado

Os SWFs Flex e Flash são essencialmente os mesmos, criados com ferramentas diferentes. Eu não tenho certeza se eles compartilham as mesmas bibliotecas de componentes, mas com base nos nomes dos pacotes, eu acho que pelo menos na maioria das vezes.

Se é uma entrada de texto normal, então eu acho que é uma instância de mx.controls.TextInput.

0
adicionado

Tenha em mente que se você fizer como Theo disse e referenciá-lo com o tipo correto, ele compilará essa classe em ambos os swfs, mesmo que você não esteja usando no primeiro. Infelizmente, as classes fl. * Não implementam nenhuma interface, portanto você não pode digitá-las na interface em vez da implementação. Se você pudesse, apenas a interface seria compilada, o que é muito menor que a implementação. Para este não será um grande problema, provavelmente adicionará apenas um par de kb, mas a longo prazo isso se soma. Apenas um heads up;)

0
adicionado