Archive for the ‘flex framework’ Category
Thursday, October 15th, 2009
UPD: баг пофиксили, испарвление будет в новой версии, УРА!
На днях пришла необходимость попробовать перенести библиотеки с flex sdk 3.2 на flex sdk 4. Заодно повтыкать в Flash Builder 4 и различные радости которые нам принес Gumbo.
Все было хорошо и ничто не предвещало беды ). После создания проекта компилятор сразу начал ругаться. “Почему бы и нет” – подумал я, ведь различия в сдк большие. Начал выяснять почему.
Первым сюрпризом было то, что он ругался на mxml класс, который обращался к AS классу лежащему в том же пакете. “Едить колотить, какая та лажа” – подумал я. И волевым движением руки добавил в mxml импорт, этого нужного класса.
Read the rest of this entry »
Posted in ActionScript 3.0, Flash Builder 4, Flex, flex framework, Gumbo, mxml, Mаразмы нашего городка | 3 Comments »
Sunday, September 6th, 2009
Все “знают” или покрайней мере слышали, что флексовый байндинг не работает в ActionScript 3 проектах, или слышали что он работает, но при этом занимает много места. Из за этого было написано, некоторое количество велосипедов(не мной — другими людьми, если поискать то решения 3 точно можно найти).
Но стороние решения — это плохо, у нас теряется связь с flex проектами.
Года полтора назад передомной встала задача, использовать одни и теже классы в AS3 проекте и во flex проекте, а т.к. большая часть этих классов была обычными байндабл VO, то приходилось в AS3 проекте просто вырезать метатег [Bindable] или попросту делать клонов нужных VO. Благо проект был совсем небольшим и на эти неудобства можно было закрыть глаза.
На днях я таки решил снова попробовать подключить байндинг в AS3 проект, все получилось и на радость мне все оказалось очень хорошо — flexframework доработали и убрали лишние зависимости, теперь флешка с включенным байндингом занимает около 5 кб (релиз версия)!
вот простой пример кода:
package {
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.MouseEvent;
import mx.binding.utils.BindingUtils;
[SWF(backgroundColor="#ffffff")]
public class DataBindingSample extends Sprite
{
[Bindable]
public var stageY:Number = 0;
[Bindable]
public var stageX:Number = 0;
private var circle:Sprite;
public function DataBindingSample()
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
circle = new Sprite();
circle.graphics.beginFill(0x55aaFF,1);
circle.graphics.drawCircle(0,0,10);
circle.graphics.endFill();
addChild(circle);
BindingUtils.bindProperty(circle,"x", this, "stageX");
BindingUtils.bindProperty(circle,"y", this, "stageY");
stage.addEventListener(MouseEvent.MOUSE_MOVE, changePosition);
}
protected function changePosition(event: MouseEvent): void
{
stageX = event.stageX;
stageY = event.stageY;
}
}
} |
package {
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.MouseEvent;
import mx.binding.utils.BindingUtils;
[SWF(backgroundColor="#ffffff")]
public class DataBindingSample extends Sprite
{
[Bindable]
public var stageY:Number = 0;
[Bindable]
public var stageX:Number = 0;
private var circle:Sprite;
public function DataBindingSample()
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
circle = new Sprite();
circle.graphics.beginFill(0x55aaFF,1);
circle.graphics.drawCircle(0,0,10);
circle.graphics.endFill();
addChild(circle);
BindingUtils.bindProperty(circle,"x", this, "stageX");
BindingUtils.bindProperty(circle,"y", this, "stageY");
stage.addEventListener(MouseEvent.MOUSE_MOVE, changePosition);
}
protected function changePosition(event: MouseEvent): void
{
stageX = event.stageX;
stageY = event.stageY;
}
}
}
Скомпилированый пример:
Flex Data Binding in AS3 project sample. You need to install adobe flash player 10 to view this content
Всем удачного кодирования!
Posted in ActionScript 3.0, Flex, Flex Builder 3, flex framework | 5 Comments »
Monday, June 22nd, 2009
Все наверное слышали и знают о Flex Component Kit для Flash CS3 и о том как его использовать его для скинования.
В кратце действия очень простые — вашим клипам которые вы желаете использовать в качестве скина данный экстеншин проставляет базовым классом mx.flash.UIMovieClip, который “почти как” UIComponent.
Штука хорошая, компоненты работают с ней хорошо, есть возможность задавать стейты у скина как ключевые кадры у мувиклипа, но есть одно но. UIMovieClip имеет такой код:
public function UIMovieClip(){
validateMeasuredSizeFlag = true;
_measuredMinHeight = 0;
_measuredMinWidth = 0;
...........
super();
addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
} |
public function UIMovieClip(){
validateMeasuredSizeFlag = true;
_measuredMinHeight = 0;
_measuredMinWidth = 0;
...........
super();
addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
}
т.е. он всегда(!) подписан и слушает событие Event.ENTER_FRAME и метод обрабатывающий его довольно “большой”. А это уже прямое покушение на производительность — несколько таких скинов еще нормально, а вот сильно заскиновнное приложение может пострадать. На чем я и попался, выставил скин для редереров в чартинге.
Так что будте осторожны при использовании Flex Component Kit в скиновании.
Удачи!
Posted in ActionScript 3.0, Effective work, Flex, flex framework, Skinning | 5 Comments »
Sunday, May 10th, 2009
Недавно встала задача найти алгоритм как сделать контрастный текст на фоне произвольного цвета.
В начале я поэксперементировал с HSL и HSB представлением цвета. Для HSB я нашел алгорим на ActionScript 1, экспортнул его, но он оказался глючным. Поискав далее я нашел класс HSBColor от Adobe на ActionScript3. Его нет в 3 flexframework и как я понимаю это запчасть от Gumbo (Flex 4). Работает он хорошо, но не решает нужной мне задачи: в синих оттенках текст не контрастный.
Затем в чате UAFPUG мне посоветовал Nicolas Prof пример от Lee Brimelow, пример работал отлично, но был написан на ActionScript 2 и использовал класс ColorMatrix от Quasimondo. Я было уже совсем расстроился, но Татьяна Белая быстренько портнула класс ColorMatrix на ActionScript 3.0 и вместе с ним пример.
Я немного изменил пример, можно полистать, как по мне работает на отлично:
Your browser does not support iframes.
Пример контрастного текста отдельной страницей
Исходники по правой кнопке мыши или в архиве.
Удачи!
Posted in ActionScript 2.0, ActionScript 3.0, Colors, Flex, flex framework | 8 Comments »
Wednesday, December 17th, 2008
Все слышали о выходе очередного обновления Flex Builder 3.0.2 и Flex sdk 3.2
Моя история посвещена очередной раз индусам, разработчикам билдера. Я досих пор не могу понять что ими движет, пишут клевые продвинутые вещи, а на мелочах запарываются.
У меня 2 машины, где я обновлял билдер на обоих было продемонстрировано различное нелогичное поведение:
1-я машина. Апдейтер прописал то, что у меня установлено всего 2 sdk, 2.0.1 и 3.2.0 Естественно проекты перестали компилится т.к писались на sdk 3.0.0, пришлось ее подключать вручную, в процессе подключения я ее нашел в стандартной папке с sdk. ее просто “забыли” подключить.
2-я машина. Апдейтер я запустил давно и забыл о его запуске. Затем я таки решил посмотреть на сдк 3.2, но его не обнаружил. подумал что еще не апдейтил и запустил адоб апдейтер, он сказал, что у меня все последних версий! Полез папку сдк и нашел там заветную сдк 3.2. Как объяснение я могу лишь сказать, что я на этой машине баловался с Gumbo и ставил сдк 4. После нажатия кнопки “Reset sdk list” я увидел список из sdk 2.0.1, 3.0.0 и 3.2.0.
В связи с этим возникают вопросы, почему на первой машине все оно потеряло 3.0 но сразу увидело sdk 3.2, а на второй машине не увидело 3.2? Тяжело что ли проанализировать списочек из 3х пунктов?
Затем на одной из машин стоит русская винда, и апдейтер не спрашивая все “русифицировал” дебильным переводом. Что за фигня? вообще как могут быть ошибки в программировании на русском, когда все на английском? или Адоб купил часть 1C ?
UPD: вернуть английский можно добавив в eclipse.ini строки
-Duser.language=en
-Duser.country=US
Следующий пункт: после установки апдейтов полностью отваливаються старые AIR приложения, run не запускается и невыдает никаких ошибок, просто проваливаемся в пустоту, дебаг выдает непонятную фразу:
Process terminated without establishing connection to debugger.
Command:
“C:\Program Files\Adobe\Flex Builder 3 Plug-in\sdks\3.2.0\bin\adl.exe” D:\Local\MyApp\bin-debug\MyApp-app.xml D:\Local\MyApp\bin-debug
Output from command:
error while loading initial content
Я минут 15 выдумывал почему так, оказалось, что апдейт принес нам AIR 1.5 и посему мы должны в нашем файле MyApp-app.xml заменить цифиру в строке
<application xmlns="http://ns.adobe.com/air/application/1.1">
на
<application xmlns="http://ns.adobe.com/air/application/1.5">
Почему нельзя сделать внятное предупреждение/сообщение, если это настолько важно?!
Перейдем к более высоким материям.
Если стоит профешинал версия билдера, то к ней в бонус идут Data Visualization Components вместе с исходниками. При вводе ключа, автоматом идет распаковка их исходников в папочку с сдк. Но после апдейта вы никак не обнаружите новых исходников Data Visualization Components в папке с sdk 3.2.0! Их просто никто не распаковывает. Хорошо хоть есть шаманский способ достать их.
Я не заглядывал в исходники AdvancedDataGrid, но чартинги они практически не трогали (я видел только переделку для подержки модульности и загрузки приложения в приложение, если я правильно понимаю строки systemManager.getSandboxRoot()…, в старой версии было просто systemManager…). Ядро чартингов ChartBase, ох как стоило бы отрефакторить!
Недавно на баше была супер цитата:
вот зашел на хакер.ру, в граза бросилась фраза:
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете…
Удачи в апдейтах!
Posted in Flex, Flex Builder 2, Flex Builder 3, flex framework, Mаразмы нашего городка | 2 Comments »