Как прочитать значение ввода текста во Flash SWF из приложения Flex? - PullRequest
0 голосов
/ 19 сентября 2008

У меня есть приложение Flex, которое загружает SWF из CS3. Загруженный SWF-файл содержит текстовый ввод с именем «myText». Я вижу это в SWFLoader.content без проблем, но я не знаю, к какому типу я должен относиться, как в моем приложении Flex. Я думал, что гибкие документы покрывают это, но я могу только найти, как взаимодействовать с другим Flex SWF.

Отладчик Flex сообщает, что он имеет тип fl.controls.TextInput, что имеет смысл. Но FlexBuilder, похоже, не знает этого класса. В то время как Flash и Flex используют AS3, Flex имеет совершенно новую библиотеку классов GUI. Я думал, что у него также есть все классы Flash, но я не могу узнать о ЛЮБЫХ пакетах fl. ***.

Ответы [ 3 ]

2 голосов
/ 19 сентября 2008

Иерархия 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, потому что он поставляется только с этим приложением.

0 голосов
/ 19 сентября 2008

Помните, что если вы сделаете так, как сказал Тео, и укажете правильный тип, он скомпилирует этот класс в обоих swfs, даже если вы не используете его в первом. К сожалению, классы fl. * Не реализуют никаких интерфейсов, поэтому вы не можете вводить их в интерфейс вместо реализации. Если бы вы могли, только интерфейс был бы скомпилирован, что намного меньше, чем реализация. Для этого это не будет иметь большого значения, вероятно, он собирается добавить всего пару килобайт, но в конечном итоге это добавляет. Просто на голову;)

0 голосов
/ 19 сентября 2008

Flex и Flash SWFs по сути одинаковы, только построены с использованием различных инструментов. Я не уверен, что они используют одни и те же библиотеки компонентов, но, основываясь на именах пакетов, я предполагаю, что они, по крайней мере, в основном делают.

Если это обычный ввод текста, то я думаю, что это экземпляр mx.controls.TextInput.

...