![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2010
Сообщений: 72
|
Доброго времени суток.
Раньше писал на AS3, но никогда не затрагивал MXML т.к. UI делался всегда в Flash CS. А сейчас уперся в то, что надо поддерживать UI и код в одном месте. Выбрал Flash Builder. И сходу уперся в 2е вещи 1. В MXML хотелось бы "нарисовать" только UI, а обработчики событий вынести в класс на AS3 2. Скомпилированная SWF несет с собой ряд других SWF библиотек, которые мне не нудны(и изрядно увеличивают вес приложения) Заранее спасибо! |
|
|||||
|
Modus ponens
|
MXML это шаблон, из него получается AS3 и он, в свою очередь основывается на AS3. Например, если у вас есть AS3 класс example/Foo.as и вы создали Bar.mxml такой, что:
то в Bar.mxml вам будут доступны методы Foo, точно так же, как если бы вы просто унаследовались от этого класса (за очень небольшим исключением - сгенерированый код, например, увидев, что класс наследуется от UIComponent переопределит в нем moduleFactory свойство). Но это мелочи. Другой вариант - можно в теге <Script/> указывать source="file.as" аттрибут, и это будет работать как include, но лучше так не делать изза того, что редакторы такой подход плохо понимают. В принципе вы точно так же можете унаследовать класс от класса созданного в MXML файле, но лучше этого не делать, потому что MXML добавляет кучу сгенерированных методов и работать с ними в классе-наследнике очень проблематично. Так же, компоненты по задумке авторов, задуманы так, чтобы им можно было делать скины не меняя их самих. Но нет хороших инструментов для того, чтобы это делать. Да и вообще очень муторно.
__________________
Hell is the possibility of sanity |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 72
|
А можно попросить простенький пример, как можно навесить обработчик на кнопку, которая создана в mxml, а обработчик находился в .as3
из вышеописанного общая теория понятна, но вот как обратиться к объекту? Добавлено через 18 минут И очень важен момент с доп либами т.к. вес очень велик |
|
|||||
|
Регистрация: Aug 2010
Адрес: Саратов
Сообщений: 185
|
установите айди для объекта, по нему и обращайтесь
|
|
|||||
|
Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
|
__________________
low + |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 72
|
Цитата:
Добавлено через 1 минуту так в этом то и вопрос - как обратиться? Предположим у меня есть mxml где описан объект с id = newButton Что нужно указать в mxml для того чтобы класс подгрузился и можно было бы навешивать обработчики и как должен выглядеть обработчик? |
|
|||||
|
В прикрепленном примере (сори за то, что Flex 3.2, нет под рукой ничего более) три варианта реализации того, что Вы хотите. Третий вариант (inline) самый ужасный и использовать его не стоит, это однозначно. Вообще из-за того Flex/Flash builder не делает это за нас писать код становится довольно сложно и самое печальное кода становится в разы больше. Немного выручают скины во Flex 4.0 и выше. Которые своего рода тоже codeBehind. То есть если вы так сильно противитесь кода внутри mxml файлов, то скины это лучшее из возможных вариантов (примеров в интернете предостаточно). И хотелось бы услышать хотябы одну внятную причину не писать код в mxml - е? Если что не так, то прошу поправить.
__________________
http://www.chessmax.ru Последний раз редактировалось Inet_PC; 02.08.2013 в 09:42. |
|
|||||
|
На самом деле так легко только в простом приведенном примере. Беда в том, что не всегда можно точно сказать когда flex создаст компонент и мы получим ссылку на него. Flex не создает все сразу, например если кнопка объявлена в каком-то стейте, то ссылку мы не получим до тех пор, пока компонент не войдет в это состояние.
__________________
http://www.chessmax.ru |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 72
|
Цитата:
На самом деле просто сделаю другой вид абстракции. спасибо, все стало более менее ясно. |
![]() |
![]() |
Часовой пояс GMT +4, время: 05:58. |
|
|
« Предыдущая тема | Следующая тема » |
|
|