Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Объясните Code Behind (http://www.flasher.ru/forum/showthread.php?t=146440)

Jackson 08.11.2010 13:42

Объясните Code Behind
 
Всем привет! Объясните, пожалуйста, как сделать этот самый Behind!!! Только не отсылайте меня к англоязычной литературе, читал, но до конца не понятно... В рунете все,что нашел, перечитал, а результата нет:(
Кто может рассказать об этом чуде программирования на уровне физкультурника младших классов?

alatar 08.11.2010 20:47

Сама идея простая: отделить код (AS) от разметки (mxml). Как это сделать?
Способ 1. Создается базовый as класс (например MyComponentBase.as), который наследуется от класса, который вы бы использовали как базовый для mxml-компонента. mxml-компонент (MyComponent.mxml), в свою очередь, создается на базе MyComponent.as. В mxml-компоненте расставляются необходимые контролы. Все контролы, которые используются в коде, должны иметь id. В базовом классе (MyComponentBase.as) для этих контролов создаются публичные переменные соответсвующего типа. Весь код пишется в myComponentBase.as.
Способ 2. Создается as класс (от чего наследоваться неважно, хоть вообще не от чего не наследоваться) MyComponentMediator.as (например), который в конструктор принимает в качестве параметра ссылку на экземпляр MyComponent.mxml. По событию creationComplete (например) в MyComponent.mxml, создаете экземпляр MyComponentMediator.as и в конструктор передаете ссылку на свой компонент:
Код AS3:

private var _mediator:MyComponentMediator = new MyComponentMediator(this);

Весь код пишется в MyComponentMediator.as обращение к контролам осуществляется через ссылку на экземпяр MyComponent.

Ivanaka 08.11.2010 23:38

alatar, а какой способ лучше? Я пока понял первый вариант. И еще, какие приемущества у Code Behind кроме удобства?

alatar 09.11.2010 01:22

Цитата:

alatar, а какой способ лучше?
Первый более распространен. Какой удобней, тем и пользуйтесь.
Цитата:

И еще, какие приемущества у Code Behind кроме удобства?
Лучше читабельность кода. Немного проще документировать код. Можно создать свой конструктор. Это так, на вскидку.

wvxvw 09.11.2010 04:03

Вообще это выражение так, не очень, применимо к Флексу... оно происходит от билдеров, я думаю еще со времен Борланда. Т.е. идея была в том, что часть кода пишется машиной, а вот тот, который "сзади" - человеком. Т.е. если вы MXML сами пишете (а не генерите, используя тот же дизайн вью), то как бы кода сзади и нету-то... :) Но это такое, я понимаю, что термин получил более широкое применение.
Честно говоря, инструменты кодогенерации во Флексе пока что на невысоком уровне, так что, если говорить о хорошем тоне, то лучше воздержаться от их использования (т.е. не использовать MXML/DCD впринципе). Конечно, недостаток такого подхода - тяжело оценить пользовательский интерфейс не этапе разработки (но при том, что дизайн вью и так большую часть все равно не показывает, не велика потеря). На первый взгляд может показаться, что прийдется писать больше кода, но с хорошо настроеными шаблонами разница будет небольшой, зато существенный выигрыш при отладке.

Jackson 09.11.2010 13:46

Спасибо!

Ivanaka 09.11.2010 18:34

wvxvw: мне как бывшему html-верстальщику и дизайнеру, mxml близок и понятен. Просто у меня сейчас в паре мхмл-компонентов накопилось очень много as3 кода. Вот и думаю имеет ли смысл разграничивать или пусть как есть.

alatar 09.11.2010 18:48

Цитата:

Вот и думаю имеет ли смысл разграничивать или пусть как есть.
Вас так смутили философские размышления wvxvw?

Ivanaka 09.11.2010 20:59

Цитата:

Сообщение от alatar (Сообщение 948646)
Вас так смутили философские размышления wvxvw?

Просто думаю стоит ли овчинка выделки :umnik2:

alatar 09.11.2010 22:51

Нуууу, если вам нравятся километровые портянки кода с тегами <script>... :)
Попробуйте. Понравится – пользуйтесь, не понравится – не пользуйтесь.


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

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