Custom Components In Flex 4

120
Custom Components in Flex 4 Mrinal Wadhwa http://www.mrinalwadhwa.com

description

Adobe Devsummit Presentation on Custom Components in Flex 4 by Mrinal Wadhwa

Transcript of Custom Components In Flex 4

Page 1: Custom Components In Flex 4

Custom Components in Flex 4

Mrinal Wadhwahttp://www.mrinalwadhwa.com

Page 2: Custom Components In Flex 4

What is a component ?

Page 3: Custom Components In Flex 4
Page 4: Custom Components In Flex 4

Composition

Page 5: Custom Components In Flex 4
Page 6: Custom Components In Flex 4
Page 7: Custom Components In Flex 4
Page 8: Custom Components In Flex 4
Page 9: Custom Components In Flex 4

a squad ...

Page 10: Custom Components In Flex 4

Squad.mxml

Page 11: Custom Components In Flex 4
Page 12: Custom Components In Flex 4

a legion ...

Page 13: Custom Components In Flex 4

Legion.mxml

Page 14: Custom Components In Flex 4
Page 15: Custom Components In Flex 4
Page 16: Custom Components In Flex 4

the architecture ...

Page 17: Custom Components In Flex 4
Page 18: Custom Components In Flex 4

in flex ...

Page 19: Custom Components In Flex 4

Halothe architecture of components in Flex 3 and before

Page 20: Custom Components In Flex 4

Sparkthe architecture of components in Flex 4

Page 21: Custom Components In Flex 4

all components inherit from ...

mx.core.UIComponent

Page 22: Custom Components In Flex 4

in Spark its more common to use ...

spark.components.supportClasses.SkinnableComponent

Page 23: Custom Components In Flex 4

the lifecycle of a component ...

Page 24: Custom Components In Flex 4

BIRTH

Page 25: Custom Components In Flex 4

BIRTH

LIFE

Page 26: Custom Components In Flex 4

BIRTH

LIFE

DEATH

Page 27: Custom Components In Flex 4

Why does a component need a life cycle?

Page 28: Custom Components In Flex 4

Flex applications run in the Flash Player

Page 29: Custom Components In Flex 4

What Flex can do is a subset of what the Flash Player can do, not a superset.

Page 30: Custom Components In Flex 4

so to understand flex components better, lets take a deeper look at how the flash player works ...

Page 31: Custom Components In Flex 4

Frames

Page 32: Custom Components In Flex 4

everything is done in frames ...

Frames

Page 33: Custom Components In Flex 4

the number of frames processed per second (fps)

Frame Rate

Page 34: Custom Components In Flex 4

you can suggest the player a frame rate you would like your swf to have ...

Frame Rate

Page 35: Custom Components In Flex 4

[SWF(width=”800”,height=”600”,frameRate=”60”)]

ORstage.frameRate = 60;

OR<s:Application frameRate=”60” ... >

Frame Rate

Page 36: Custom Components In Flex 4

the player tries its best to maintain the suggested frame rate, but there are no guarantees ...

Frame Rate

Page 37: Custom Components In Flex 4

the actual framerate achieved may be lower or higher than what we suggested ...

Frame Rate

Page 38: Custom Components In Flex 4

browsers can force a lower framerate on the flash player ...

Frame Rate

Page 39: Custom Components In Flex 4

In Firefox and Safari, frame rate falls to about 10 if the Tab running the swf is out of focus ...

Frame Rate

Page 40: Custom Components In Flex 4

In Safari if window is minimized, framerate falls to zero ..

Frame Rate

Page 41: Custom Components In Flex 4

now lets take a deeper look at what happens inside each frame ..

Page 42: Custom Components In Flex 4

1 frame

renderingcode execution

the length of the track represents the time taken by this frame

Page 43: Custom Components In Flex 4

1 frame

renderingcode execution

1 frame

heavy code execution

the length of the track represents the time taken by this frame

Page 44: Custom Components In Flex 4

1 frame

renderingcode execution

1 frame

heavy code execution heavy rendering

1 frame

the length of the track represents the time taken by this frame

Page 45: Custom Components In Flex 4

the length of the track represents the time taken by this frame

1 frame

renderingcode execution

1 frame

heavy code execution heavy rendering

1 frame

Ted Patrick called this ...

Page 46: Custom Components In Flex 4

the length of the track represents the time taken by this frame

1 frame

renderingcode execution

1 frame

heavy code execution heavy rendering

1 frame

The Elastic Racetrack

Page 47: Custom Components In Flex 4

Sean Christmann did some more research on this ...

Page 48: Custom Components In Flex 4

He proposed AVM2 is controlled by something he called the Marshal ..

The Marshal

Page 49: Custom Components In Flex 4

the marshal is responsible for carving out time slices ...

The Marshal

Page 50: Custom Components In Flex 4

the duration of a slice can vary based on your OS,browser etc.

just for our discussion lets assume a slice is 20ms long ..

The Marshal

Page 51: Custom Components In Flex 4

A Marshaled Slice

Page 52: Custom Components In Flex 4

but all these actions may not happen on each slice ...

A Marshaled Slice

Page 53: Custom Components In Flex 4

Flash Player’s Event.RENDER event is fired at this point

A Marshaled Slice

Page 54: Custom Components In Flex 4

invalidate action and render action only happen in the last slice of a frame ..

A Marshaled Slice

Page 55: Custom Components In Flex 4

with 20ms slices ...

Page 56: Custom Components In Flex 4

code execution

with 20ms slices ...

Page 57: Custom Components In Flex 4

render

with 20ms slices ...

Page 58: Custom Components In Flex 4

with 20ms slices ...

Page 59: Custom Components In Flex 4

code execution

with 20ms slices ...

Page 60: Custom Components In Flex 4

render

with 20ms slices ...

Page 61: Custom Components In Flex 4

with 20ms slices ...

Page 62: Custom Components In Flex 4

Code can be executed more often than the times stuff is rendered on the screen ...

Page 63: Custom Components In Flex 4

... this is the main reason a component needs a lifecycle

performance

Page 64: Custom Components In Flex 4

BIRTH

LIFE

DEATH

Page 65: Custom Components In Flex 4

Construction

Addition

Initialization

BIRTH

LIFE

DEATH

Page 66: Custom Components In Flex 4

Construction

Addition

Initialization

BIRTH

Invalidation

Validation

Update

LIFE

DEATH

Page 67: Custom Components In Flex 4

Construction

Addition

Initialization

Invalidation

Validation

Update

Removal

BIRTH

LIFE

DEATH

Page 68: Custom Components In Flex 4
Page 69: Custom Components In Flex 4
Page 70: Custom Components In Flex 4

StormTrooper.as

Page 71: Custom Components In Flex 4

StormTrooperSkin.mxml

Page 72: Custom Components In Flex 4

Constructor

Page 73: Custom Components In Flex 4

Constructor

Page 74: Custom Components In Flex 4

Construction

Addition

Initialization

Invalidation

Validation

Update

Removal

BIRTH

LIFE

DEATH

Page 75: Custom Components In Flex 4

Construction

Addition

Initialization

Invalidation

Validation

Update

Removal

BIRTH

LIFE

DEATH

Page 76: Custom Components In Flex 4

Invalidation

Validation

Update

LIFE

Event.RENDER

updateDisplayList

layoutChrome(optional)

measure

commitProperties

invalidateDisplayList

invalidateSize

invalidateProperties

Page 77: Custom Components In Flex 4

the lifecycle methods ...

Page 78: Custom Components In Flex 4

Invalidation/Validation cycle (Life)

invalidateProperties

invalidateSize

invalidateDisplayList

commitProperties

measure

updateDisplayList

Page 79: Custom Components In Flex 4
Page 80: Custom Components In Flex 4
Page 81: Custom Components In Flex 4
Page 82: Custom Components In Flex 4

defining states ...

Page 83: Custom Components In Flex 4
Page 84: Custom Components In Flex 4
Page 85: Custom Components In Flex 4
Page 86: Custom Components In Flex 4
Page 87: Custom Components In Flex 4

defining skin parts ...

Page 88: Custom Components In Flex 4
Page 89: Custom Components In Flex 4

static ...

when the number of instances needed is known and small

Page 90: Custom Components In Flex 4
Page 91: Custom Components In Flex 4
Page 92: Custom Components In Flex 4

dynamic ...

Page 93: Custom Components In Flex 4
Page 94: Custom Components In Flex 4
Page 95: Custom Components In Flex 4
Page 96: Custom Components In Flex 4

required ...

Page 97: Custom Components In Flex 4
Page 98: Custom Components In Flex 4

optional ...

Page 99: Custom Components In Flex 4
Page 100: Custom Components In Flex 4

partAdded and partRemoved

Page 101: Custom Components In Flex 4

defining properties ...

Page 102: Custom Components In Flex 4
Page 103: Custom Components In Flex 4
Page 104: Custom Components In Flex 4
Page 105: Custom Components In Flex 4
Page 106: Custom Components In Flex 4

Bindable properties

Page 107: Custom Components In Flex 4
Page 108: Custom Components In Flex 4
Page 109: Custom Components In Flex 4

throwing events ...

Page 110: Custom Components In Flex 4
Page 111: Custom Components In Flex 4
Page 112: Custom Components In Flex 4

.......

Page 113: Custom Components In Flex 4

defining styles ...

Page 114: Custom Components In Flex 4
Page 115: Custom Components In Flex 4
Page 116: Custom Components In Flex 4
Page 117: Custom Components In Flex 4
Page 118: Custom Components In Flex 4
Page 119: Custom Components In Flex 4

?

Page 120: Custom Components In Flex 4

http://www.mrinalwadhwa.comhttp://twitter.com/mrinal

Mrinal Wadhwa