Rage Against the Framework
David Ortinau
@davidortinau
http://davidortinau.com

15 yrs web, interactive, mobile.

Flash, iPhone, Android, WP7

BA English,
Maryville University
Rage Against the Framework
Mental Models



Susan Carey (1986), Don Norman (1988), Alan Cooper (1995) and IBM (1992)
“A mental model represents a person’s thought
  process for how something works (i.e., a person’s
  understanding of the surrounding world). Mental
  models are based on incomplete facts, past
  experiences, and even intuitive perceptions. They
  help shape actions and behavior, influence what
  people pay attention to in complicated situations,
  and define how people approach and solve
  problems.”




Susan Carey (1986)
Rage Against the Framework
Rage Against the Framework
Rage Against the Framework
via @iamFinch




“About Face 3: The Essentials of Interaction Design “, Alan Cooper
Pragmatic Principles
DRY
Loose Coupling
Composition
    over
 Inheritance
DataBinding
Data binding is the process of tying the data in one
  object to another object. It provides a convenient
  way to pass data between the different layers of
  the application. Data binding requires a source
  property, a destination property, and a triggering
  event that indicates when to copy the data from
  the source to the destination. An object dispatches
  the triggering event when the source property
  changes.




An Adobian
Basic Implementation
   [Bindable]
   public var arrayCollection:ArrayCollection;

   <s:List dataProvider=”{arrayCollection}” ... />
Tips
   Replacing the entire ArrayCollection forces the entire list
   to rebind, which can make everything flicker and not
   cool.

   Use disableAutoUpdate() and enableAutoUpdate() to
   control when your components are updated, such as
   during an edit session.

   Don’t use it if you don’t need it.
References
   Flex data binding pitfalls: common misuses and mistakes,
   Elad Elrom
   http://www.adobe.com/devnet/flex/articles/
   databinding_pitfalls.html

   About Data Binding in Flex 4.5
   http://help.adobe.com/en_US/flex/using/
   WS2db454920e96a9e51e63e3d11c0bf64c3d-7fff.html
Spark Skinning
Separation
   HostComponent
   - behavior, logic

   Skin or SparkSkin
   - visual representation and visual behavior
HostComponent
  Common Components
  - Button, ToggleButton, Label, TextInput, List, DataGroup,
  TitleWindow, etc.

  Custom Components
  - AccountPanel, PeopleFilterControl,
  PersonIconToggleButton
HostComponent
  override protected function partAdded(partName:String, instance:Object):void {
  
    super.partAdded(partName, instance);

  
   if (instance == nameInput) { ... add listeners, setup bindings }
  }



  override protected function partRemoved(partName:String, instance:Object):void {
  
    super.partRemoved(partName, instance);

  
   if (instance == nameInput) { ... remove listeners, release watchers }
  }
Applying a Skin
   <s:Button id="submitBtn" label="Submit"
      skinClass="skins.OrangeButtonSkin"/>

   <s:TitleWindow id="accountSettings"
      title="Account Settings"
      skinClass="skins.AccountSettingsTitleWindowSkin">
     <!-- content goes here -->
   </s:TitleWindow>
Rage Against the Framework
Set Component Default Skin
   this.setStyle("skinClass", CustomControlSkin);
References
   Introducing skinning in Flex 4, Ryan Frishberg
   http://www.adobe.com/devnet/flex/articles/
   flex4_skinning.html

   Creating a Custom Component and Skins in Flex 4,
   Christophe Coenraets
   http://coenraets.org/blog/2010/01/creating-a-custom-
   component-and-skins-in-flex-4/
States
Define States
  In the Skin:
  
     <s:states>
  
     
      <s:State name="disabled"/>
  
     
      <s:State name="down"/>
  
     
      <s:State name="over"/>
  
     
      <s:State name="up"/>
  
     </s:states>

  In the HostComponent:
        [SkinState("disabled")]
        [SkinState("down")]
        [SkinState("over")]
        [SkinState("up")]
Use States
  <s:Rect top="0" bottom="0" left="0" right="0" radiusX="6" radiusY="6" includeIn="up,over">
  
         <s:fill>
  
         
          <s:LinearGradient angle="90" angle.over= "-90 " >
  
         
          
         <s:GradientEntry color="0xfea25e" />
  
         
          
         <s:GradientEntry color="0xe94d0f"/>
  
         
          </s:LinearGradient>
  
         </s:fill>
  
         <s:filters>
  
         
          <s:GlowFilter color="0xee6200"
  
         
          
           blurX="2"
  
         
          
           blurY="2"
  
         
          
           strength="4"
  
         
          
           alpha="1"
  
         
          
           excludeFrom="up"
  
         
          />
  
         
          <s:DropShadowFilter color="0xdedede"
  
         
          
         angle="90"
  
         
          
         distance="1"
  
         
          
         blurX="2"
  
         
          
         blurY="2"
  
         
          
         includeIn="up"
  
         
          /> 
      
         
  
         </s:filters>
  </s:Rect>
Control State from Component
  override protected function getCurrentSkinState():String {
    if(_mode != “”) return _mode;
    return STATE_UP;
  }

  private function myCustomCode():void {
     ....something happened and I want to change state
     _mode = STATE_DOWN;
     invalidateSkinState();
  }
Tips
   There is no default state. Be explicit.

   Order matters.

   Set the currentState property.

   Using States with Bindings, a change in state will NOT
   rebind your data source.
References
  James Polanco and Aaron Pederson Flex 4 LifeCycle
  http://updates.developmentarc.com/flex_4_lifecycle.pdf

  Jonathan Campos, Flex 4 Spark Skinning
  http://www.unitedmindset.com/jonbcampos/2009/07/02/flex-4-spark-
  skinning/

  Flex 4 States: The Default State, David Ortinau
  http://www.davidortinau.com/blog/flex_4_states_the_default_state/
Transitions
View Example
  <s:states>
     <s:State name="state1" />
     <s:State name="state2" />
  </s:states>
  <s:transitions>
   <s:Transition fromState="state2" toState="*">
      <s:Sequence>
         <s:SetAction target="{logo}" property="currentState" value="hidden"/>
         <s:Pause target="{logo}" eventName="{Logo.TRANSITIONED_OUT}" />
         <s:RemoveAction target="{logo}" />
      </s:Sequence>
   </s:Transition>
  </s:transitions>
Sub Component Example
  <s:Transition fromState="visible" toState="*" autoReverse="true">
     <s:Sequence>
        <s:Parallel id="outTransition" duration="500">
          <s:Fade target="{simplyProfoundLogo}" alphaFrom="1" alphaTo="0" />
          <s:Move target="{simplyProfoundLogo}" xTo="600" />
        </s:Parallel>
        <s:CallAction target="{this}" functionName="dispatchEvent" args="{[new
        Event(TRANSITIONED_OUT)]}" />
     </s:Sequence>
  </s:Transition>
spark.effects
   AddAction                 Move
   Animate                   Move3D
   AnimateColor              RemoveAction
   AnimateFilter             Resize
   AnimateTransform          Rotate
   AnimateTransform3D        Rotate3D
   AnimateTransitionShader   Scale
   CallAction                Scale3D
   Crossfade                 SetAction
   Fade                      Wipe
                             WipeDirection
References
  Spark States and Transitions: Working in Concert, David Ortinau
  http://www.davidortinau.com/blog/
    spark_states_and_transitions_working_in_concert/

  Leonard Souza, Flexerific Effects
  http://www.leonardsouza.com/flex/flexerific/

  spark.effects
  http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/
    spark/effects/package-detail.html

  mx.effects
  http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/
    effects/package-detail.html
Layouts
spark.layouts
   BasicLayout
   HorizontalLayout
   TileLayout
   VerticalLayout
Works With
  Groups
  Containers (includes Lists)
  Skins
Custom Layout Tips
   Extend LayoutBase

   Overrides
   - measure()
   - updateDisplayList()

   Reference elements as ILayoutElement

   updateDisplayList is called often. Reset before applying changes.
   - element.setLayoutBoundsSize(NaN, NaN);
Minimum
  public class CustomLayout extends LayoutBase
  {
       override public function updateDisplayList(width:Number, height:Number):void
       {
            for (var i:int = 0; i<target.numelements; i++)
       {
                 var element:ILayoutElement = target.getElementAt(i);
                 … calc custom layout stuff
                 // size first
                 element.setLayoutBoundsSize(NaN, NaN); 
                 element.setLayoutBoundsPosition(x, y);
       }
       }
  }
References
   Enrique Duvos & Evtim Georgiev
   http://tv.adobe.com/watch/max-2010-develop/having-fun-with-layouts-in-flex-4/
   http://www.rialvalue.com/blog/2010/11/04/slides-for-having-fun-with-layouts-in-flex-4/

   Evtim Georgiev - Flex SDK Engineer
   http://evtimmy.com/2010/04/two-examples-of-layout-animations/
   http://tv.adobe.com/watch/flash-camp-boston/creating-custom-layouts-in-flex-4-

   Mihai Pricope
   http://miti.pricope.com/2009/05/29/playing-with-custom-layout-in-flex-4/

   Tink
   http://www.tink.ws/blog/carousellayout/
   https://github.com/tinklondon/tink

   Leonard Souza
   http://www.leonardsouza.com/flex/spark-layout-framework/
Contact Me

@davidortinau
http://davidortinau.com
dave@davidortinau.com

More Related Content

PDF
Юрий Буянов «Squeryl — ORM с человеческим лицом»
PDF
Single page webapps & javascript-testing
PDF
Introduction to Web Components
KEY
Dr. Strangelove or: How I learned to stop worrying and love HTML, CSS and Jav...
PPTX
jQuery Presentasion
PDF
Prototype UI
PDF
Zero to Hero, a jQuery Primer
PDF
OOCSS for JavaScript Pirates jQcon Boston
Юрий Буянов «Squeryl — ORM с человеческим лицом»
Single page webapps & javascript-testing
Introduction to Web Components
Dr. Strangelove or: How I learned to stop worrying and love HTML, CSS and Jav...
jQuery Presentasion
Prototype UI
Zero to Hero, a jQuery Primer
OOCSS for JavaScript Pirates jQcon Boston

What's hot (20)

KEY
jQuery('#knowledge').appendTo('#you');
PDF
Drupal & javascript
PPTX
HirshHorn theme: how I created it
PPT
J query b_dotnet_ug_meet_12_may_2012
PDF
Virtual Madness @ Etsy
PPTX
MVC and Razor - Doc. v1.2
PPTX
An introduction to javascript
PPTX
Rails, Postgres, Angular, and Bootstrap: The Power Stack
PPT
Jquery ui
PDF
Bag Of Tricks From Iusethis
PDF
td_mxc_rubyrails_shin
PDF
Building iPhone Web Apps using "classic" Domino
PDF
RicoLiveGrid
TXT
https://www.facebook.com/valdyna.monna?fref=ts
PDF
Therapeutic refactoring
PDF
Alfredo-PUMEX
PDF
JQuery UI
PPTX
Consuming Data From Many Platforms: The Benefits of OData - St. Louis Day of ...
PDF
Organizing Code with JavascriptMVC
PDF
Drupal Step-by-Step: How We Built Our Training Site, Part 1
jQuery('#knowledge').appendTo('#you');
Drupal & javascript
HirshHorn theme: how I created it
J query b_dotnet_ug_meet_12_may_2012
Virtual Madness @ Etsy
MVC and Razor - Doc. v1.2
An introduction to javascript
Rails, Postgres, Angular, and Bootstrap: The Power Stack
Jquery ui
Bag Of Tricks From Iusethis
td_mxc_rubyrails_shin
Building iPhone Web Apps using "classic" Domino
RicoLiveGrid
https://www.facebook.com/valdyna.monna?fref=ts
Therapeutic refactoring
Alfredo-PUMEX
JQuery UI
Consuming Data From Many Platforms: The Benefits of OData - St. Louis Day of ...
Organizing Code with JavascriptMVC
Drupal Step-by-Step: How We Built Our Training Site, Part 1
Ad

Viewers also liked (20)

PDF
It's All About Context
KEY
Practical IxD for Developers
PDF
A Strategist's Guide to Digital Fabrication
PPTX
Peering through the Clouds - Cloud Architectures You Need to Master
PPTX
Architecting Scalable Applications in the Cloud
PPTX
Architecting Applications the Microsoft Way
PPTX
Mobile platform war
PPTX
Application architecture jumpstart
PPTX
Advanced oop laws, principles, idioms
PPTX
Introduction to Windows Azure Virtual Machines
PDF
Agile Workspace
PPTX
Test Driven Development (TDD) with FlexUnit 4 - 360|Flex San Jose preso
PPTX
State of agile 2016
PDF
Tom Grey - Google Cloud Platform
PPT
Scrum and Test-driven development
PPTX
Agile Metrics That Matter
PDF
Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...
PDF
ATDD - Acceptance Test Driven Development
PDF
Symantec Intelligence Report: May 2015
PDF
It's All About Context
Practical IxD for Developers
A Strategist's Guide to Digital Fabrication
Peering through the Clouds - Cloud Architectures You Need to Master
Architecting Scalable Applications in the Cloud
Architecting Applications the Microsoft Way
Mobile platform war
Application architecture jumpstart
Advanced oop laws, principles, idioms
Introduction to Windows Azure Virtual Machines
Agile Workspace
Test Driven Development (TDD) with FlexUnit 4 - 360|Flex San Jose preso
State of agile 2016
Tom Grey - Google Cloud Platform
Scrum and Test-driven development
Agile Metrics That Matter
Overview on TDD (Test Driven Development) & ATDD (Acceptance Test Driven Deve...
ATDD - Acceptance Test Driven Development
Symantec Intelligence Report: May 2015
Ad

Similar to Rage Against the Framework (20)

PDF
Moving from AS3 to Flex - advantages, hazards, traps
KEY
Migrating fx3tofx4
PDF
Building Flash-based websites using Adobe Flex - Lesson 3/10
PPT
Introduction to flex
PPT
Skinning in Flex 4
PPT
Flex 4 Overview
KEY
Visual Experiences with flex 4
PPT
Adobe Flex Introduction
PPT
2007 Max Presentation - Creating Custom Flex Components
PPT
Building Cool apps with flex
PPT
What’s under your skin
PPT
Apocalypse Soon
PDF
Flash Camp - Degrafa & FXG
PDF
Visual Experience 360 Flex
PPTX
Flex 4 Component Development
PPT
Flex 4 Deep Dive
PPT
Flex 4 Deep Dive
PPTX
Basics of Flex Components, Skinning
PDF
Ajax-Tutorial
POTX
Flex Mobile Skinning Workshop
Moving from AS3 to Flex - advantages, hazards, traps
Migrating fx3tofx4
Building Flash-based websites using Adobe Flex - Lesson 3/10
Introduction to flex
Skinning in Flex 4
Flex 4 Overview
Visual Experiences with flex 4
Adobe Flex Introduction
2007 Max Presentation - Creating Custom Flex Components
Building Cool apps with flex
What’s under your skin
Apocalypse Soon
Flash Camp - Degrafa & FXG
Visual Experience 360 Flex
Flex 4 Component Development
Flex 4 Deep Dive
Flex 4 Deep Dive
Basics of Flex Components, Skinning
Ajax-Tutorial
Flex Mobile Skinning Workshop

Recently uploaded (20)

PDF
sustainability-14-14877-v2.pddhzftheheeeee
PDF
DP Operators-handbook-extract for the Mautical Institute
PDF
Five Habits of High-Impact Board Members
PPT
What is a Computer? Input Devices /output devices
PDF
Zenith AI: Advanced Artificial Intelligence
PDF
A comparative study of natural language inference in Swahili using monolingua...
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PPTX
Web Crawler for Trend Tracking Gen Z Insights.pptx
PDF
CloudStack 4.21: First Look Webinar slides
PPTX
Final SEM Unit 1 for mit wpu at pune .pptx
PDF
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
PDF
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
PDF
Enhancing emotion recognition model for a student engagement use case through...
PPTX
Tartificialntelligence_presentation.pptx
PPTX
O2C Customer Invoices to Receipt V15A.pptx
PDF
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
PDF
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
PDF
Hybrid model detection and classification of lung cancer
PDF
Taming the Chaos: How to Turn Unstructured Data into Decisions
PDF
Univ-Connecticut-ChatGPT-Presentaion.pdf
sustainability-14-14877-v2.pddhzftheheeeee
DP Operators-handbook-extract for the Mautical Institute
Five Habits of High-Impact Board Members
What is a Computer? Input Devices /output devices
Zenith AI: Advanced Artificial Intelligence
A comparative study of natural language inference in Swahili using monolingua...
Assigned Numbers - 2025 - Bluetooth® Document
Web Crawler for Trend Tracking Gen Z Insights.pptx
CloudStack 4.21: First Look Webinar slides
Final SEM Unit 1 for mit wpu at pune .pptx
From MVP to Full-Scale Product A Startup’s Software Journey.pdf
Video forgery: An extensive analysis of inter-and intra-frame manipulation al...
Enhancing emotion recognition model for a student engagement use case through...
Tartificialntelligence_presentation.pptx
O2C Customer Invoices to Receipt V15A.pptx
DASA ADMISSION 2024_FirstRound_FirstRank_LastRank.pdf
Hybrid horned lizard optimization algorithm-aquila optimizer for DC motor
Hybrid model detection and classification of lung cancer
Taming the Chaos: How to Turn Unstructured Data into Decisions
Univ-Connecticut-ChatGPT-Presentaion.pdf

Rage Against the Framework

  • 1. Rage Against the Framework
  • 2. David Ortinau @davidortinau http://davidortinau.com 15 yrs web, interactive, mobile. Flash, iPhone, Android, WP7 BA English, Maryville University
  • 4. Mental Models Susan Carey (1986), Don Norman (1988), Alan Cooper (1995) and IBM (1992)
  • 5. “A mental model represents a person’s thought process for how something works (i.e., a person’s understanding of the surrounding world). Mental models are based on incomplete facts, past experiences, and even intuitive perceptions. They help shape actions and behavior, influence what people pay attention to in complicated situations, and define how people approach and solve problems.” Susan Carey (1986)
  • 9. via @iamFinch “About Face 3: The Essentials of Interaction Design “, Alan Cooper
  • 11. DRY
  • 13. Composition over Inheritance
  • 15. Data binding is the process of tying the data in one object to another object. It provides a convenient way to pass data between the different layers of the application. Data binding requires a source property, a destination property, and a triggering event that indicates when to copy the data from the source to the destination. An object dispatches the triggering event when the source property changes. An Adobian
  • 16. Basic Implementation [Bindable] public var arrayCollection:ArrayCollection; <s:List dataProvider=”{arrayCollection}” ... />
  • 17. Tips Replacing the entire ArrayCollection forces the entire list to rebind, which can make everything flicker and not cool. Use disableAutoUpdate() and enableAutoUpdate() to control when your components are updated, such as during an edit session. Don’t use it if you don’t need it.
  • 18. References Flex data binding pitfalls: common misuses and mistakes, Elad Elrom http://www.adobe.com/devnet/flex/articles/ databinding_pitfalls.html About Data Binding in Flex 4.5 http://help.adobe.com/en_US/flex/using/ WS2db454920e96a9e51e63e3d11c0bf64c3d-7fff.html
  • 20. Separation HostComponent - behavior, logic Skin or SparkSkin - visual representation and visual behavior
  • 21. HostComponent Common Components - Button, ToggleButton, Label, TextInput, List, DataGroup, TitleWindow, etc. Custom Components - AccountPanel, PeopleFilterControl, PersonIconToggleButton
  • 22. HostComponent override protected function partAdded(partName:String, instance:Object):void { super.partAdded(partName, instance); if (instance == nameInput) { ... add listeners, setup bindings } } override protected function partRemoved(partName:String, instance:Object):void { super.partRemoved(partName, instance); if (instance == nameInput) { ... remove listeners, release watchers } }
  • 23. Applying a Skin <s:Button id="submitBtn" label="Submit" skinClass="skins.OrangeButtonSkin"/> <s:TitleWindow id="accountSettings" title="Account Settings" skinClass="skins.AccountSettingsTitleWindowSkin"> <!-- content goes here --> </s:TitleWindow>
  • 25. Set Component Default Skin this.setStyle("skinClass", CustomControlSkin);
  • 26. References Introducing skinning in Flex 4, Ryan Frishberg http://www.adobe.com/devnet/flex/articles/ flex4_skinning.html Creating a Custom Component and Skins in Flex 4, Christophe Coenraets http://coenraets.org/blog/2010/01/creating-a-custom- component-and-skins-in-flex-4/
  • 28. Define States In the Skin: <s:states> <s:State name="disabled"/> <s:State name="down"/> <s:State name="over"/> <s:State name="up"/> </s:states> In the HostComponent: [SkinState("disabled")] [SkinState("down")] [SkinState("over")] [SkinState("up")]
  • 29. Use States <s:Rect top="0" bottom="0" left="0" right="0" radiusX="6" radiusY="6" includeIn="up,over"> <s:fill> <s:LinearGradient angle="90" angle.over= "-90 " > <s:GradientEntry color="0xfea25e" /> <s:GradientEntry color="0xe94d0f"/> </s:LinearGradient> </s:fill> <s:filters> <s:GlowFilter color="0xee6200" blurX="2" blurY="2" strength="4" alpha="1" excludeFrom="up" /> <s:DropShadowFilter color="0xdedede" angle="90" distance="1" blurX="2" blurY="2" includeIn="up" /> </s:filters> </s:Rect>
  • 30. Control State from Component override protected function getCurrentSkinState():String { if(_mode != “”) return _mode; return STATE_UP; } private function myCustomCode():void { ....something happened and I want to change state _mode = STATE_DOWN; invalidateSkinState(); }
  • 31. Tips There is no default state. Be explicit. Order matters. Set the currentState property. Using States with Bindings, a change in state will NOT rebind your data source.
  • 32. References James Polanco and Aaron Pederson Flex 4 LifeCycle http://updates.developmentarc.com/flex_4_lifecycle.pdf Jonathan Campos, Flex 4 Spark Skinning http://www.unitedmindset.com/jonbcampos/2009/07/02/flex-4-spark- skinning/ Flex 4 States: The Default State, David Ortinau http://www.davidortinau.com/blog/flex_4_states_the_default_state/
  • 34. View Example <s:states> <s:State name="state1" /> <s:State name="state2" /> </s:states> <s:transitions> <s:Transition fromState="state2" toState="*"> <s:Sequence> <s:SetAction target="{logo}" property="currentState" value="hidden"/> <s:Pause target="{logo}" eventName="{Logo.TRANSITIONED_OUT}" /> <s:RemoveAction target="{logo}" /> </s:Sequence> </s:Transition> </s:transitions>
  • 35. Sub Component Example <s:Transition fromState="visible" toState="*" autoReverse="true"> <s:Sequence> <s:Parallel id="outTransition" duration="500"> <s:Fade target="{simplyProfoundLogo}" alphaFrom="1" alphaTo="0" /> <s:Move target="{simplyProfoundLogo}" xTo="600" /> </s:Parallel> <s:CallAction target="{this}" functionName="dispatchEvent" args="{[new Event(TRANSITIONED_OUT)]}" /> </s:Sequence> </s:Transition>
  • 36. spark.effects AddAction Move Animate Move3D AnimateColor RemoveAction AnimateFilter Resize AnimateTransform Rotate AnimateTransform3D Rotate3D AnimateTransitionShader Scale CallAction Scale3D Crossfade SetAction Fade Wipe WipeDirection
  • 37. References Spark States and Transitions: Working in Concert, David Ortinau http://www.davidortinau.com/blog/ spark_states_and_transitions_working_in_concert/ Leonard Souza, Flexerific Effects http://www.leonardsouza.com/flex/flexerific/ spark.effects http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/ spark/effects/package-detail.html mx.effects http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/ effects/package-detail.html
  • 39. spark.layouts BasicLayout HorizontalLayout TileLayout VerticalLayout
  • 40. Works With Groups Containers (includes Lists) Skins
  • 41. Custom Layout Tips Extend LayoutBase Overrides - measure() - updateDisplayList() Reference elements as ILayoutElement updateDisplayList is called often. Reset before applying changes. - element.setLayoutBoundsSize(NaN, NaN);
  • 42. Minimum public class CustomLayout extends LayoutBase {      override public function updateDisplayList(width:Number, height:Number):void      {           for (var i:int = 0; i<target.numelements; i++)      {                var element:ILayoutElement = target.getElementAt(i);                … calc custom layout stuff                // size first                element.setLayoutBoundsSize(NaN, NaN);                 element.setLayoutBoundsPosition(x, y);      }      } }
  • 43. References Enrique Duvos & Evtim Georgiev http://tv.adobe.com/watch/max-2010-develop/having-fun-with-layouts-in-flex-4/ http://www.rialvalue.com/blog/2010/11/04/slides-for-having-fun-with-layouts-in-flex-4/ Evtim Georgiev - Flex SDK Engineer http://evtimmy.com/2010/04/two-examples-of-layout-animations/ http://tv.adobe.com/watch/flash-camp-boston/creating-custom-layouts-in-flex-4- Mihai Pricope http://miti.pricope.com/2009/05/29/playing-with-custom-layout-in-flex-4/ Tink http://www.tink.ws/blog/carousellayout/ https://github.com/tinklondon/tink Leonard Souza http://www.leonardsouza.com/flex/spark-layout-framework/

Editor's Notes

  • #2: Basically we are going to cover a lot of the things that frameworks, and specifically the Flex 4 Framework, provide for power and convenience. And tips to using them responsibly and effectively so they assist in creating awesome, fluid experiences instead of sabotaging them.\n\nYou will not walk away thinking I am a genius.\n
  • #3: \n
  • #4: This presentation is basically a brain dump of all the stuff I&amp;#x2019;ve learned doing ThisLife, going from pure AS, Flash dev with a little Flex 3 to full time, advanced Flex dev.\n
  • #5: \n
  • #6: Harvard, Cognitive Science and Science Education\n
  • #7: this is how the technology actually works\n
  • #8: how the user thinks the application will work\n
  • #9: design model\n\n
  • #10: \n
  • #11: We have a couple of principles that we as coders harp on. They are very good to keep in mind. BUT, they often present roadblocks to creating the smoothest experiences.\n
  • #12: To be DRY you have to organize your code in a way that all the components that need to do the same thing can access the same code. This can sometimes \n
  • #13: Minimize direct knowledge of other components.\nMessaging (events, signals).\nProgramming to Interfaces\nProgramming by Contract\n
  • #14: Rather than extending a class that contains behavior, we apply that behavior as a Class TO a Class.\n\nachieve polymorphic behavior\n
  • #15: What is it, and why use it.\nVery helpful, useful, but can cause a lot of problems if not managed properly\n\nSo many of my problems stem from a lack of understanding basic principles. When you hit a roadblock, stop and confirm you comprehend. Don&amp;#x2019;t just bang on it for hours until it works.\n
  • #16: \n
  • #17: \n
  • #18: \n
  • #19: \n
  • #20: Separation of component logic and view markup.\nHow to handle DataBinding without polluting skin markup\n\n[SkinPart]\n[SkinState]\npartAdded/partRemoved - make sure you do cleanup to prevent leaks\ninvalidateSkinState()\nInjects are NOT available in partAdded\nBindingUtils\n
  • #21: http://coenraets.org/blog/2010/01/creating-a-custom-component-and-skins-in-flex-4/\n
  • #22: http://coenraets.org/blog/2010/01/creating-a-custom-component-and-skins-in-flex-4/\n
  • #23: \n
  • #24: \n
  • #25: \n
  • #26: \n
  • #27: \n
  • #28: How to use States and State Groups\n
  • #29: \n
  • #30: \n
  • #31: \n
  • #32: \n
  • #33: \n
  • #34: How to handle show/hide for a component\nHow to perform transitions between States in a single component\nHow to perform transitions between States in a composite component\n
  • #35: \n
  • #36: \n
  • #37: \n
  • #38: \n
  • #39: Modifying Layouts for List components\nRemember DataGroup inside List\n
  • #40: \n
  • #41: \n
  • #42: \n
  • #43: \n
  • #44: \n
  • #45: \n