Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 26.04.2012, 19:35
ikozlov вне форума Посмотреть профиль Отправить личное сообщение для ikozlov Найти все сообщения от ikozlov
  № 1  
Ответить с цитированием
ikozlov

Регистрация: Apr 2010
Сообщений: 72
По умолчанию MXML и AS3

Доброго времени суток.
Раньше писал на AS3, но никогда не затрагивал MXML т.к. UI делался всегда в Flash CS. А сейчас уперся в то, что надо поддерживать UI и код в одном месте. Выбрал Flash Builder.
И сходу уперся в 2е вещи
1. В MXML хотелось бы "нарисовать" только UI, а обработчики событий вынести в класс на AS3
2. Скомпилированная SWF несет с собой ряд других SWF библиотек, которые мне не нудны(и изрядно увеличивают вес приложения)

Заранее спасибо!

Старый 26.04.2012, 19:52
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 2  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
MXML это шаблон, из него получается AS3 и он, в свою очередь основывается на AS3. Например, если у вас есть AS3 класс example/Foo.as и вы создали Bar.mxml такой, что:
Код:
<components:Foo xmlns:components="example.*" />
то в Bar.mxml вам будут доступны методы Foo, точно так же, как если бы вы просто унаследовались от этого класса (за очень небольшим исключением - сгенерированый код, например, увидев, что класс наследуется от UIComponent переопределит в нем moduleFactory свойство). Но это мелочи.
Другой вариант - можно в теге <Script/> указывать source="file.as" аттрибут, и это будет работать как include, но лучше так не делать изза того, что редакторы такой подход плохо понимают.
В принципе вы точно так же можете унаследовать класс от класса созданного в MXML файле, но лучше этого не делать, потому что MXML добавляет кучу сгенерированных методов и работать с ними в классе-наследнике очень проблематично.

Так же, компоненты по задумке авторов, задуманы так, чтобы им можно было делать скины не меняя их самих. Но нет хороших инструментов для того, чтобы это делать. Да и вообще очень муторно.
__________________
Hell is the possibility of sanity

Старый 26.04.2012, 20:01
ikozlov вне форума Посмотреть профиль Отправить личное сообщение для ikozlov Найти все сообщения от ikozlov
  № 3  
Ответить с цитированием
ikozlov

Регистрация: Apr 2010
Сообщений: 72
А можно попросить простенький пример, как можно навесить обработчик на кнопку, которая создана в mxml, а обработчик находился в .as3
из вышеописанного общая теория понятна, но вот как обратиться к объекту?

Добавлено через 18 минут
И очень важен момент с доп либами т.к. вес очень велик

Старый 26.04.2012, 20:40
sstotenkopf вне форума Посмотреть профиль Отправить личное сообщение для sstotenkopf Найти все сообщения от sstotenkopf
  № 4  
Ответить с цитированием
sstotenkopf
 
Аватар для sstotenkopf

Регистрация: Aug 2010
Адрес: Саратов
Сообщений: 185
установите айди для объекта, по нему и обращайтесь

Старый 26.04.2012, 20:42
Jewelz вне форума Посмотреть профиль Отправить личное сообщение для Jewelz Найти все сообщения от Jewelz
  № 5  
Ответить с цитированием
Jewelz
 
Аватар для Jewelz

Регистрация: Aug 2008
Адрес: Рязань
Сообщений: 723
Код AS3:
<mx:Button click="doSearch(event)" label="Search" right="10" top="10"/>
<mx:Script>
	<![CDATA[			
		private function doSearch(e:MouseEvent):void
		{
 
		}			
	]]>
</mx:Script>
__________________
low +

Старый 26.04.2012, 20:55
ikozlov вне форума Посмотреть профиль Отправить личное сообщение для ikozlov Найти все сообщения от ikozlov
  № 6  
Ответить с цитированием
ikozlov

Регистрация: Apr 2010
Сообщений: 72
Цитата:
Сообщение от Jewelz Посмотреть сообщение
Код AS3:
<mx:Button click="doSearch(event)" label="Search" right="10" top="10"/>
<mx:Script>
	<![CDATA[			
		private function doSearch(e:MouseEvent):void
		{
 
		}			
	]]>
</mx:Script>
ну такой вариант мне не подходит так как есть необходимость в отдельном файле .as3 держать все обработчики

Добавлено через 1 минуту
Цитата:
Сообщение от sstotenkopf Посмотреть сообщение
установите айди для объекта, по нему и обращайтесь
так в этом то и вопрос - как обратиться? Предположим у меня есть mxml где описан объект с id = newButton
Что нужно указать в mxml для того чтобы класс подгрузился и можно было бы навешивать обработчики и как должен выглядеть обработчик?

Старый 26.04.2012, 22:43
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 7  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
В прикрепленном примере (сори за то, что Flex 3.2, нет под рукой ничего более) три варианта реализации того, что Вы хотите. Третий вариант (inline) самый ужасный и использовать его не стоит, это однозначно. Вообще из-за того Flex/Flash builder не делает это за нас писать код становится довольно сложно и самое печальное кода становится в разы больше. Немного выручают скины во Flex 4.0 и выше. Которые своего рода тоже codeBehind. То есть если вы так сильно противитесь кода внутри mxml файлов, то скины это лучшее из возможных вариантов (примеров в интернете предостаточно). И хотелось бы услышать хотябы одну внятную причину не писать код в mxml - е? Если что не так, то прошу поправить.
Вложения
Тип файла: zip TestProject.zip (15.4 Кб, 80 просмотров)
__________________
http://www.chessmax.ru


Последний раз редактировалось Inet_PC; 02.08.2013 в 09:42.
Старый 26.04.2012, 22:47
Inet_PC вне форума Посмотреть профиль Отправить личное сообщение для Inet_PC Посетить домашнюю страницу Inet_PC Найти все сообщения от Inet_PC
  № 8  
Ответить с цитированием
Inet_PC
 
Аватар для Inet_PC

Регистрация: Feb 2009
Адрес: Гы...поди, найди!
Сообщений: 853
Записей в блоге: 1
На самом деле так легко только в простом приведенном примере. Беда в том, что не всегда можно точно сказать когда flex создаст компонент и мы получим ссылку на него. Flex не создает все сразу, например если кнопка объявлена в каком-то стейте, то ссылку мы не получим до тех пор, пока компонент не войдет в это состояние.
__________________
http://www.chessmax.ru

Старый 26.04.2012, 23:01
ikozlov вне форума Посмотреть профиль Отправить личное сообщение для ikozlov Найти все сообщения от ikozlov
  № 9  
Ответить с цитированием
ikozlov

Регистрация: Apr 2010
Сообщений: 72
Цитата:
И хотелось бы услышать хотябы одну внятную причину не писать код в mxml - е?
Да нету адекватной причины - просто хотелось разнести и небыло понимания что будут проблемы с биндингом такие серьезные.
На самом деле просто сделаю другой вид абстракции. спасибо, все стало более менее ясно.

Создать новую тему Ответ Часовой пояс GMT +4, время: 05:58.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 05:58.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.