🗊Архитектура минимальных UI компонент Виталий Хить (well)

Категория: Технологии
Нажмите для полного просмотра!
Архитектура минимальных UI компонент  Виталий Хить (well), слайд №1Архитектура минимальных UI компонент  Виталий Хить (well), слайд №2Архитектура минимальных UI компонент  Виталий Хить (well), слайд №3Архитектура минимальных UI компонент  Виталий Хить (well), слайд №4Архитектура минимальных UI компонент  Виталий Хить (well), слайд №5Архитектура минимальных UI компонент  Виталий Хить (well), слайд №6Архитектура минимальных UI компонент  Виталий Хить (well), слайд №7Архитектура минимальных UI компонент  Виталий Хить (well), слайд №8Архитектура минимальных UI компонент  Виталий Хить (well), слайд №9Архитектура минимальных UI компонент  Виталий Хить (well), слайд №10Архитектура минимальных UI компонент  Виталий Хить (well), слайд №11Архитектура минимальных UI компонент  Виталий Хить (well), слайд №12Архитектура минимальных UI компонент  Виталий Хить (well), слайд №13Архитектура минимальных UI компонент  Виталий Хить (well), слайд №14Архитектура минимальных UI компонент  Виталий Хить (well), слайд №15Архитектура минимальных UI компонент  Виталий Хить (well), слайд №16Архитектура минимальных UI компонент  Виталий Хить (well), слайд №17Архитектура минимальных UI компонент  Виталий Хить (well), слайд №18Архитектура минимальных UI компонент  Виталий Хить (well), слайд №19Архитектура минимальных UI компонент  Виталий Хить (well), слайд №20Архитектура минимальных UI компонент  Виталий Хить (well), слайд №21Архитектура минимальных UI компонент  Виталий Хить (well), слайд №22Архитектура минимальных UI компонент  Виталий Хить (well), слайд №23

Вы можете ознакомиться и скачать Архитектура минимальных UI компонент Виталий Хить (well). Презентация содержит 23 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1





Архитектура минимальных UI компонент
Виталий Хить (well)
Описание слайда:
Архитектура минимальных 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





МЕНЕДЖЕР Стилей
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 (var obj :* in _instances) invalidateStyle(obj == 'null' ? null : obj); 
}
Описание слайда:
МЕНЕДЖЕР Стилей 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 (var obj :* in _instances) invalidateStyle(obj == 'null' ? null : obj); }

Слайд 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





[Embed…
public class fl.controls.Button extends UIComponent {
[Embed (source='../skin/skin.swf', symbol='Button_disabledSkin')]
static private var disabledSkin :Class;
public class fl.controls.Button_disabledSkin extends SpriteAsset
private static var defaultStyles:Object = {
	disabledSkin         :"fl.controls::Button_disabledSkin",
Описание слайда:
[Embed… public class fl.controls.Button extends UIComponent { [Embed (source='../skin/skin.swf', symbol='Button_disabledSkin')] static private var disabledSkin :Class; public class fl.controls.Button_disabledSkin extends SpriteAsset private static var defaultStyles:Object = { disabledSkin :"fl.controls::Button_disabledSkin",

Слайд 23





Чистка Flash компонентов
Удалить acsessibility составляющую
Удалить FocusManager и сопутствующие классы
Упростить Style Manager
Удалить из UIComponent
Связь с фокус менеджером
Связь со средой разработки Flash
(?) Изменение scale составляющей
Исправить ошибки в дочерних классах
Изменить названия скинов (если используется flex)
Описание слайда:
Чистка Flash компонентов Удалить acsessibility составляющую Удалить FocusManager и сопутствующие классы Упростить Style Manager Удалить из UIComponent Связь с фокус менеджером Связь со средой разработки Flash (?) Изменение scale составляющей Исправить ошибки в дочерних классах Изменить названия скинов (если используется flex)



Похожие презентации
Mypresentation.ru
Загрузить презентацию