SlideShare ist ein Scribd-Unternehmen logo
1 von 40
Downloaden Sie, um offline zu lesen
Thema: Flex Development Guideline

  SFUG Talk vom 17. März 2009

         von Florian Weil
Who I am...


       Personal Information
   ➲
           Florian Weil
       ●
           from Germany (close to Frankfurt am Main)
       ●
           26 years old
       ●
           Loves the mountains and the snow, yeah
       ●


       Professional Information
   ➲
           Bachelor of Computer Science in Media
       ●
           Worked as a banker, Camera Operator Assistent,
       ●
           Filmmaker, Flash Lite and Interaction Developer
           Now: Flex Developer for the LIIP AG
       ●

       My website & blog: www.derhess.de
   ➲
Why Flex? Why...




Source:
http://www.flickr.com/photos/dave_apple/ http://www.flickr.com/photos/adenocorticotropina/ http://www.flickr.com/photos/a_of_doom/
Generally

      Motivation:
  ➲
          Flash Development != Flex Development
      ●
          Flex is not really easy!!
      ●
          Have a look at:
      ●
              http://www.neatfilm.com/2008/01/20/flex-challenges-for-flash-ide-devleopers/
          ●
              http://jessewarden.com/2008/01/when-you-hit-a-design-brick-wall-in-flex.html
          ●


      Objectives
  ➲
          Give some hints for Learning Flex
      ●
          Understand the Basics of Flex
      ●


      The presentation is not diving in
  ➲
          Design Patterns, Software Architecture
      ●
          Software Development Methods
      ●
          Interaction Design, Usability...
      ●
Topics

       Choose the right Layout Management
   ➲
           Absolute Layout (pixelbased)
       ●
           Dynamic Layout (percentage based)
       ●


       Custom Component Development
   ➲
           Which kind of component
       ●
           State Management
       ●
           Skinning
       ●
           Metatags (Events, Embedded, Skinning)
       ●
           Child Management (Template Component)
       ●


       Working with Data
   ➲
           ArrayCollection vs. Array
       ●
           Bindable ValueObjects and Functions
       ●
           Filter and Sort API
       ●
           DataProvider -> ICollection...
       ●
Topics


       Choose the right Layout Management
   ➲
           Pixelbased Layout
       ●
           Dynamicbased Layout
       ●
           Forms (Validator and Error Management)
       ●
       Custom Component Development
   ➲
           Which kind of component
       ●
               MXML based Component
           ●
               AS Based ( Flex Framework Methods)
           ●
           State Management
       ●
               Property Manager Functions
           ●
               Transitions Management
           ●
           Skinning
       ●
               Degrafa... / setStyle() Perfomance hungry
           ●
           Metatags (Events, Embedded, Skinning)
       ●
Flex Layout Management




         Source: http://www.flickr.com/photos/svensonsan/
Absolute Layout


      For pixelbased Layout use the
  ➲
      CANVAS Component

      For a dynamic layout, e.g. the
  ➲
      constraints are your friends

       Why:
  ➲
      ● working with absolute values
      ● No active Layout Management
Dynamic Layout
Dynamic based Layout


     Use Components like Hbox, Vbox etc. for
 ➲
     relativ (percentage) values

     use these Components carefully
 ➲


      What can you do:
 ➲
     ● For paddings or align issues use the space
       component
Forms Layout


      For all bigger User Input Screens use the
  ➲
      Form Component

      Why:
  ➲
          Easy and automatic Layout (FormItems)
      ●
          Error Handling Functionality
      ●
          Skinning/Render Functionality (Tooltips, required Fields)
      ●
Custom Components




   Source: http://www.flickr.com/photos/bikeman04/
Architecture of a visual
 Component

    Invalidation / validation Model
➲
        Aggregate changes and execute them to the right time
    ●




    Event-driven Interaction Model
➲


    Composition
➲
        Parameterization of a component (Component in a
    ●
        component)
        Factories and item renderer
    ●
Life Cycle of a visual
 Component

      3 Phases:
  ➲


      1. Initialization
  ➲
           Creating Components, attach to displaylist etc.
       ●


      2. Updating
  ➲
           Components has to react on the changes of the invalid/validation
       ●
           Modell

      3. Destruction
  ➲
           Remove Eventlisteners (!)
       ●
           Null Objects
       ●
           Garbage Collection
       ●
Life Cycle Part 2

     The most important life cycle Functions
 ➲
         override protected function createChildren()
     ●
         override protected function commitProperties()
     ●
         override protected function measure():void
     ●
         override protected function
     ●
         updateDisplayList(unscaledWidth:Number,
         unscaledHeight:Number):void

     Tip:
 ➲
         Extend your AS Component Class from the UIComponent
     ●
         Use and understand(!) the Flex Interface API
     ●


     More Information
 ➲
         http://livedocs.adobe.com/flex/3/html/ascomponents_advanced
     ●
         http://iamdeepa.com/blog/?p=39
     ●
Which kind of component


   MXML vs. ActionScript




         Source: http://www.flickr.com/photos/dan4th/
Which kind of component

     MXML based Component
 ➲
         When the Component is not very complex
     ●
         The component could easily created by the standard
     ●
         Flex Component Set
         For creating a View or template class
     ●


     ActionScript based Component
 ➲
         If you have to create some new (data-driven, interaction,
     ●
         skinning) logics
         If the component very complex, so you have to use the
     ●
         MVC Pattern or some similiar stuff
         Perfomance issues...
     ●


     Special case: Item Renderer...
 ➲
State Management

    Attributes states and currentState are your
➲
    friends ;-)



    Defining changes with the Classes / MXML Tag
➲
        SetProperty
    ●
        SetEventHandler
    ●
        AddChild
    ●
        RemoveChild
    ●
State Management


     Never implement an own state Management!!!
 ➲




     Why use Flex States:
 ➲
         Preview workflow in Flex Builder
     ●
         CurrentState code completion
     ●
         Flex Transition API
     ●
Child Management




            Source: http://www.flickr.com/photos/kydd/
Example: Imagebar


      Requirements:
  ➲
          Headline
      ●
          dynamic numbers of pages (ToggleButtonBar)
      ●
          Filter Interface (Checkboxes)
      ●
          Container for visible childrens
      ●
          Thumbs (Childrens)
      ●
Child Management


     Array or ArrayCollection
 ➲
         For easy Child Management without a complex
     ●
         Rendering
         Would be better for data instances
     ●


     Repeater Component
 ➲
         For few or many instance of the same component
     ●
         Dynamic Dataprovider
     ●


     ListComponent
 ➲
         Rendering Manager for many instances
     ●
         Dynamic DataProvider
     ●
Repeater vs.
   ListComponent

               Repeater                          ListComponent
Rendering      add and renders all Items         Renders only the visible Items
DataProvider ArrayCollection                     ArrayCollection, XMLList
RenderItem     normal Component                  ItemRenderer
Customize Data public attributes                 data Getter/setter API
Use Case       All childrens should be visible   RangeBased Rendering


More Information about ItemRenderes:
  http://www.adobe.com/devnet/flex/articles/itemrenderers_pt1.html

More Information about Repeater in ActionScript 3:
  http://blog.flexexamples.com/2008/05/28/displaying-radiobutton-con
Skinning


     Changes the visual experience of a Flex
 ➲
     application


      How to Skin
 ➲
     ● Use the skinning attributes via MXML
     ● Use <mx:Style> Tag
          Type the style definition in the component
      ●
          Include a .css file per source Attribute
      ●
          Runtime Loading via SWF File
      ●
Graphical Skinning


     Pixel Based
 ➲
         Tools: Fireworks and Photoshop
     ●
         Embed .png, .jpg or gif Files
     ●
         Use Scale9-Grid Concept
     ●
         Knowledge Base: http://www.scalenine.com/gallery/
     ●


     Vector Based
 ➲
         Tools: Illustrator and Flash
     ●
         Embed: SWF and SWC Files
     ●
         Use Scale9-Grid Concept
     ●
         Tutorial:
     ●
         http://developer.yahoo.com/flash/articles/flex-skinning.html
         Flex component kit for Flash , Illustrator, Photoshop and
     ●
         Fireworks
Programmatic Skinning


     Programmatic Skinning for ActionScript based
 ➲
     renderings
         Use subclasses of Border, RectangularBorder,
     ●
         ProgrammaticSkin or the interfaces
         Tutorial for Programmatic Skinning
     ●
         www.degrafa.org is a nice Skinning Library
     ●


     Controlling the skinning functions
 ➲
         Use the component functions setStyle() and getStyle()
     ●
         StyleManager Class is able to change the complete
     ●
         Graphical Experience of an application
         Method setStyle() is perfomance hungry
     ●
Metatags...

      The most important Tags
 ➲
     ● Bindable
             [Bindable] or [Bindable(event=quot;eventnamequot;)]
         ●
             Compiler adds EventListeners
         ●


         Event
     ●
             [Event(name=quot;enableChangedquot;, type=quot;flash.events.Eventquot;)]
         ●
             For a well code completion and documentation
         ●


         Embedded
     ●
             [Embed(source=quot;logo.gifquot;)]
         ●
             Importing graphics and other external data
         ●
             Compiling external data into the swf
         ●


     Many more Metatags
 ➲
         http://livedocs.adobe.com/flex/3/html/metadata_3.html
     ●
Working with data




        Source: http://www.flickr.com/photos/blude/
Array vs. ArrayCollection

     Array
 ➲
         Is native data typ
     ●
         Bindable: No
     ●
         API: very limited
     ●
         Sorting: limited on one compare Function
     ●
         Filtering: limited on one callback Function
     ●


     ArrayCollection
 ➲
         Is a wrapper class for arrays
     ●
         Creation of ArrayCollection costs a lot of perfomance
     ●
         compared to a creation of an array
         Bindable: yes and very compatible to flex template
     ●
         components (e.g. ListBox)
         Flex Sorting API
     ●
Sort API
      Sort API ()
 ➲
         Sort Class
     ●
         SortField Class
     ●
         Add the stuff to an ArrayCollection
     ●


     var dataSortField:SortField = new SortField();
     dataSortField.name = quot;dataquot;;
     dataSortField.numeric = true;

     // Create the Sort object and add the SortField object
     var numericDataSort:Sort = new Sort();
     numericDataSort.fields = [dataSortField];

     // Set the ArrayCollection object's sort property to our custom sort
     arrColl.sort = numericDataSort;
     arrColl.refresh();

     http://blog.flexexamples.com/2007/08/05/sorting-an-arrayc
Binding

     Binding looks for changes in a data structure and
 ➲
     informs all listeners to this changes


     Binding Properties
 ➲
         Binding Datatypes
     ●
         Binding Classes, especially ValueObject Classe
     ●
         [Bindable] public var property:DataType;
     ●


     Binding Functions (eventbased)
 ➲
         [Bindable(event=quot;eventnamequot;)] public function
     ●
         myFunction():DataType
         Needs always a dispatchEvent(new Event(„eventname“)); call
     ●
Binding Part 2

     Use carefully the Binding Functionality!
 ➲


     Binding can cost a lot of Perfomance
 ➲
         Because of a lot of listeners and dispatch Events
     ●
         Needless datatransfers and rendering updates
     ●




     Tools for better Binding Control
 ➲


     (Advanced) Binding Functions
 ➲
         MXML Tags Binding
     ●
         BindingUtils Class
     ●
         BindingWatchers Class
     ●
Custom Collection


     MXML Model
 ➲
         A data model for an MVC Architecture
     ●
         The Model component and an XML File could be
     ●
         directly combined
         It is bindable
     ●


     For Real Custom Data Structure
 ➲
         implements the Interface ICollectionView
     ●
         extends the base class ListCollectionView
     ●
Dynamic Data Handling


     HTTP Service Component
 ➲
         Use the Events to work with the data
     ●
         Tutorial: Loading a XML File
     ●
         Tutorial: Read and Send Variables to a Server
     ●


     WSDL-Webservice Component
 ➲
         Tutorial: Calling simple Web Service
     ●
Flex Learning Links


     Introduction
➲
    ● Inside RIA: Flex Introduction Serie
    ● http://www.adobe.com/devnet/flex/videotraining/
    ● Flex Explorer


     Deeper Flex Framework understanding
➲
    ● Costum Components
    ● Data Binding


     Ressources & article overview:
➲
    ● http://www.scalenine.com → Skinning
    ● http://blog.flexexamples.com/tags/
    ● http://derhess.de/weblog_detail.php?id=58
Flex Books

       Start & Concepts of Flex 3
  ➲
      ● Adobe Press: Training from the Source
      ● O´Reilly: Flex 3
      ● Friends of Ed: Advanced Flex 3


       Daily Development
  ➲
      ● O´Reilly: Flex 3 Cookbook
      ● Friends of Ed: Flex Solutions
      ● Addison-Wesley: Creating Visual Experiences


       Software Development
  ➲
      ● Head First: Software Development
      ● Head First: Design Patterns
      ● Addison-Wesley: Elements of Reusable Object-Oriented
        Software
Flex Tools & Libs

     Flex IDE PlugIns
➲
    ● Subversion
    ● CodeSnippet
    ● Task Explorer


     Libraries
➲
    ● FlexLib: http://code.google.com/p/flexlib/
    ● Flex.org: http://flex.org/de/software/components
    ● Application Frameworks: PureMVC, Cairngorm
    ● Degrafa: http://degrafa.org/
    ● Test-Driven-Development: fluint, flexUnit
The End




          Source: http://www.flickr.com/photos/moogan/
The End




          QUESTIONS?
The End Part 2




            Thanks :-)

Weitere ähnliche Inhalte

Was ist angesagt?

jQuery and Rails: Best Friends Forever
jQuery and Rails: Best Friends ForeverjQuery and Rails: Best Friends Forever
jQuery and Rails: Best Friends Foreverstephskardal
 
WPF (Windows Presentation Foundation Unit 01)
WPF (Windows Presentation Foundation Unit 01)WPF (Windows Presentation Foundation Unit 01)
WPF (Windows Presentation Foundation Unit 01)Prashanth Shivakumar
 
Developing maintainable Cordova applications
Developing maintainable Cordova applicationsDeveloping maintainable Cordova applications
Developing maintainable Cordova applicationsIvano Malavolta
 
jQuery and AJAX with Rails
jQuery and AJAX with RailsjQuery and AJAX with Rails
jQuery and AJAX with RailsAlan Hecht
 
From Back to Front: Rails To React Family
From Back to Front: Rails To React FamilyFrom Back to Front: Rails To React Family
From Back to Front: Rails To React FamilyKhor SoonHin
 
Catching-up web technologies - an endless story
Catching-up web technologies - an endless storyCatching-up web technologies - an endless story
Catching-up web technologies - an endless storyCleber Jorge Amaral
 
HTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applicationsHTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applicationsJames Pearce
 
ADF Worst Practices (UKOUG Tech2013)
ADF Worst Practices (UKOUG Tech2013)ADF Worst Practices (UKOUG Tech2013)
ADF Worst Practices (UKOUG Tech2013)Wilfred van der Deijl
 
MVC Demystified: Essence of Ruby on Rails
MVC Demystified: Essence of Ruby on RailsMVC Demystified: Essence of Ruby on Rails
MVC Demystified: Essence of Ruby on Railscodeinmotion
 
How to Build ToDo App with Vue 3 + TypeScript
How to Build ToDo App with Vue 3 + TypeScriptHow to Build ToDo App with Vue 3 + TypeScript
How to Build ToDo App with Vue 3 + TypeScriptKaty Slemon
 

Was ist angesagt? (20)

jQuery and Rails: Best Friends Forever
jQuery and Rails: Best Friends ForeverjQuery and Rails: Best Friends Forever
jQuery and Rails: Best Friends Forever
 
Fast mobile web apps
Fast mobile web appsFast mobile web apps
Fast mobile web apps
 
WPF (Windows Presentation Foundation Unit 01)
WPF (Windows Presentation Foundation Unit 01)WPF (Windows Presentation Foundation Unit 01)
WPF (Windows Presentation Foundation Unit 01)
 
Developing maintainable Cordova applications
Developing maintainable Cordova applicationsDeveloping maintainable Cordova applications
Developing maintainable Cordova applications
 
jQuery and AJAX with Rails
jQuery and AJAX with RailsjQuery and AJAX with Rails
jQuery and AJAX with Rails
 
[2015/2016] Backbone JS
[2015/2016] Backbone JS[2015/2016] Backbone JS
[2015/2016] Backbone JS
 
From Back to Front: Rails To React Family
From Back to Front: Rails To React FamilyFrom Back to Front: Rails To React Family
From Back to Front: Rails To React Family
 
AngularJS Workshop
AngularJS WorkshopAngularJS Workshop
AngularJS Workshop
 
Wicket 2010
Wicket 2010Wicket 2010
Wicket 2010
 
Catching-up web technologies - an endless story
Catching-up web technologies - an endless storyCatching-up web technologies - an endless story
Catching-up web technologies - an endless story
 
WPF Fundamentals
WPF FundamentalsWPF Fundamentals
WPF Fundamentals
 
Wpf Introduction
Wpf IntroductionWpf Introduction
Wpf Introduction
 
Html5 CSS3 jQuery Basic
Html5 CSS3 jQuery BasicHtml5 CSS3 jQuery Basic
Html5 CSS3 jQuery Basic
 
Workshop 16: EmberJS Parte I
Workshop 16: EmberJS Parte IWorkshop 16: EmberJS Parte I
Workshop 16: EmberJS Parte I
 
HTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applicationsHTML5 and the dawn of rich mobile web applications
HTML5 and the dawn of rich mobile web applications
 
ADF Worst Practices (UKOUG Tech2013)
ADF Worst Practices (UKOUG Tech2013)ADF Worst Practices (UKOUG Tech2013)
ADF Worst Practices (UKOUG Tech2013)
 
MVC Demystified: Essence of Ruby on Rails
MVC Demystified: Essence of Ruby on RailsMVC Demystified: Essence of Ruby on Rails
MVC Demystified: Essence of Ruby on Rails
 
WPF - An introduction
WPF - An introductionWPF - An introduction
WPF - An introduction
 
How to Build ToDo App with Vue 3 + TypeScript
How to Build ToDo App with Vue 3 + TypeScriptHow to Build ToDo App with Vue 3 + TypeScript
How to Build ToDo App with Vue 3 + TypeScript
 
Introduction to html5
Introduction to html5Introduction to html5
Introduction to html5
 

Andere mochten auch

ใบงาน แบบสำรวจและประวัติ
ใบงาน แบบสำรวจและประวัติใบงาน แบบสำรวจและประวัติ
ใบงาน แบบสำรวจและประวัติMewBesty
 
ใบงาน แบบสำรวจและประวัติ
ใบงาน แบบสำรวจและประวัติใบงาน แบบสำรวจและประวัติ
ใบงาน แบบสำรวจและประวัติMewBesty
 
Trabajo de organizacion y sistemas
Trabajo de organizacion y sistemasTrabajo de organizacion y sistemas
Trabajo de organizacion y sistemasjobsmuel
 
Human Plant Interfaces - Lecture
Human Plant Interfaces - LectureHuman Plant Interfaces - Lecture
Human Plant Interfaces - LectureFlorian Weil
 
Gathering Alternative Surface Forms for DBpedia Entities
Gathering Alternative Surface Forms for DBpedia EntitiesGathering Alternative Surface Forms for DBpedia Entities
Gathering Alternative Surface Forms for DBpedia EntitiesHeiko Paulheim
 
Artistic Research on Human Plant Interfaces by Florian Weil
Artistic Research on Human Plant Interfaces by Florian WeilArtistic Research on Human Plant Interfaces by Florian Weil
Artistic Research on Human Plant Interfaces by Florian WeilFlorian Weil
 
CHI 2013: Facebook Limiting, Leaving, and (re)Lapsing
CHI 2013: Facebook Limiting, Leaving, and (re)LapsingCHI 2013: Facebook Limiting, Leaving, and (re)Lapsing
CHI 2013: Facebook Limiting, Leaving, and (re)LapsingMadeline Smith
 
Designing for Privacy in Mobile and Web Apps - Interaction '14, Amsterdam
Designing for Privacy in Mobile and Web Apps - Interaction '14, AmsterdamDesigning for Privacy in Mobile and Web Apps - Interaction '14, Amsterdam
Designing for Privacy in Mobile and Web Apps - Interaction '14, AmsterdamAmber Case
 
Maintainable CSS
Maintainable CSSMaintainable CSS
Maintainable CSSStephen Hay
 
Learning To Love Forms (Web Directions South '07)
Learning To Love Forms (Web Directions South '07)Learning To Love Forms (Web Directions South '07)
Learning To Love Forms (Web Directions South '07)Aaron Gustafson
 
Open Standards in the Walled Garden
Open Standards in the Walled GardenOpen Standards in the Walled Garden
Open Standards in the Walled Gardendigitalbindery
 
Hoppala at O'Reilly Where 2.0 Conference
Hoppala at O'Reilly Where 2.0 ConferenceHoppala at O'Reilly Where 2.0 Conference
Hoppala at O'Reilly Where 2.0 ConferenceMarc René Gardeya
 
Menoovr
Menoovr Menoovr
Menoovr menoovr
 
Putting Your UIs In Motion On The Web (Animation & UX)
Putting Your UIs In Motion On The Web (Animation & UX)Putting Your UIs In Motion On The Web (Animation & UX)
Putting Your UIs In Motion On The Web (Animation & UX)Val Head
 
Driving the Future of Smart Cities - How to Beat the Traffic
Driving the Future of Smart Cities - How to Beat the TrafficDriving the Future of Smart Cities - How to Beat the Traffic
Driving the Future of Smart Cities - How to Beat the TrafficVMware Tanzu
 
Terry Jones TOC 2011 slides
Terry Jones TOC 2011 slidesTerry Jones TOC 2011 slides
Terry Jones TOC 2011 slidesFluidinfo
 

Andere mochten auch (20)

Examen de informatica
Examen de informaticaExamen de informatica
Examen de informatica
 
ใบงาน แบบสำรวจและประวัติ
ใบงาน แบบสำรวจและประวัติใบงาน แบบสำรวจและประวัติ
ใบงาน แบบสำรวจและประวัติ
 
ใบงาน แบบสำรวจและประวัติ
ใบงาน แบบสำรวจและประวัติใบงาน แบบสำรวจและประวัติ
ใบงาน แบบสำรวจและประวัติ
 
Trabajo de organizacion y sistemas
Trabajo de organizacion y sistemasTrabajo de organizacion y sistemas
Trabajo de organizacion y sistemas
 
Human Plant Interfaces - Lecture
Human Plant Interfaces - LectureHuman Plant Interfaces - Lecture
Human Plant Interfaces - Lecture
 
bpma cert 1
bpma cert 1bpma cert 1
bpma cert 1
 
Gathering Alternative Surface Forms for DBpedia Entities
Gathering Alternative Surface Forms for DBpedia EntitiesGathering Alternative Surface Forms for DBpedia Entities
Gathering Alternative Surface Forms for DBpedia Entities
 
Artistic Research on Human Plant Interfaces by Florian Weil
Artistic Research on Human Plant Interfaces by Florian WeilArtistic Research on Human Plant Interfaces by Florian Weil
Artistic Research on Human Plant Interfaces by Florian Weil
 
CHI 2013: Facebook Limiting, Leaving, and (re)Lapsing
CHI 2013: Facebook Limiting, Leaving, and (re)LapsingCHI 2013: Facebook Limiting, Leaving, and (re)Lapsing
CHI 2013: Facebook Limiting, Leaving, and (re)Lapsing
 
Designing for Privacy in Mobile and Web Apps - Interaction '14, Amsterdam
Designing for Privacy in Mobile and Web Apps - Interaction '14, AmsterdamDesigning for Privacy in Mobile and Web Apps - Interaction '14, Amsterdam
Designing for Privacy in Mobile and Web Apps - Interaction '14, Amsterdam
 
Maintainable CSS
Maintainable CSSMaintainable CSS
Maintainable CSS
 
Learning To Love Forms (Web Directions South '07)
Learning To Love Forms (Web Directions South '07)Learning To Love Forms (Web Directions South '07)
Learning To Love Forms (Web Directions South '07)
 
Demand Media
Demand MediaDemand Media
Demand Media
 
Open Standards in the Walled Garden
Open Standards in the Walled GardenOpen Standards in the Walled Garden
Open Standards in the Walled Garden
 
Hoppala at O'Reilly Where 2.0 Conference
Hoppala at O'Reilly Where 2.0 ConferenceHoppala at O'Reilly Where 2.0 Conference
Hoppala at O'Reilly Where 2.0 Conference
 
Kevin Kelly
Kevin KellyKevin Kelly
Kevin Kelly
 
Menoovr
Menoovr Menoovr
Menoovr
 
Putting Your UIs In Motion On The Web (Animation & UX)
Putting Your UIs In Motion On The Web (Animation & UX)Putting Your UIs In Motion On The Web (Animation & UX)
Putting Your UIs In Motion On The Web (Animation & UX)
 
Driving the Future of Smart Cities - How to Beat the Traffic
Driving the Future of Smart Cities - How to Beat the TrafficDriving the Future of Smart Cities - How to Beat the Traffic
Driving the Future of Smart Cities - How to Beat the Traffic
 
Terry Jones TOC 2011 slides
Terry Jones TOC 2011 slidesTerry Jones TOC 2011 slides
Terry Jones TOC 2011 slides
 

Ähnlich wie Moving from AS3 to Flex - advantages, hazards, traps

WebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open webWebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open webpjcozzi
 
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...goodfriday
 
Fly High With Angular - How to build an app using Angular
Fly High With Angular - How to build an app using AngularFly High With Angular - How to build an app using Angular
Fly High With Angular - How to build an app using AngularVacation Labs
 
JSUG - Filthy Flex by Christoph Pickl
JSUG - Filthy Flex by Christoph PicklJSUG - Filthy Flex by Christoph Pickl
JSUG - Filthy Flex by Christoph PicklChristoph Pickl
 
Lightning web components - Introduction, component Lifecycle, Events, decorat...
Lightning web components - Introduction, component Lifecycle, Events, decorat...Lightning web components - Introduction, component Lifecycle, Events, decorat...
Lightning web components - Introduction, component Lifecycle, Events, decorat...Nidhi Sharma
 
Silverlight 2 For Developers
Silverlight 2 For DevelopersSilverlight 2 For Developers
Silverlight 2 For DevelopersMithun T. Dhar
 
Web Apps and more
Web Apps and moreWeb Apps and more
Web Apps and moreYan Shi
 
Web app and more
Web app and moreWeb app and more
Web app and morefaming su
 
IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009Christopher Judd
 
Gatsby (Code.Talks) 2019
Gatsby (Code.Talks) 2019Gatsby (Code.Talks) 2019
Gatsby (Code.Talks) 2019Stefan Adolf
 
Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt AEM HUB
 
Rp 6 session 2 naresh bhatia
Rp 6  session 2 naresh bhatiaRp 6  session 2 naresh bhatia
Rp 6 session 2 naresh bhatiasapientindia
 
CIRCUIT 2015 - Responsive Websites & Grid-Based Layouts
CIRCUIT 2015 - Responsive Websites & Grid-Based LayoutsCIRCUIT 2015 - Responsive Websites & Grid-Based Layouts
CIRCUIT 2015 - Responsive Websites & Grid-Based LayoutsICF CIRCUIT
 
Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event HandlingWebStackAcademy
 
Leveraging the Power of Custom Elements in Gutenberg
Leveraging the Power of Custom Elements in GutenbergLeveraging the Power of Custom Elements in Gutenberg
Leveraging the Power of Custom Elements in GutenbergFelix Arntz
 

Ähnlich wie Moving from AS3 to Flex - advantages, hazards, traps (20)

WebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open webWebGL: GPU acceleration for the open web
WebGL: GPU acceleration for the open web
 
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
Building AOL's High Performance, Enterprise Wide Mail Application With Silver...
 
Fly High With Angular - How to build an app using Angular
Fly High With Angular - How to build an app using AngularFly High With Angular - How to build an app using Angular
Fly High With Angular - How to build an app using Angular
 
Os Haase
Os HaaseOs Haase
Os Haase
 
JSUG - Filthy Flex by Christoph Pickl
JSUG - Filthy Flex by Christoph PicklJSUG - Filthy Flex by Christoph Pickl
JSUG - Filthy Flex by Christoph Pickl
 
Lightning web components - Introduction, component Lifecycle, Events, decorat...
Lightning web components - Introduction, component Lifecycle, Events, decorat...Lightning web components - Introduction, component Lifecycle, Events, decorat...
Lightning web components - Introduction, component Lifecycle, Events, decorat...
 
Silverlight 2 For Developers
Silverlight 2 For DevelopersSilverlight 2 For Developers
Silverlight 2 For Developers
 
Web Apps and more
Web Apps and moreWeb Apps and more
Web Apps and more
 
Web app and more
Web app and moreWeb app and more
Web app and more
 
IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009IPhone Web Development With Grails from CodeMash 2009
IPhone Web Development With Grails from CodeMash 2009
 
Test
TestTest
Test
 
Gatsby (Code.Talks) 2019
Gatsby (Code.Talks) 2019Gatsby (Code.Talks) 2019
Gatsby (Code.Talks) 2019
 
Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt Responsive Websites and Grid-Based Layouts by Gabriel Walt
Responsive Websites and Grid-Based Layouts by Gabriel Walt
 
Rp 6 session 2 naresh bhatia
Rp 6  session 2 naresh bhatiaRp 6  session 2 naresh bhatia
Rp 6 session 2 naresh bhatia
 
Asp.Net Mvc Dev Days09
Asp.Net Mvc Dev Days09Asp.Net Mvc Dev Days09
Asp.Net Mvc Dev Days09
 
CIRCUIT 2015 - Responsive Websites & Grid-Based Layouts
CIRCUIT 2015 - Responsive Websites & Grid-Based LayoutsCIRCUIT 2015 - Responsive Websites & Grid-Based Layouts
CIRCUIT 2015 - Responsive Websites & Grid-Based Layouts
 
AEM responsive
AEM responsiveAEM responsive
AEM responsive
 
React october2017
React october2017React october2017
React october2017
 
Angular - Chapter 4 - Data and Event Handling
 Angular - Chapter 4 - Data and Event Handling Angular - Chapter 4 - Data and Event Handling
Angular - Chapter 4 - Data and Event Handling
 
Leveraging the Power of Custom Elements in Gutenberg
Leveraging the Power of Custom Elements in GutenbergLeveraging the Power of Custom Elements in Gutenberg
Leveraging the Power of Custom Elements in Gutenberg
 

Mehr von Florian Weil

Multi(Touch) Gesture Research
Multi(Touch) Gesture ResearchMulti(Touch) Gesture Research
Multi(Touch) Gesture ResearchFlorian Weil
 
Hermits in our digital Age
Hermits in our digital AgeHermits in our digital Age
Hermits in our digital AgeFlorian Weil
 
Sense Ware Examples from Germany and Switzerland
Sense Ware Examples from Germany and SwitzerlandSense Ware Examples from Germany and Switzerland
Sense Ware Examples from Germany and SwitzerlandFlorian Weil
 
Senseware in the Germany Culture
Senseware in the Germany CultureSenseware in the Germany Culture
Senseware in the Germany CultureFlorian Weil
 
What did derhess.de before Liip
What did derhess.de before LiipWhat did derhess.de before Liip
What did derhess.de before LiipFlorian Weil
 
Liip Techtalk Flash Lite
Liip Techtalk Flash LiteLiip Techtalk Flash Lite
Liip Techtalk Flash LiteFlorian Weil
 
Liip Techtalk Ars Electronica 2008
Liip Techtalk Ars Electronica 2008Liip Techtalk Ars Electronica 2008
Liip Techtalk Ars Electronica 2008Florian Weil
 

Mehr von Florian Weil (7)

Multi(Touch) Gesture Research
Multi(Touch) Gesture ResearchMulti(Touch) Gesture Research
Multi(Touch) Gesture Research
 
Hermits in our digital Age
Hermits in our digital AgeHermits in our digital Age
Hermits in our digital Age
 
Sense Ware Examples from Germany and Switzerland
Sense Ware Examples from Germany and SwitzerlandSense Ware Examples from Germany and Switzerland
Sense Ware Examples from Germany and Switzerland
 
Senseware in the Germany Culture
Senseware in the Germany CultureSenseware in the Germany Culture
Senseware in the Germany Culture
 
What did derhess.de before Liip
What did derhess.de before LiipWhat did derhess.de before Liip
What did derhess.de before Liip
 
Liip Techtalk Flash Lite
Liip Techtalk Flash LiteLiip Techtalk Flash Lite
Liip Techtalk Flash Lite
 
Liip Techtalk Ars Electronica 2008
Liip Techtalk Ars Electronica 2008Liip Techtalk Ars Electronica 2008
Liip Techtalk Ars Electronica 2008
 

Kürzlich hochgeladen

React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...Karmanjay Verma
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfAarwolf Industries LLC
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Nikki Chapple
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observabilityitnewsafrica
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructureitnewsafrica
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Nikki Chapple
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024TopCSSGallery
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxAna-Maria Mihalceanu
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkPixlogix Infotech
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesBernd Ruecker
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFMichael Gough
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Karmanjay Verma
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...amber724300
 

Kürzlich hochgeladen (20)

React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...React JS; all concepts. Contains React Features, JSX, functional & Class comp...
React JS; all concepts. Contains React Features, JSX, functional & Class comp...
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
Landscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdfLandscape Catalogue 2024 Australia-1.pdf
Landscape Catalogue 2024 Australia-1.pdf
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
Microsoft 365 Copilot: How to boost your productivity with AI – Part one: Ado...
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security ObservabilityGlenn Lazarus- Why Your Observability Strategy Needs Security Observability
Glenn Lazarus- Why Your Observability Strategy Needs Security Observability
 
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical InfrastructureVarsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
Varsha Sewlal- Cyber Attacks on Critical Critical Infrastructure
 
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
Microsoft 365 Copilot: How to boost your productivity with AI – Part two: Dat...
 
Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024Top 10 Hubspot Development Companies in 2024
Top 10 Hubspot Development Companies in 2024
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
A Glance At The Java Performance Toolbox
A Glance At The Java Performance ToolboxA Glance At The Java Performance Toolbox
A Glance At The Java Performance Toolbox
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
React Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App FrameworkReact Native vs Ionic - The Best Mobile App Framework
React Native vs Ionic - The Best Mobile App Framework
 
QCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architecturesQCon London: Mastering long-running processes in modern architectures
QCon London: Mastering long-running processes in modern architectures
 
All These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDFAll These Sophisticated Attacks, Can We Really Detect Them - PDF
All These Sophisticated Attacks, Can We Really Detect Them - PDF
 
Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#Microservices, Docker deploy and Microservices source code in C#
Microservices, Docker deploy and Microservices source code in C#
 
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
JET Technology Labs White Paper for Virtualized Security and Encryption Techn...
 

Moving from AS3 to Flex - advantages, hazards, traps

  • 1. Thema: Flex Development Guideline SFUG Talk vom 17. März 2009 von Florian Weil
  • 2. Who I am... Personal Information ➲ Florian Weil ● from Germany (close to Frankfurt am Main) ● 26 years old ● Loves the mountains and the snow, yeah ● Professional Information ➲ Bachelor of Computer Science in Media ● Worked as a banker, Camera Operator Assistent, ● Filmmaker, Flash Lite and Interaction Developer Now: Flex Developer for the LIIP AG ● My website & blog: www.derhess.de ➲
  • 3. Why Flex? Why... Source: http://www.flickr.com/photos/dave_apple/ http://www.flickr.com/photos/adenocorticotropina/ http://www.flickr.com/photos/a_of_doom/
  • 4. Generally Motivation: ➲ Flash Development != Flex Development ● Flex is not really easy!! ● Have a look at: ● http://www.neatfilm.com/2008/01/20/flex-challenges-for-flash-ide-devleopers/ ● http://jessewarden.com/2008/01/when-you-hit-a-design-brick-wall-in-flex.html ● Objectives ➲ Give some hints for Learning Flex ● Understand the Basics of Flex ● The presentation is not diving in ➲ Design Patterns, Software Architecture ● Software Development Methods ● Interaction Design, Usability... ●
  • 5. Topics Choose the right Layout Management ➲ Absolute Layout (pixelbased) ● Dynamic Layout (percentage based) ● Custom Component Development ➲ Which kind of component ● State Management ● Skinning ● Metatags (Events, Embedded, Skinning) ● Child Management (Template Component) ● Working with Data ➲ ArrayCollection vs. Array ● Bindable ValueObjects and Functions ● Filter and Sort API ● DataProvider -> ICollection... ●
  • 6. Topics Choose the right Layout Management ➲ Pixelbased Layout ● Dynamicbased Layout ● Forms (Validator and Error Management) ● Custom Component Development ➲ Which kind of component ● MXML based Component ● AS Based ( Flex Framework Methods) ● State Management ● Property Manager Functions ● Transitions Management ● Skinning ● Degrafa... / setStyle() Perfomance hungry ● Metatags (Events, Embedded, Skinning) ●
  • 7. Flex Layout Management Source: http://www.flickr.com/photos/svensonsan/
  • 8. Absolute Layout For pixelbased Layout use the ➲ CANVAS Component For a dynamic layout, e.g. the ➲ constraints are your friends Why: ➲ ● working with absolute values ● No active Layout Management
  • 10. Dynamic based Layout Use Components like Hbox, Vbox etc. for ➲ relativ (percentage) values use these Components carefully ➲ What can you do: ➲ ● For paddings or align issues use the space component
  • 11. Forms Layout For all bigger User Input Screens use the ➲ Form Component Why: ➲ Easy and automatic Layout (FormItems) ● Error Handling Functionality ● Skinning/Render Functionality (Tooltips, required Fields) ●
  • 12. Custom Components Source: http://www.flickr.com/photos/bikeman04/
  • 13. Architecture of a visual Component Invalidation / validation Model ➲ Aggregate changes and execute them to the right time ● Event-driven Interaction Model ➲ Composition ➲ Parameterization of a component (Component in a ● component) Factories and item renderer ●
  • 14. Life Cycle of a visual Component 3 Phases: ➲ 1. Initialization ➲ Creating Components, attach to displaylist etc. ● 2. Updating ➲ Components has to react on the changes of the invalid/validation ● Modell 3. Destruction ➲ Remove Eventlisteners (!) ● Null Objects ● Garbage Collection ●
  • 15. Life Cycle Part 2 The most important life cycle Functions ➲ override protected function createChildren() ● override protected function commitProperties() ● override protected function measure():void ● override protected function ● updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void Tip: ➲ Extend your AS Component Class from the UIComponent ● Use and understand(!) the Flex Interface API ● More Information ➲ http://livedocs.adobe.com/flex/3/html/ascomponents_advanced ● http://iamdeepa.com/blog/?p=39 ●
  • 16. Which kind of component MXML vs. ActionScript Source: http://www.flickr.com/photos/dan4th/
  • 17. Which kind of component MXML based Component ➲ When the Component is not very complex ● The component could easily created by the standard ● Flex Component Set For creating a View or template class ● ActionScript based Component ➲ If you have to create some new (data-driven, interaction, ● skinning) logics If the component very complex, so you have to use the ● MVC Pattern or some similiar stuff Perfomance issues... ● Special case: Item Renderer... ➲
  • 18. State Management Attributes states and currentState are your ➲ friends ;-) Defining changes with the Classes / MXML Tag ➲ SetProperty ● SetEventHandler ● AddChild ● RemoveChild ●
  • 19. State Management Never implement an own state Management!!! ➲ Why use Flex States: ➲ Preview workflow in Flex Builder ● CurrentState code completion ● Flex Transition API ●
  • 20. Child Management Source: http://www.flickr.com/photos/kydd/
  • 21. Example: Imagebar Requirements: ➲ Headline ● dynamic numbers of pages (ToggleButtonBar) ● Filter Interface (Checkboxes) ● Container for visible childrens ● Thumbs (Childrens) ●
  • 22. Child Management Array or ArrayCollection ➲ For easy Child Management without a complex ● Rendering Would be better for data instances ● Repeater Component ➲ For few or many instance of the same component ● Dynamic Dataprovider ● ListComponent ➲ Rendering Manager for many instances ● Dynamic DataProvider ●
  • 23. Repeater vs. ListComponent Repeater ListComponent Rendering add and renders all Items Renders only the visible Items DataProvider ArrayCollection ArrayCollection, XMLList RenderItem normal Component ItemRenderer Customize Data public attributes data Getter/setter API Use Case All childrens should be visible RangeBased Rendering More Information about ItemRenderes: http://www.adobe.com/devnet/flex/articles/itemrenderers_pt1.html More Information about Repeater in ActionScript 3: http://blog.flexexamples.com/2008/05/28/displaying-radiobutton-con
  • 24. Skinning Changes the visual experience of a Flex ➲ application How to Skin ➲ ● Use the skinning attributes via MXML ● Use <mx:Style> Tag Type the style definition in the component ● Include a .css file per source Attribute ● Runtime Loading via SWF File ●
  • 25. Graphical Skinning Pixel Based ➲ Tools: Fireworks and Photoshop ● Embed .png, .jpg or gif Files ● Use Scale9-Grid Concept ● Knowledge Base: http://www.scalenine.com/gallery/ ● Vector Based ➲ Tools: Illustrator and Flash ● Embed: SWF and SWC Files ● Use Scale9-Grid Concept ● Tutorial: ● http://developer.yahoo.com/flash/articles/flex-skinning.html Flex component kit for Flash , Illustrator, Photoshop and ● Fireworks
  • 26. Programmatic Skinning Programmatic Skinning for ActionScript based ➲ renderings Use subclasses of Border, RectangularBorder, ● ProgrammaticSkin or the interfaces Tutorial for Programmatic Skinning ● www.degrafa.org is a nice Skinning Library ● Controlling the skinning functions ➲ Use the component functions setStyle() and getStyle() ● StyleManager Class is able to change the complete ● Graphical Experience of an application Method setStyle() is perfomance hungry ●
  • 27. Metatags... The most important Tags ➲ ● Bindable [Bindable] or [Bindable(event=quot;eventnamequot;)] ● Compiler adds EventListeners ● Event ● [Event(name=quot;enableChangedquot;, type=quot;flash.events.Eventquot;)] ● For a well code completion and documentation ● Embedded ● [Embed(source=quot;logo.gifquot;)] ● Importing graphics and other external data ● Compiling external data into the swf ● Many more Metatags ➲ http://livedocs.adobe.com/flex/3/html/metadata_3.html ●
  • 28. Working with data Source: http://www.flickr.com/photos/blude/
  • 29. Array vs. ArrayCollection Array ➲ Is native data typ ● Bindable: No ● API: very limited ● Sorting: limited on one compare Function ● Filtering: limited on one callback Function ● ArrayCollection ➲ Is a wrapper class for arrays ● Creation of ArrayCollection costs a lot of perfomance ● compared to a creation of an array Bindable: yes and very compatible to flex template ● components (e.g. ListBox) Flex Sorting API ●
  • 30. Sort API Sort API () ➲ Sort Class ● SortField Class ● Add the stuff to an ArrayCollection ● var dataSortField:SortField = new SortField(); dataSortField.name = quot;dataquot;; dataSortField.numeric = true; // Create the Sort object and add the SortField object var numericDataSort:Sort = new Sort(); numericDataSort.fields = [dataSortField]; // Set the ArrayCollection object's sort property to our custom sort arrColl.sort = numericDataSort; arrColl.refresh(); http://blog.flexexamples.com/2007/08/05/sorting-an-arrayc
  • 31. Binding Binding looks for changes in a data structure and ➲ informs all listeners to this changes Binding Properties ➲ Binding Datatypes ● Binding Classes, especially ValueObject Classe ● [Bindable] public var property:DataType; ● Binding Functions (eventbased) ➲ [Bindable(event=quot;eventnamequot;)] public function ● myFunction():DataType Needs always a dispatchEvent(new Event(„eventname“)); call ●
  • 32. Binding Part 2 Use carefully the Binding Functionality! ➲ Binding can cost a lot of Perfomance ➲ Because of a lot of listeners and dispatch Events ● Needless datatransfers and rendering updates ● Tools for better Binding Control ➲ (Advanced) Binding Functions ➲ MXML Tags Binding ● BindingUtils Class ● BindingWatchers Class ●
  • 33. Custom Collection MXML Model ➲ A data model for an MVC Architecture ● The Model component and an XML File could be ● directly combined It is bindable ● For Real Custom Data Structure ➲ implements the Interface ICollectionView ● extends the base class ListCollectionView ●
  • 34. Dynamic Data Handling HTTP Service Component ➲ Use the Events to work with the data ● Tutorial: Loading a XML File ● Tutorial: Read and Send Variables to a Server ● WSDL-Webservice Component ➲ Tutorial: Calling simple Web Service ●
  • 35. Flex Learning Links Introduction ➲ ● Inside RIA: Flex Introduction Serie ● http://www.adobe.com/devnet/flex/videotraining/ ● Flex Explorer Deeper Flex Framework understanding ➲ ● Costum Components ● Data Binding Ressources & article overview: ➲ ● http://www.scalenine.com → Skinning ● http://blog.flexexamples.com/tags/ ● http://derhess.de/weblog_detail.php?id=58
  • 36. Flex Books Start & Concepts of Flex 3 ➲ ● Adobe Press: Training from the Source ● O´Reilly: Flex 3 ● Friends of Ed: Advanced Flex 3 Daily Development ➲ ● O´Reilly: Flex 3 Cookbook ● Friends of Ed: Flex Solutions ● Addison-Wesley: Creating Visual Experiences Software Development ➲ ● Head First: Software Development ● Head First: Design Patterns ● Addison-Wesley: Elements of Reusable Object-Oriented Software
  • 37. Flex Tools & Libs Flex IDE PlugIns ➲ ● Subversion ● CodeSnippet ● Task Explorer Libraries ➲ ● FlexLib: http://code.google.com/p/flexlib/ ● Flex.org: http://flex.org/de/software/components ● Application Frameworks: PureMVC, Cairngorm ● Degrafa: http://degrafa.org/ ● Test-Driven-Development: fluint, flexUnit
  • 38. The End Source: http://www.flickr.com/photos/moogan/
  • 39. The End QUESTIONS?
  • 40. The End Part 2 Thanks :-)