вторник, декабря 26, 2006
Введение в контейнеры
Использование Flex 2 и AMFPHP
А тем временем вышла бета AMFPHP 1.9, поддерживающая json, xml-rpc, amf3. Сервис-браузер теперь на флексе. Примеры работы с AMFPHP можно скачать на гугловской страничке проекта.
вторник, декабря 19, 2006
воскресенье, декабря 17, 2006
Flex-девелоперы, терпите, ваше время - 2008 год...
- на данный момент прибыльными являются продукты из Creative Suite;
- Acrobat вообще рабочая лошадка;
- LiveCycle является победителем в enterprise-секторе;
- Flash Lite рулит на мобильных девайсах;
- прибылей от Flex и Apollo ожидают в 2007 году.
Поэтому флексеры вольются в мейнстрим только к 2008 году, а значит сейчас самое время учиться.
P.S. Интересно, в России кто-нибудь имеет доходы от этого? Не считая работу с забугорными закзчиками.
Вышла альфа 2d движка Fisix
Примеры:
Mona the Ragdoll
Bike Game
Boxes Demo
Hourglass
Несколько уроков:
Первое Fisix приложение
Работа с Fisix в FlashDevelop
Партиклы
FisixObject
Мануал по Fisix
Думаю, скоро переведу.
Компонент FileUpload
вторник, декабря 12, 2006
Как правильно переносить текст в ячейке DataGrid
Суть проблемы в следующем. Текст в ячейке с атрибутом wordWrap=true будет переноситься в остальных рядах, только если он переносится в первом. Посмотрим на следующий пример. Измените ширину правой колонки Title так, чтобы текст ячейки не требовал переноса, затем перейдите туда и обратно, чтобы обновить вид. При этом, если следующие ряды требуют переноса, то его не будет и текст просто обрежется. Если же текст первой ячейки переносится изначально, то все остальные будут переноситься тоже. То есть никакой wordWrap не поможет...
А поможет нам variableRowHeight = true!
Papervision3D - примеры использования
раз, два, три, четыре и пять (с Flex'ом).
Ссылки по теме:
Страница на OSFlash
Блог разработчиков
Email лист
Исходников пока нет, но обещают в декабре.
Первая часть урока Flex Cairngorm/WebORB Issue Tracker
воскресенье, декабря 10, 2006
Примеры по скинованию Flex-приложений
четверг, декабря 07, 2006
Эмуляция repeat-x/repeat-y для фона Flex-приложения
среда, декабря 06, 2006
Просмотр сгенерированного из MXML-приложения AS кода
вторник, декабря 05, 2006
Использование mx:Metadata для задания стилей компонентов
Давайте взглянем на пример. Здесь расположены два компонента (example 1 и example 2). Это два экземпляра компонента "MXML_Example". Да, выглядят они по разному, но родитель у них один. Каждый "MXML_Example" сожержит mx:Panel, mx:TextArea и mx:Button.
Посмотрим на исходный код компонентов:
<components:MXML_Example width="{(width/2)-20}" left="10" top="80" title="Example 1" styleName="example1" height="200" />
<components:MXML_Example width="{(width/2)-20}" right="10" top="80" title="Example 2" styleName="example2" height="200" />
Разница лишь в атрибуте styleName.
Давайте посмотрим на исходный код компонента "MXML_example". В теге mx:Metadata можно увидеть определения трех стилей.
<mx:Metadata>
[Style(name="panelStyleName", type="String", inherit="no" )]
[Style(name="buttonStyleName", type="String", inherit="no" )]
[Style(name="textAreaStyleName", type="String", inherit="no" )]
</mx:Metadata>
По наступлению события creationComplete эти стили применяются к компонентам внутри "MXML_Example".
private function onCreationComplete() : void
{
panel.styleName = getStyle("panelStyleName");
button.styleName = getStyle("buttonStyleName");
textArea.styleName = getStyle("textAreaStyleName");
}
А вот и сам CSS:
.example1
{
panelStyleName:"panel1";
buttonStyleName:"button1";
textAreaStyleName:"textArea1";
}
.example2
{
panelStyleName:"panel2";
buttonStyleName:"button2";
textAreaStyleName:"textArea2";
}
Можно увидеть, что для запчастей компонентов применены разные стили.
Открыть в новом окне
Посмотреть исходный код
Скачать исходный код
Статья
пятница, декабря 01, 2006
Еще одна реализация paging в DataGrid
четверг, ноября 30, 2006
Поисковые инструменты
Постраничный вывод в DataGrid
Уменьшение размера swf с помощью удаленных библиотек
Накнулся на интересный пост Джеймса Ворда, в котором рассказано, как уменьшить размер выходного swf файла с помощью использования Runtime Shared Libraries (RSL) - удаленных библиотек. Вот перевод.
Flex 2 позволяет загружать эти библиотеки с других доменов. Подразумевается, что приложение будет указывать на какой-нибудь определенный набор библиотек, который браузер будет быстро доставать из кэша. Перед началом необходимо заметить, что это не поддерживается Adobe, хотя команда разработчиков и работает в этом направлении, пока это просто хак. Во-вторых, пока нет нормального централизованного хранилища для RSL- библиотек, они хранятся на моем сервере, который может быть взломан и вместо изначальных библиотек вы получите какие-нибудь опасные компоненты. Несмотря на эти препоны, этот способ удовлетворяет большинство приложений и позволяет значительно уменьшить их размер. Как же это применить?
Мною было создано три библиотеки: малая, средняя и большая. Библиотеки взаимодополняемы, то есть, если необходимо использовать среднюю, то загружать надо малую и среднюю. См. таблицу у автора.
1) Скачайте необходимые SWC для RSL
2) Измените build path проекта
2.1) Если вы компилируете с помощью Ant или командной строки, определите пути к библиотекам следующим образом:
flex2-sdk/bin/mxmlc -external-library-path+=build/framework-2_0_0_a-small.swc,
build/framework-2_0_0_a-medium.swc -runtime-shared-libraries=
http://ws.jamesward.org/framework-2_0_0_a-small.swf,
http://ws.jamesward.org/framework-2_0_0_a-medium.swf-o=
build/testHostedFlexLibs-medium.swf -file-specs=test/testHostedFlexLibs.mxml
2.2) Если вы используете Flex Builder, перейдите в Project -> Properties -> Flex Build Path -> Library Path -> Add SWC -> [добавьте необходимые SWC]. Затем выберите SWC’s RSL URL и нажмите кнопку Edit. Измените Link Type на "Runtime shared library (RSL)", введите правильный URL, уберите галку с "Auto extract checkbox", затем нажмите OK.
2.3) Если вы используете FDS, добавьте SWC в папку flex/user_classes и обновите runtime-shared-libraries соответственно в файле flex-config.xml.
3) Перекомпилируйте приложение (если этого не произошло автоматически) и размер файла значительно уменьшится!
4) Еще одна преграда - приложение будет работать только из интернета, потому что политика безопасности запрещает загружать внешние ресурсы.
среда, ноября 29, 2006
Поиск по коду as и mxml файлов
file:.mxml$ tabnavigator
file:.as$ displayobject
Отсюда
Четыре днюхи за неделю
20 - МК
23 - Дэн Иванов
26 - Рост
27 - мое:)
Всех поздравляю задним числом!
вторник, ноября 21, 2006
Использование data-driven виджетов
Форматирование чисел в AS3
Есть небольшая AS3 библиотека с полезными методами. Одним из них является вывод чисел, форматированных по маске. За это отвечает класс NumberFormat. Маски поддерживают следующие символы:
- 0 - место, заполненное числом или нулем
- # - место, заполненное числом или пробелом
- . - дробный разделитель. Выводится символ точки
или запятой - в зависимости от локали. - , - группировка символов. Выводится символ точки или запятой - в зависимости от
локали.
Рассмотрим следующую маску:
##,###.0000
Если эту маску применить к числам
1.2345
12.345
123.45
1234.5
12345
То они будут отображены в виде
1.2345
12.3450
123.4500
1,234.5000
12,345.0000
Задать маску числу можно следующими способами:
- создать эеземпляр NumberFormat:
var styler:NumberFormat = new NumberFormat("##,###.0000"); - использовать свойство mask:
styler.mask = "##.00";
var styler:NumberFormat = new NumberFormat("#,###,###,###");
trace(styler.format(1));
trace(styler.format(12));
trace(styler.format(123));
trace(styler.format(1234));
styler.mask = "#,###,###,###.0000";
trace(styler.format(12345));
trace(styler.format(123456));
trace(styler.format(1234567));
trace(styler.format(12345678));
trace(styler.format(123456789));
Числа будут выведены в следующем виде:
1
12
123
1,234
12,345.0000
123,456.0000
1,234,567.0000
12,345,678.0000
123,456,789.0000
Разделители и знаки дроби меняются на точки или запятые в зависимости от текущей локали автоматически. Но могут иногда быть ошибки определения локали. В
этом случае локаль можно определить руками, задав, например:
Locale.slanguage = "fr";
Во Франции, в качестве группировки применяются точки, а в качестве дробного разделителя запятые. Насколько я знаю, в России тоже самое, поэтому данную
установку можно использовать (или я ошибаюсь?).
При выполнении примеров не забудьте импортировать необходимые классы:
import ascb.util.NumberFormat;
import ascb.util.Locale;
Отслеживание реального фреймрейта
Установить свой фреймрейт можно с помощью команды компилятора:
mxmlc -default-frame-rate=50 HelloWorld.mxml
Но установка значение в 50 кадров в секунду вовсе не означает, что каждые 20 миллисекунд будет проигран кадр. Разные типы браузера, плеера, операционной системы дают разные результаты. Протестировать реальный фреймрейт можно с помощью следующего небольшого приложения:
<mx:ApplicationВзято у FARATA.
mx="http://www.adobe.com/2006/mxml"
layout="horizontal"
enterFrame="enterFrameHandler()">
<mx:Script>
<!--[CDATA[
var lastTime:int;
public function enterFrameHandler():void {
test.text = String(int(1000/(getTimer()-lastTime)));
lastTime=getTimer();
}
]]>
</mx:Script>
<mx:TextInput id="test" />
</mx:Application>
пятница, ноября 17, 2006
Коллекция уроков по Ruby on Rails
Эли Гринфилд почти закончил свой календарь
понедельник, ноября 13, 2006
Создание FDS Flex приложения с помощью FlashDevelop
вторник, ноября 07, 2006
250 темплейтов для RadRails
После скачивания откройте RadRails, перейдите в меню
Windows > Preferences > Ruby > Editor > Templates, выделите все элементы (ctrl+A), затем удалите их. Потом выберите Import и импортируйте ruby-rr-templates.xml.
Для импорта rhtml темплейтов зайдите в
Rails > Editiors > RHTML Editor > RHTML Templates, повторите туже процедуру и импортируйте rhtml-rr-templates.xml.
Обещано включить эти темплейты в следующий релиз RadRails.
понедельник, ноября 06, 2006
Загружаем эффекты, показанные на MAX 2006
четверг, ноября 02, 2006
Видеоуроки по Flex 2 и Red5
Компонент DisplayShelf
Пример разделен на три блока. Первый, компонент TiltingPane, получает любой элемент и применяет к нему '3d' эффект. Второй, компонент DisplayShelf, использует компонент TiltingPane для отображения элементов вдоль виртуальной полки, из которой можно выбирать элемент.
В примере проиллюстрирурованы:
- матричные трансформации
- graphics API
- маскирование
- манипуляции с битмапом
- темплейтинг
- item renderers
- интерфейс IList
- реализация dataProvider'ов
- анимация
Посмотреть DisplayShelf
Исходник
Загрузить
Отсюда
среда, ноября 01, 2006
Новый формат просмотра исходников Flex-приложения
вторник, октября 31, 2006
Выложены некоторые примеры кода из RIABook
Увеличение производительности Eclipse IDE
Например, для машины с 512 метрами памяти предлагается использовать следующие параметры:
-vmargs -Xms256m -Xmx256m -XX:PermSize=64m -XX:MaxPermSize=64m
А для 1024 -
vmargs -Xms512m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=128m
Оригинал
понедельник, октября 30, 2006
Виджеты, основанные на Menu
четверг, октября 26, 2006
Полнотекстовый поиск по Rails-приложению
1. Откройте командную строку и установите
gem install ferret2. Затем установите плагин acts_as_ferret в папку приложения:
ruby script/plugin install3. Измените модель, соответствующую таблице, по которой должен идти поиск, следующим образом:
svn://projects.jkraemer.net/acts_as_ferret/
tags/stable/acts_as_ferret
class Bug < ActiveRecord::Baseгде :fields - поля для индексации. Если не использовать этот атрибут, то будут проиндексированы все поля.
acts_as_ferret :fields => [ ‘description’]
end
4. Добавьте, например, такой метод:
def searchBugs5. Наконец, можно вызвать этот метод из Flex-приложения с помощью HTTPService.
@bugs= Bug.find_by_contents(params[:query])
render(:xml => @bugs.to_xml)
end
Например, следующий код вернет все bugs, содержащие слово "error" в поле description:
searchBugs.send({query:"error"});
Оттуда
Пример кода Apollo приложения
<applicationwindowmode может быть также systemChrome.
xmlns="http://ns.adobe.com/apollo/application/1.0"
appid="" version="1.0">
<properties>
<name>ApolloHelloWorld</name>
<publisher>Mike Chambers</publisher>
<description></description>
<copyright></copyright>
</properties>
<rootcontent
contenttype="application/x-shokwave-flash"
windowmode="transparent">
ApolloHelloWorld.swf
</rootcontent>
</application>
Все просто и ясно.
И mxml-файла самого приложения ApolloHelloWorld.mxml:
<mx:applicationТоже ничего сложного.
xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
xmlns:apollo="http://www.abode.com/2006/apollo">
<mx:style>
Application
{
background-color:"";
background-image:"";
}
</mx:style>
<apollo:applicationwindow
title="Hello World" layout="absolute"
right="5" left="0" top="0" bottom="5">
<mx:label text="Hello World"
horizontalcenter="0"
verticalcenter="0">
</mx:label>
</apollo:applicationwindow>
</mx:application>
среда, октября 25, 2006
Как прилепить ApplicationControlBar к низу приложения
Посмотреть
Исходник
Скачать
вторник, октября 24, 2006
Открыта вики по RadRails
1) Скачать eclipse.
2) Запустить и перейти в Help | Software Updates | Find and Install | Search for New Features
3) Добавить следующие сайты:
- RDT: http://updatesite.rubypeople.org/release
- RadRails: http://radrails.sourceforge.net/update
- Subclipse (не обязательно): http://subclipse.tigris.org/update_1.0.x
И поискать обновления.
Динамическая загрузка шрифтов
понедельник, октября 23, 2006
DataGrid с фильтрацией
Стеклянный DataGrid
Исходники по правому клику.
среда, октября 18, 2006
Изменение стиля разделителя в заголовке mx:DataGrid
Как изменить или избавится от вертикальных линий в заголовке mx:DataGrid?
Вот простой ответ.
понедельник, октября 16, 2006
Новая статья от Derek Wischusen
воскресенье, октября 15, 2006
Чат Flex2/Red5
среда, октября 11, 2006
Новая статья "Использование текстовых виджетов"
а также правила использования простого и HTML форматированного текста во Flex-приложениях.
вторник, октября 10, 2006
DatGrid: меняем фоновый цвет ряда
1. Создайте новый класс, расширяющий mx.controls.DataGrid. Это может быть как MXML, так и ActionScript файл.
2. Переопределите метод drawRowBackground:
override protected function drawRowBackground
(s:Sprite, rowIndex:int, y:Number, height:Number,
color:uint, dataIndex:int):void
{
// изменяем цвет
color = 0xFF0000;
// вызываем метод родителя
super.drawRowBackground(s,rowIndex,y,
height,color,dataIndex);
}
3. Можете пользоваться.
Внутри drawRowBackground можно тестировать данные. Аргумент dataIndex может быть использован для поиска элемента в dataProvider, соответствующего этому ряду. Например, если необходимо выделить зеленым все ряды с данными больше 1000:
var item:Object = (dataProvider as ArrayCollection).getItemAt(dataIndex);
if( item.quantity > 1000 ) color = 0x00FF00;
Все просто.
Взято у Пента.
понедельник, октября 09, 2006
Поддержка полноэкранного режима плеера в браузере
четверг, октября 05, 2006
Использование swc во FlashDevelop-проектах
жить с ним можно:)
Так вот, чтобы заюзать swc-компоненты во FlashDevelop-проекте, необходимо добавить директиву компилятора типа в файл build.xml в блок compile:
<target name="compile">
<exec executable="${flex2.dir}/${compiler}">
<arg
line="-compiler.include-libraries
${source.dir}/your_file.swc">
...
</arg>
</exec>
</target>
В этом случае компонент your_file.swc находится в папке ${source.dir}.
вторник, октября 03, 2006
Прозрачные Flex-приложения
Чудес никаких - просто добавление в html-файл строки:
AC_FL_RunContent(
...,
"wmode", "transparent"
);
понедельник, октября 02, 2006
Учите Flash, Flex, Apollo, Actionscript 3 и WPF
Последнее время я активно работаю с WPF и Flash. Flash давно является моей любимой платформой для создания интерактивности и анимации для веба. Вся шумиха от Microsoft и Adobe о WPF как о потенциальном убийце Flash так и останется шумихой. Пока эти два бегемота идут вместе во многих областях, Flash не должен беспокоится о конкуренции с WPF.
Основным моментом является то, что Flash и WPF - это удивительные инструменты для создания интерактивности и анимации. Но их конечные продукты сильно отличаются. WPF использует формат XBAP, который может быть прочитан IE. Вообще WPF заточен для создания богатых Windows приложений. Основываясь на своем опыте, могу сказать, что это платформа легка для изучения Flash разработчиками и дизайнерами. Комбинация C#/XAML в WPF похожа на связку Javascript/HTML, с которой знакомы многие веб-разработчики. WPF был разработан с целью достижения разделения визуального дизайна и данных(модели), что достаточно важно для современных приложений.
Причин того, что Flash не будет "убит" WPF, множество. Видео является той областью, где Flash явно доминирует над всеми. Никакая другая технология не может интегрировать видео и анимацию так легко, как это делает Flash. Также виновато само Flash сообщество, которое делает из мухи слона. Вот новости для всех: Microsoft - это не зло, а Adobe - не ваша добрая фея. Это просто компании, которые хотят заработать на вас деньги. То есть, судить технологии надо по их достоинствам, а не по тому, где они разработаны - в Редмонде или в Сан Хосе.
Итак, если Flash рулит в вебе, почему Flash разработчики и дизайнеры должны беспокоится о WPF? Ответ прост. Многие дизайн-студии уже получают тонны заказов на WPF проекты и сильно нуждаются в "полиглотах"-девелоперах. Мы уже завершили несколько проектов и ждем еще кучу. Итак, если вы хотите удержаться на плаву, расширять кругозор просто необходимо. Другой причиной изучения WPF является то, что он чертовски крут! Flash разработчики теперь имеют возможность создавать Windows приложения, которые содержат сложную анимацию и 3D. Поверьте мне, это не только круто, это еще и весело!
Хорошо, вы вняли моему совету и начали изучать WPF, который в связке с Flash-навыками, станет мощной силой в создании интерактивного контента как для веба, так и для десктопа. Но, подождите. Как же насчет Flex и Apollo? Когда вы подумали, что вся индустрия у вас на ладони, эти двое стучатся в дверь. Мой совет - учите и их! Flex - это технология, похожая по структуре на WPF, поэтому код можно практически легко портировать туда-сюда. Flex использует MXML в качестве языка размети, как XAML для WPF. Вместо C# для скриптинга используется Actionscript 3. Кстати, учите и его тоже. Но если вы знаете WPF или Flex, изучение другого является лишь проблемой синтаксиса. Отлично, теперь у вас три интеактивные технологии за плечами. В ваше резюме добавилась еще одна страница, но мы еще не закончили.
Apollo - это попытка Adobe войти на рынок десктопных приложений. С его помощью Flash разработчики могут создавать standalone приложения для Windows, Mac и Linux. Хотя релиза еще не было, я видел несколько демок и выглядят они впечатляюще. Теперь у вас есть полный контроль над приложениями, можно использовать такие фишки как прозрачные и округлые окна. Но если вы использовали Zinc до этого, вы скажете "Нах надо?". Поверьте на слово - надо! Основной проверкой будет проверка на кроссплатформенность этих приложений и насколько будет глубоким доступ к операционной системе. Apollo позиционируется как платформа для RIA на десктопе. Он не собирается замещать WPF с его огромной .NET библиотекой, которую никогда не достигнет Apollo.
Итак, хотите быть интерактивным крутнем, учите Flash, Flex, Apollo, Actionscript 3 и WPF.
четверг, сентября 28, 2006
среда, сентября 27, 2006
Image Converter на RoR и Flex
- загрузка изображений
- zip-архивирование
- сохранение изображений
Компонент Closeable Tab Navigator
Исходников не будет, так что делаем сами:)
вторник, сентября 26, 2006
Новое в вики - Использование виджетов
понедельник, сентября 25, 2006
Трюки и приемы использования BitmapData во Flex 2
- сохранение изображения из приложения (над этим он сейчас трудится)
- создания скриншотов текущего состояния приложения
- зеркальное отображения поведения компонентов (есть эксперимент и с видео)
- различные эффекты с изображениями
четверг, сентября 21, 2006
Flex-интерфейс для блога
Функционал:
- поиск
- выбор по категориям
- выбор по календарю
- добавление комментариев
среда, сентября 20, 2006
Компонент Calculator
Update: Кстати, есть большой урок от Adobe по созданию калькулятора, правда для 1.5.
вторник, сентября 19, 2006
Обновления у вики
- Использование визуальных компонентов во Flex
- Использование источников данных и коллекций
- Масштабирование и позиционирование компонентов
Готовится большая статья по виджетам.
четверг, сентября 14, 2006
Компонент SelfLabelingTextInput
<controls:selflabelingtextinput x="10" y="10" width="238"
label="Name">
</controls:selflabelingtextinput>
и в поле формы написано Name - всем понятно - сюда пишем имя :). При получении фокуса подпись исчезает.
Исходники в ассортименте.
вторник, сентября 12, 2006
Тюнингованный Rich Text Editor для Flex 2
Использование JSON и Flex 2
понедельник, сентября 11, 2006
Редактируем картинки во Flex - сохраняем с помощью rails
пятница, сентября 08, 2006
Укрощаем XML - получаем соседский узел
Например, одним способом представления пары имя / значение является следующая форма:
<Artist>Interpol</Artist>
А формат Apple делает это с помощью структуры ключ / значение:
<key>Artist</key><string>Interpol</string>
отношения между ключом и значением основываются на соседстве, а не на иерархии, как в первом примере. Я не буду вникать, зачем Apple это делает (я и не знаю), хорошо это или плохо, но это, однозначно, доставляет трудности при парсинге.
Чтобы распарсить эту строку, необходимо сперва извлечь узел key, соответствующий нужному значению, а затем получить следующий узел, содержащий это значение.
Вот пример:
package {
import flash.display.Sprite;
public class XMLTest extends Sprite
{
public function XMLTest()
{
var xml:XML =
<xml>
<songs>
<song>
<key>Artist</key><string>Interpol</string>
<key>Track Number</key><int>7</int>
</song>
<song>
<key>Artist</key><string>Bloc Party</string>
<key>Track Number</key><int>3</int>
</song>
</songs>
</xml>
var temp:XML;
var artistName:String;
//проходим через songs
for each (var song:XML in xml.songs.song)
{
// получаем узел key, имеющий значение Artist,
// в первой song
temp = song.key.(text() == "Artist")[0];
//получаем следующий узел
//(т.е. соседский узел узла key).
//Сохраняем его как Stirng
artistName =
String(temp.parent().children()[temp.childIndex() + 1]);
trace(artistName);
}
}
}
}
Важной частью примера является строка:
temp.parent().children()[temp.childIndex() + 1]
Здесь извлекается соседский узел узла temp. Для получения предыдущего узла, вычтите 1:
temp.parent().children()[temp.childIndex() - 1]
Данный метод добавлен Майком Чамберсом в класс XMLUtil в corelib.
Оригинал поста
среда, сентября 06, 2006
Альтернативная IDE для RoR
Главное преимущество - это вес - всего 900Кб.
Основные фичи:
- Таб-навигация между открытыми файлами
- Навигация по коду с помощью Ctrl+клик
- Переключение назад/вперед между открытыми файлами
- Использование закладок, гиперзакладок, макросов
- Подсветка синтаксиса для .rb .rhtml файлов (черный фон - белые буквы - круто)
- Запуск сервера, консоли, командной строки в одно нажатие
В общем, пробуйте, выбор за вами.
вторник, сентября 05, 2006
понедельник, сентября 04, 2006
Затемнение ala Windows XP (Flex 2)
Примеры данного эффекта можно посмотреть в оригинальном посте автора, там же можно загрузить библиотеку данного эффекта и SWC-файл. Просто нажмите кнопку и фон за модальным окном померкнет.
Работает это так. Класс PopUpManager имеет недокументированное внутреннее свойтсво modalWindowClass. Если задать в качестве значения этого свойства какой-нибудь класс, то его экземпляр будет создан при создании модального (только модального!) окна. Экземпляр появляется позади модального окна и изменяет внешний вид приложения.
Alistair создал класс SaturationFadePopUpBlocker, который использует его новый эффект SaturationFade. SaturationFade изменяет насыщенность компонента, который является целью эффекта.
Чтобы добавить данный эффект в приложение, необходимо добавить в обработчик creationComplete строку:
PopUpManager.mx_internal::modalWindowClass =
SaturationFadePopUpBlocker;
Вот переделанный пример из документации с использованием данного эффекта:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
creationComplete="doInit();">
<mx:Script>
<![CDATA[
import mx.managers.PopUpManager;
import mx.core.IFlexDisplayObject;
import com.adobe.effects.*;
private function doInit():void {
PopUpManager.mx_internal::modalWindowClass =
SaturationFadePopUpBlocker;
}
private function showLogin():void {
var helpWindow:IFlexDisplayObject =
PopUpManager.createPopUp(this, MyLoginForm, true);
}
]]>
</mx:Script>
<mx:VBox>
<mx:Button click="showLogin();" label="Login"/>
<mx:Image source="img/sunset.jpg" />
</mx:VBox>
</mx:Application>
Необходимо еще само модальное окно, но его можно взять из хелпа. Изменений никаких в нем нет.
Естественно, все классы или swc файлы должны быть импортированны.
Эффект можно настроить для любого уровня насыщенности. Эффект SaturationFade можно использовать отдельно. В следующем примере эффект проигрывается при нажатии на изображения. Насыщенность меняется с 1 до 0. При отпускании эффект проигрывается в обратную сторону:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
xmlns:eff="com.adobe.effects.*" >
<mx:Script>
<![CDATA[
import com.adobe.effects.SaturationFade;
]]>
</mx:Script>
<eff:SaturationFade id="fadeToGray" duration="500"
saturationFrom="1" saturationTo="0" />
<eff:SaturationFade id="fadeBack" duration="500"
saturationFrom="0" saturationTo="1" />
<mx:Image mouseDownEffect="fadeToGray" mouseUpEffect="fadeBack"
source="sunset.jpg" />
</mx:Application>
Кого интересует реализация данного эффекта во Flash - добро пожаловать.
воскресенье, сентября 03, 2006
Исходники и библиотеки от Quietlyscheming
четверг, августа 31, 2006
Русскоязычная wiki по Flex 2
Приглашаем всех заинтересованных к наполнению.
воскресенье, августа 27, 2006
Использование визуальных javascript эффектов в rails приложениях
<%= content_tag 'DIV', 'Hello, World', :id => 'msg' %>
<%= content_tag 'DIV', 'Click Here',
:onclick =>
visual_effect(:highlight, 'msg', :duration => 1.0) %>
Здесь, при нажатии текст Hello, World подсветится на 1 секунду. Можно также группировать несколько эффектов в тег SCRIPT:
<SCRIPT type="text/javascript">
<%= visual_effect :opacity, 'idOne', :duration => 2.0,
:from => 1.0, :to => 0.5 %>
<%= visual_effect :opacity, 'idTwo', :duration => 2.0,
:from => 1.0, :to => 0.5, :transition =>
'Effect.Transitions.wobble' %>
</SCRIPT>
В дополнению к эффектам прозрачности и подсветки, visual_effect поддерживает: fade, appear, puff, blindUp, blindDown, switchOff, dropOut, shake, slideDown, slideUp, squish, grow, shrink, pulsate и fold. Переводить смысла нет, лучше попробовать.
Данными эффектами поддерживается параметры задержки (delay ) и времени проигрывания (duration ) эффекта.
<SCRIPT type="text/javascript">
<%= visual_effect :fade, 'idOne', :duration => 5.0,
:delay => 5.0 %>
<%= visual_effect :puff, 'idTwo', :duration => 1.0,
:delay => 5.0 %>
</SCRIPT>
Также можно просто копировать и вставлять себе готовые эффекты, созданные пользователями и visual_effect будет их поддерживать также.
Есть также drag and drop эффекты. Чтобы сделать DIV перетаскиваемым:
<%= draggable_element 'idOne', :revert => true,пс. Кстати, библиотеки эффектов включены в rails и расположены в папке public/javascripts. Чтобы подключить библиотеки нужно просто написать
:zindex => -1 %>
<%= javascript_include_tag :defaults %>и все!
Оригинал поста
четверг, августа 24, 2006
Вы все еще пишете CSS руками? Тогда мы идем к вам!
пс. работает сие творение на Rails.
среда, августа 23, 2006
Open source Календарь для Flex 2
На рисунке представлен скриншот данного компонента.
Не расстраивайтесь из-за внешней простоты примера - с помощью данного компонента можно создавать гораздо более сложные вещи. К его выходу мы представим более интересные примеры.
Вот некоторые особенности фреймворка:
- Отображение и управление 1000-ю календарных записей без потери производительности;
- Расположение записей с помощью предопределенного или своего лэйаут-менеджера;
- Назначение своих рендереров для создания оригинального вида записей;
- Обеспечение рендереров в MXML или ActionScript;
- Поддержка зума с помощью zoom API;
- Использование таких эффектов фреймворка как Zoom и Move для большей выразительности и юзабилити компонента;
- Добавление, удаление и обновление записей в runtime;
- Назначение различных фонов для разного времени, например рабочих часов, обедов;
- Полностью стилизуемый;
- Подсветка записей;
- Основан на dataProvider;
Чтобы наглядно показать API календаря, вот MXML код приведенного выше примера (API может изменится в релизе):
<scheduling:CalendarViewer
id="calendar"
width="600" height="400"
dataProvider="{ appointments }"
startDate="{ new Date() }"
duration="{ DateUtil.DAY_IN_MILLISECONDS }"
zoom="{ zoom }" itemRenderer="com.adobe.scheduling.AppointmentEntryRenderer" itemLayoutManager="com.adobe.calendarClasses.BestFitLayoutManager" />
Ждите выхода - "It'll be ready when its ready"!
вторник, августа 22, 2006
Flash? Flex? Только вместе!
понедельник, августа 21, 2006
flexonrails.net
Derek Wischusen открыл блог, посвященный такой интереснейшей связке технологий!
Итак, добро пожаловать - flexonrails.net
И сразу же интересные темы (пока на английском) - руби-скрипт для аплоада файлов из флекса и сохранение CSS с помощью Flex 2: Styles Creator.
четверг, августа 17, 2006
Разработка Flex2/AS3 приложений с помощью FlashDevelop
среда, августа 16, 2006
Кратко о Radrails
PS. Если интересно создание простого проекта с помощью Radrails от начала и до конца, пишите в комментах, сделаю урок.
вторник, августа 15, 2006
Интеграция Flex 2 и PHP
Кстати, автор начал неофициальный проект Adobe PHP SDK, который облегчит PHP разработчикам работу по созданию бэкэндов на PHP для RIA.
понедельник, августа 14, 2006
В чем разница?
package {
import flash.display.Sprite;
import flash.text.TextField;
public class HelloWorld extends Sprite {
public function HelloWorld() {
var textField:TextField = new TextField();
textField.text = "Hello, world!";
addChild(textField);
trace("Hello, world!");
}
}
}
Создаем MXML файл HelloWorld.mxml:
<application xmlns="http://www.adobe.com/2006/mxml">
<label text="Hello, world!">
</label>
</application>
Компилируем первый файл:
mxmlc HelloWorld.as
Размер - 642 b
Компилируем второй файл:
mxmlc HelloWorld.mxml
Размер - 116 972 b
Почему же такая разница? Потому что во flex-проекте используются компоненты пользовательского интерфейса (в данном случае это Label, в котором в довес идет миленький шрифтик и выравнивание по центру).
Подсмотрено у Manish Jethani
воскресенье, августа 13, 2006
Компиляция Flex 2 и AS3 проектов с помощью BAT файла
четверг, августа 10, 2006
Как Flex меняет наши впечатления?
среда, августа 09, 2006
Загрузка скинов для Adobe Flex 2 приложений в Runtime
Скрещивание ActionScript 2 SWF файлов с Flex 2 приложениями
Устанавливаем Typo по современному
Устанавливаем Typo
UPDATE: Для нормальной работы с русским языком надо добавить в файл database.yml строку encoding: utf8 (в туторе добавил).
Возможные возникающие проблемы при постинге могут решится установкой другого адаптера БД. Проблема описана тут.
Спасибо RubyOnRails to russian
вторник, августа 08, 2006
Flex 2 компонент Masked Text Input от Питера Энта
Вам надо ввести телефонный номер в поле "Номер". Как его вводить? 8(111)222-22-22? 8-111-2222222? 81112222222? Короче, черт ногу сломит. Питер Энт создал компонент, который лишает нас всяких сомнений насчет того, как заполнять поля с длинными номерами, а также предлагает некоторые приятные моменты, типа капитализации первых букв в полях с именем/фамилией, автоперехода к следующему полю.
Компонент перехватывает нажатия клавиш и сравнивает их с заданным шаблоном. В шаблонах используется # для цифровых значений, C - для букв, которые будут капитализованы, c - для букв, которые будут автоматически переведены в нижный регистр и A (или a) для любого символа. Итак, шаблон телефонного номера можно задать так: "(###) ###-####", а имя человека - "Ccccccccccc".
Некоторые проблемы возникают при обработке нажатия Backspace, Space, Delete, Home, End и стрелок Влево и Вправо. Например, если вы введете (999) 555-____ , а затем перейдете курсором на позицию перед первой цифрой 5 и вставите цифру 6, то последняя заменит эту пятерку и получится (999) 655-____ , а курсор теперь встанет после этой шестерки.
Новый виджет имеет следующие атрибуты:
inputMask: шаблон маски, например ###-##-####.
blankChar: Символ визуального отображения шаблона в поле формы. Например, для поля телефонного номера будет (___) ___-____ , так как символ по умолчанию blankChar это _.
defaultChar: Этот символ заменяет blankChar при извлечении текста из виджета с помощью атрибута actualText. Например, если вы хотите, чтобы все # стали 0, задайте defaultChar = 0. Этот символ также используется при нажатии пробела.
text: Атрибут виджета TextInput переопределен для облегчения задания/получения значения поля. Например, если у есть шаблон ввода телефонного номера, вы можете задать text="9995551212" и символы будут разделены в соответствии с заданым шаблоном и будут отражены как "(999) 555-1212". При получении значения text, остаются только числа без шаблонов и символов blankChar.
Появилось новое событие:
inputMaskEnd: Событие наступает при вводе последнего символа шаблона. Вы можете использовать его для автоматического перехода на следующее поле.
Добро пожаловать!
Не судите строго! Я учусь вместе с Вами!