Your SlideShare is downloading. ×
0
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Архитектура минимальных Ui компонент
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Архитектура минимальных Ui компонент

1,190

Published on

Докладчик - Виталий Хить

Докладчик - Виталий Хить

Published in: Technology, Business
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,190
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Архитектура минимальных UI компонент
    Виталий Хить (well)
  • 2. Зачем это нужно?
    Виджеты
    Примеры кода
    Собственное обучение
  • 3. Готовые компоненты
    Flex
    Flash
    Minimal Components (bit-101.com)
  • 4. Flex
  • 5. Flash
  • 6. Minimal components
  • 7. Minimal Components
  • 8. Структура компонента
    Менеджер
    Менеджер
  • 9. Менеджер клавиатуры
  • 10. Менеджер отображения (СТИЛИ)
  • 11. Структура Класса компонента
  • 12. UIComponent extends Sprite / MovieClip
  • 13. UIComponentсвойства
    Координаты
    Размеры
    Состояния
    Visible
    Enabled
    Мышка (up, over, down)
    Значения
    Стили
    Стили экземпляра компонента
    Глобальные стили (класс, глобальные)
  • 14. Uicomponent cтруктура менеджера свойств
  • 15. МЕНЕДЖЕР СВОЙСТВ
    static public const ISIZE :uint = 0x01;
    static public const ISTYLE :uint = 0x02;
    …….
    protected varinvalidHash :uint;
    …….
    public function invalidate(property: uint = InvalidationType.ALL, callLater :Boolean = true):void {
    invalidHash |= property;
    if (!_inCallLater) {
    addEventListener(Event.ENTER_FRAME, callLaterDispatcher,false,0,true);
    _inCallLater = true;
    }
    }
    protected function validate():void {
    invalidHash = 0;
    _inCallLater = false;
    }
    private function callLaterDispatcher(event:Event):void {
    removeEventListener(Event.ENTER_FRAME,callLaterDispatcher);
    draw();
    }
    protected function draw() :void {
    if (isValid(ISTYLE | ISIZE)) { ... }
    validate();
    }
  • 16. UICOMPONENT Ограничивающий прямоугольник
    x, y -> _x, _y, move()
    width, height -> _width, _height, setSize()
    scaleX, scaleY
  • 17. UIComponentСтиликласса
    static private const defaultStyles:Object= {
    color :0xffffff,
    defaultLabel : “Label”,
    disabledSkin : “Label_DisabledSkin”
    };
    public static function getStyleDefinition():Object {
    return defaultStyles;
    }
  • 18. UIComponentменеджер стилей
    protected varinstanceStyles:Object;
    protected function getStyleValue(name:String):Object {
    return (instanceStyles[name] == null) ? StyleManager.getStyleValue(name, _classDef) : instanceStyles[name];
    }
    protected function getDisplayObjectInstance(skin:Object):DisplayObject {
    varclassDef:Object = null;
    if (skin is Class) {
    return (new skin()) as DisplayObject;
    } else if (skin is DisplayObject) {
    (skin as DisplayObject).x = 0;
    (skin as DisplayObject).y = 0;
    return skin as DisplayObject;
    }
    try {
    classDef = getDefinitionByName(skin.toString());
    } catch(e:Error) {
    try {
    classDef = loaderInfo.applicationDomain.getDefinition(skin.toString()) as Object;
    } catch (e:Error) {
    // Nothing
    }
    }
    if (classDef == null) {
    return null;
    }
    return (new classDef()) as DisplayObject;
    }
  • 19. МЕНЕДЖЕР Стилей
    private static var _instances :Dictionary = new Dictionary(true);
    private static var _styles :Dictionary = new Dictionary(true);
    public static function getStyleValue(name :String, classDef :Class = null) :Object
    {
    var style :Object = _styles[classDef];
    return (style && style[name]) ? style[name] : _styles[null][name];
    }
    public static function setStyle(name :String, value :Object, classDef :Class = null) :void
    {
    if (!_styles[classDef]) _styles[classDef] = {};
    _styles[classDef][name] = value;
    if (classDef) invalidateStyle(classDef);
    else for (varobj :* in _instances) invalidateStyle(obj == 'null' ? null : obj);
    }
  • 20. МЕНЕДЖЕР Стилей
    public static function registerInstance(instance :UIComponent) :void
    {
    varclassDef :Class = getClassDef(instance);
    if (!classDef) return;
    if (!_instances[classDef]) _instances[classDef] = new Dictionary(true);
    _instances[classDef][instance] = true;
    if (_styles[classDef]) return;
    var target :Class = classDef;
    vardefaultStyles :Object = null;
    while (!defaultStyles) {
    if (target["getStyleDefinition"]) { defaultStyles = target["getStyleDefinition"](); break; }
    try { target = instance.loaderInfo.applicationDomain.getDefinition(getQualifiedSuperclassName(target)) as Class; }
    catch(err :Error) {
    try { target = getDefinitionByName(getQualifiedSuperclassName(target)) as Class; }
    catch (e:Error) { defaultStyles = UIComponent.getStyleDefinition(); break; }
    }
    }
    _styles[classDef] = defaultStyles;
    if (!_styles[null]) _styles[null] = UIComponent.getStyleDefinition();
    }
  • 21. СКИНЫ
  • 22. [Embed…
    public class fl.controls.Button extends UIComponent {
    [Embed (source='../skin/skin.swf', symbol='Button_disabledSkin')]
    static private vardisabledSkin :Class;
    public class fl.controls.Button_disabledSkin extends SpriteAsset
    private static vardefaultStyles:Object = {
    disabledSkin:"fl.controls::Button_disabledSkin",
  • 23. Чистка Flash компонентов
    Удалить acsessibilityсоставляющую
    Удалить FocusManagerи сопутствующие классы
    Упростить Style Manager
    Удалить из UIComponent
    Связь с фокус менеджером
    Связь со средой разработки Flash
    (?) Изменение scale составляющей
    Исправить ошибки в дочерних классах
    Изменить названия скинов (если используется flex)

×