to post messages and comments.

Кто нибудь делал или встречал уже реализацию "правильного" drag & drop в списках во флексе? Ну чтобы при элемент вытягивался из списка и освобождалось место под drop?

Потыкав стандартный список с раскладкой, порываюсь написать кастомный список (благо по тз в списке всего до 30 элементов и нету скролла)

все, отстрелялся, все довольны. теперь с чистой совестью можно уходить в отпуск. С одной строны и здорово, давно не был в отпуске (с прошлого августа), буду отдыхать 4-е недели. Но с другой, оставлять проект на месяц без присмотра чревато, но буду надеятся на лучшее.

Делаем нормальный errorSkin от SparkSkin добавлением
[Bindable]
public var target:SkinnableComponent;

override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
if (!target) return;

super.updateDisplayList(unscaledWidth, unscaledHeight);

width = target.width;
height = target.height;
}

сподобился — скачал 4 флекс, исключительно из-за Spinner :) Пересобрал малюсенький проектик, сделал все как в мануалах. Собралось, загружаю — хуй. Выдает ошибку 2046, полез смотреть че за зверь. Оказалось, что для сдк под линуксом еще какие-то либы надо иметь обязательно и ваще "Сама, дура, виновата".
Идете вы нахуй, адобы, с таким подходом.

Вчера ради развлечения решил поковырять flex tour и может чему то научится. Первое что пришло на ум это локализация, раньше делал это только раз и то давно. Сделал две папки с локалями, прописал локали компилятору, все заработало и подхватилось на ура. НО строчка resourceManagel.localeChain = ['ru_RU'] не хочет срабатывать хоть убей. Поменял локали местами и все стало на русском, но уже localeChain = ['en_US'] не срабатывает. Перерыл весь интернет, пересмотрел кучу туториалов, я делал все верно или все таки не все :(

spark.components.ButtonBar строка 244 — оператор подергивания ? pastie.org Вот не понимаю я этого, хотите сделать force reset ну сделайте метод и назовите соответственно будет читабельнее или я чего то не понимаю ?

Помни s:RichText это зло! Не используй его в рендерерах!
Так же будь внимателен — его очень любит Flash Catalyst !
Используй s:Label он хороший.
Если тебе нужно сложное форматирование, попробуй сделать свой велик с использованием TLF!

делал скин для ТекстАреа, добавлял BitmapImage в качестве бекграунда,.. два часа искал в чем глюк, картинка "множилась" в высоту... оказалось перепутал высоту и ширину в scale9Grid... будьте внимательны, не работайте больше 6 часов в день.

spark *skins *вопросы у s:List есть стиль alternatingItemColors:Array (чтобы сделать зебру из листа). Если у рендерера указать autoDrawBackground=false то счастья в виде зебры нет.
Как сделать зебру, еще круче как узнать что рендерер имеет "альтернативный" цвет?

Таки процесс скиннования и создания компонентов значительно улучшен и упрощен в во Flex4. Прежде всего благодаря FXG, dataGroup и новых стейтов. То что раньше создавалось и скиновалост за пару дней во Flex 3, во Flex 4 можно сделать за день. Например, необходимо было реализовать компонент выбора друзей для приложения в ВКонтакте, подобный оригинальному. На Flex 3 я бы делал это пару дней + очень громко матерился бы. Но во Flex 4 все по-другом, порой даже приятно было. Результат работы: оригинал dl.dropbox.com , компонент который создал за день (~10 часов) dl.dropbox.com — думаю результат хороший :)

Two-way data binding – очень классная штука. Но зачастую работает не так как ожидается, особенно когда данные подгружаются асинхронно. Вообщем использовать надо очень аккуратно...

Сделал мегасложный ItemRenderer с кучей стеййтов и транзишинов для листа, который тестировал на 2-3 элементах (очень сложно создать фейковые data items). Затем таки затулил в лист коллекцию побольше ~30 item'ов и понял что мой ItemRenderer глючит при механизме виртуализации лейаута. Так как времени на исправление глюков уже нет, я просто отключил useVirtualLayout="false" – и все заработало красиво. Теперь меня грызет вопрос на каком количестве item'ов вся эта красота начнет тормозить... У кого-то есть опыт в этом деле?

а в спарке стили уже не наследуются? или как они это делают? В компоненте контейнере я выставляю стиль "color" и он применяется ко всем текстовкам, включая айтемрендереры, но если я выставляю свой стиль "myStyle" то он не применяется. Где я гоню?

Не пойму, в DataGroup в качестве dataProvider можно скармливать коллекцию визуальных элементов, при условии что визуальный элемент должен быть is IVisualElement && is DisplayObject. Так вот из-за второй проверки не возможно добавить графические примитивы (напр. s:Rect )в качестве data item. Это провтык в SDK или это специально сделано? Кто-то сталкивался с этим?

в флекс 2,3 дергая метод IStyleManager.getStyleDeclaration чтобы получить стили для компонета какого класса можно было указать просто имя класса
IStyleManager.getStyleDeclaration('Button');
теперь обязательно нужно указывать полное имя класса включая пакадж
IStyleManager.getStyleDeclaration('spark.components.Button');

Интересно, я один такой урод, что в результате measurement'а чаще всего получаю не те результаты, что ожидаю? Вот пытаюсь понять, как замутить RichEditableText точно по ширине вводимого текста, и при этом включить такое поле в процесс measurement'а, и не могу :( Ну и сорри, что достал жалобами. День такой, а пишу я обычно что думаю. Хотя совсем экстремистские мысли все-таки фильтрую.

Извлечь содержание буфера обмена, вставленного в RichEditableText, оказалось не совсем тривиально :( PasteOperation, передаваемая через TextOperationEvent инкапсулирует информацию о вставленных данных в поле типа TextScrap, все полезные поля которого "закрыты" пространством имен tlf_internal. Всякие примеры и best practices на этот счет отсутствуют. В итоге найденное решение выглядело так: insertedText = TextClipboard.tlf_internal::createPlainTextExportString(pasteOperation.textScrap); Вот они плюсы и минусы гибкости Text Layout Framework. Возможностей стало больше, но пользоваться ими стало сложнее :(

Не понимаю, как работает measurement для MXML item renderer'ов, отнаследованный от spark.components.supportClasses.ItemRenderer. Пока не написал метод measure и не указал в нем жестко, на основе разметки, как считать, ничего не считалось :( Вернее, иногда считалось, иногда — нет. Принцип был непонятен :(