Сегодня 6 октября, воскресенье ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7275
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
Constantiner's blog
Constantiner's blog
Голосов: 1
Адрес блога: http://riapriority.com/blogs/constantiner.php
Добавлен: 2008-06-12 21:25:08 блограйдером ZaiSL
 

Нестандартный пример произвольных компоновок во Flex 4

2010-05-25 01:52:13 (читать в оригинале)

Довольно продолжительное время я все больше пишу серверный код на Java, а Flex использую от случая к случаю. И все больше по-старинке. Родимый третий Flex. Вернее, бывший родимым, но сейчас его место в моем сердце занято другим. Все-таки надо поддерживать себя в форме и изучать новые вещи. Вот решил больше внимания уделить Flex 4. Который меня и покорил.

Его архитектура, созданная для большей гибкости и возможности использования совместно с дизайнерскими инструментами, типа Flash Catalyst, стала привносить в процесс создания приложений больше забавы.

Сразу прошу прощения за такое странное употребление слов. Дело в том, что, как вы знаете, я больше пишу блогсетевой дневник на корявом английском. Там есть и параллельный сходный пост. Ну вот я и подумал, что лучше попытаться использовать больше русских слов. Чтобы был контраст была явная разница, и не было мне так однообразно. То есть вместо всяких там “лэйаутов” напишу “компоновка". А вместо слова “фан” позволю себе употребить “забава". Хорошо, что хоть не на черногорском пишу… Хм… А ведь это мысль! :)

В общем, теперь у нас многие части отделены друг от друга и вполне могут тесно сотрудничать, оставаясь при этом яркими и независимыми личностями. Таковыми являются, например, тройки друзей в виде групп данных (олицетворением который может являться список, представленный классом List), компоновок (позволяющих визуальным представлениям данных располагаться в требуемом порядке, сохраняя при этом весь тот высокий и торжественный смысл, что был заложен компонентом списка) и рендереров отображалок. Многообразие возможных внешних видов результата, который в приложении, в его программном коде, представлен обычным списком, ограничено лишь скудностью нашего воображения.

Но чтобы расшевелить воображение одних галюциногенных грибов мало. Что толку от волшебных картин, проносящихся перед внутренним взором, если не ясно, что с этим делать? Как пелось в песне:

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

Итак, изучим исходные материалы чтобы во всеоружии приступить к реализации. Начнем с сетевого дневника Эвтима Георгиева, который с такой фамилией работает в Adobe и вполне неплохо специализируется на компоновках. Он сделал отличный пример произвольной компоновки, которую снабдил интересными переходами в виде анимации волшебного движения. Через контекстное примененное к месту меню вы даже можете посмотреть исходные коды примера. Именно он вдохновил меня на подвиги. Также Эвтим написал статейку для официального сайта официальной сетевой площадки Adobe, которая тоже нам очень пригодится. Конечно, все материалы на нерусском наречии, но, как видите, тут мы этот перевес восполняем. Неплохо также побольше узнать про отображалки. Они нам тоже пригодятся.

А в качестве своего примера я решил выбрать нашу солнечную систему и планеты в ней. Вроде как, изобразить нечто такое:

Солнечная система в виде списка с произвольной компоновкой

Солнечная система в виде списка с произвольной компоновкой

Моим искренним желанием является сделать так, чтобы приложение могло общаться с нашим списком, совершенно не зная о тех чудесах, что с ним творятся. И список при этом вел себя соответственно:

XML:

<s:states>
    <mx:State name="radial"/>
    <mx:State name="tile"/>
    <mx:State name="list"/>
</s:states>
<s:List borderVisible="false"
    dataProvider="{new PlanetsData()}"
    itemRenderer="com.riapriority.planetlist.renderer.SolarPlanetRendererImplementation"
    itemRenderer.list="com.riapriority.planetlist.renderer.PlanetDetailsRenderer"
    itemRenderer.tile="com.riapriority.planetlist.renderer.SimplePlanetRenderer">
    <s:layout>
        <layout:SolarPlanetLayout />
    </s:layout>
    <s:layout.tile>
        <s:TileLayout columnWidth="130"
            horizontalAlign="center"
            rowHeight="150"
            verticalAlign="bottom"/>
    </s:layout.tile>
    <s:layout.list>
        <s:VerticalLayout horizontalAlign="contentJustify"/>
    </s:layout.list>
</s:List>

Вдобавок, раз я уже начал забавляться, то стоило бы делать это как следует. То есть добавить больше переходов и волшебного движения. И тут мне пригодилась книжка Чета Хааза, фамилия которого хоть и совсем иноземная, но пишет он по делу. Книжка называется Flex 4 Fun. То есть как раз по теме. Читаем и забавляемся.

Ну а позабавившись и приложив свои идеи в правильном русле, чтобы не прослыть чудаком, я родил такое вот приложение. Там тоже можно посмотреть исходный код через к месту вызванное меню. Вдобавок, можно получить самые последнии версии через Subversion со странички приложения на Google Code.

Такие вот пирожки. Изучайте, критикуйте, предлагайте. Я ж не волшебник, а только учусь. Может, кому-то и будет полезно. Не зря же я тратил время! :) (Хотя тратил-то точно не зря: сам ставил себе задачи, сам выполнял в процессе освоения нового).

Кстати, там же есть модульные тесты, где я попробовал распоследние версии FlexUnit 4 и ASMock, которые теперь уже очень подходят для использования в жизенных ситуациях. И отделение компоновки от самого списка или его отображалки позволяет производить такое тестирование очень легко. Ну, легче :)

Так что пишите в заметках к этому сообщению свои мысли и воплощайте на досуге свои творческие замыслы! Довиђења! :)


Тэги: flex, open, ria, source

 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по количеству голосов (152) в категории «Истории»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.