Архитектура минимальных UI компонент Виталий Хить well доклад по теме Технологии

Доклад раскрывает тему "Архитектура минимальных UI компонент Виталий Хить well ".
Презентация поможет подготовится к предмету Технологии, может быть полезна как ученикам и студентам, так и преподавателям.
Материал представлен на 23 страницах, оформлен в виде презентации, доступен для скачивания и просмотра онлайн.

Навигация по документу

Страница №1
Архитектура минимальных UI компонент Виталий Хить (well)
Страница №2
Зачем это нужно?
Виджеты
Примеры кода
Собственное обучение
Зачем это нужно? Виджеты Примеры кода Собственное обучение
Страница №3
Готовые компоненты
Flex
Flash
Minimal Components (bit-101.com)
Готовые компоненты Flex Flash Minimal Components (bit-101.com)
Страница №4
Flex
Flex
Страница №5
Flash
Flash
Страница №6
Minimal components
Minimal components
Страница №7
Minimal Components
Minimal Components
Страница №8
Структура компонента
Структура компонента
Страница №9
Менеджер клавиатуры
Менеджер клавиатуры
Страница №10
Менеджер отображения (СТИЛИ)
Менеджер отображения (СТИЛИ)
Страница №11
Структура Класса компонента
Структура Класса компонента
Страница №12
UIComponent extends Sprite / MovieClip
UIComponent extends Sprite / MovieClip
Страница №13
UIComponent свойства
Координаты
Размеры
Состояния
Visible
Enabled
Мышка (up, over, down)
Значения
Стили
Стили экземпляра компонента
Глобальные стили (класс, глобальные)
UIComponent свойства Координаты Размеры Состояния Visible Enabled Мышка (up, over, down) Значения Стили Стили экземпляра компонента Глобальные стили (класс, глобальные)
Страница №14
Uicomponent cтруктура менеджера свойств
Uicomponent cтруктура менеджера свойств
Страница №15
МЕНЕДЖЕР СВОЙСТВ
static public const ISIZE :uint = 0x01;
static public const ISTYLE :uint = 0x02;
…….
 protected var invalidHash :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();
}
МЕНЕДЖЕР СВОЙСТВ static public const ISIZE :uint = 0x01; static public const ISTYLE :uint = 0x02; ……. protected var invalidHash :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
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;
}
UIComponent Стили класса static private const defaultStyles:Object = { color :0xffffff, defaultLabel : “Label”, disabledSkin : “Label_DisabledSkin” }; public static function getStyleDefinition():Object { return defaultStyles; }
Страница №18
UIComponent менеджер стилей
protected var instanceStyles:Object;
protected function getStyleValue(name:String):Object {
      return (instanceStyles[name] == null) ? StyleManager.getStyleValue(name, _classDef) : instanceStyles[name];
}
 protected function getDisplayObjectInstance(skin:Object):DisplayObject {
      var classDef: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;
}
UIComponent менеджер стилей protected var instanceStyles:Object; protected function getStyleValue(name:String):Object { return (instanceStyles[name] == null) ? StyleManager.getStyleValue(name, _classDef) : instanceStyles[name]; } protected function getDisplayObjectInstance(skin:Object):DisplayObject { var classDef: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
Информация вложена в изображении слайда
Страница №20
МЕНЕДЖЕР Стилей
public static function registerInstance(instance :UIComponent) :void 
{
      var classDef :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;
      var defaultStyles :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();
      
}
МЕНЕДЖЕР Стилей public static function registerInstance(instance :UIComponent) :void { var classDef :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; var defaultStyles :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
Информация вложена в изображении слайда
Страница №23
Чистка Flash компонентов
Удалить acsessibility составляющую
Удалить FocusManager и сопутствующие классы
Упростить Style Manager
Удалить из UIComponent
Связь с фокус менеджером
Связь со средой разработки Flash
(?) Изменение scale составляющей
Исправить ошибки в дочерних классах
Изменить названия скинов (если используется flex)
Чистка Flash компонентов Удалить acsessibility составляющую Удалить FocusManager и сопутствующие классы Упростить Style Manager Удалить из UIComponent Связь с фокус менеджером Связь со средой разработки Flash (?) Изменение scale составляющей Исправить ошибки в дочерних классах Изменить названия скинов (если используется flex)