Developing AIR for Mobile with Flash Professional CS5.5

49
Developing AIR for Mobile using Flash Professional CS5.5 @ChrisGriffith

description

This is a presentation I gave at FlashTent.org

Transcript of Developing AIR for Mobile with Flash Professional CS5.5

Page 1: Developing AIR for Mobile with Flash Professional CS5.5

Developing AIR for Mobileusing Flash Professional CS5.5

@ChrisGriffith

Page 2: Developing AIR for Mobile with Flash Professional CS5.5

These opinions and thoughts are my own, and may or may not reflect the opinions of the company that I work for.

Disclaimer

Page 3: Developing AIR for Mobile with Flash Professional CS5.5
Page 4: Developing AIR for Mobile with Flash Professional CS5.5

Mobile is Everywhere

Page 5: Developing AIR for Mobile with Flash Professional CS5.5

Context

Page 6: Developing AIR for Mobile with Flash Professional CS5.5

mobile vs. desktop

Page 7: Developing AIR for Mobile with Flash Professional CS5.5

Orientation

Page 8: Developing AIR for Mobile with Flash Professional CS5.5

Touch

44px

Page 9: Developing AIR for Mobile with Flash Professional CS5.5

Touch

The average fingertip is 3x larger than the hand cursor

Make your buttons 3x larger

Then make them even larger

Page 10: Developing AIR for Mobile with Flash Professional CS5.5

With fingers, come hands…

Page 11: Developing AIR for Mobile with Flash Professional CS5.5

Ergonomics

How will they touch it?• One Thumb?• Two Thumbs?• Pointer Finger?

Page 12: Developing AIR for Mobile with Flash Professional CS5.5
Page 13: Developing AIR for Mobile with Flash Professional CS5.5

Device Resolution PPI Physical

Nexus One/ HTC Incredible 800x480 254 3.7’

HTC EVO/ HTC Desire HD 800x480 217 4.3’

Droid/ Droid 2 854x480 265 3.7’

Droid X 854x480 240 4.3’

Samsung Galaxy S Vibrant 800x480 232 4.0’

iPhone 3GS and lower 480x320 163 3.5’

iPhone 4 / iPhone 4S 960x640 326 3.5’

iPad 1024x768 132 9.7’

Galaxy Tab 1024x600 170 7’

Data based on respective products published technical specifications

Pixels Per Inch (PPI)

Page 14: Developing AIR for Mobile with Flash Professional CS5.5

Adobe AIR allows designers and developers by providing a consistent and flexible development environment for the delivery of applications across devices and platforms. It supports Android™, BlackBerry Tablet OS, and iOS mobile operating.

What is Adobe AIR?

Page 15: Developing AIR for Mobile with Flash Professional CS5.5

• GeoLocation• Accelerometer• Camera• Multitouch / Gesture Support• Screen Orientation• Microphone• GPU Acceleration• SQLite DB• And more…

• No Native Widgets• No Access to Contacts• Limited SMS Support

AIR for Mobile Overview

Page 16: Developing AIR for Mobile with Flash Professional CS5.5

Get the Android SDK: http://developer.android.com/sdk

ADB – Android Device Debugger installs apps on your device

DDMS - Dalvik Debug Monitor for desktop simulation.

Download AIR 3.1 sdk http://www.adobe.com/products/air/

Get AIR for Android runtime .apk installed via Android Market

Creating an Android App: Setup

Page 17: Developing AIR for Mobile with Flash Professional CS5.5

Get the iOS SDK: http://developer.apple.com/programs/ios/

Allows you to create and install apps on your device

$99 per year

Download AIR 3.1 sdk http://www.adobe.com/products/air/

Creating an iOS App: Setup

Page 18: Developing AIR for Mobile with Flash Professional CS5.5

Updating AIR SDK

www.swfgeek.net/2011/09/26/targeting-flash-player-11-rc1-air-3-rc1-in-flash-professional-cs5-5/

Page 19: Developing AIR for Mobile with Flash Professional CS5.5

Emulator Device

Development Environments

Page 20: Developing AIR for Mobile with Flash Professional CS5.5

Accelerometer

var accel:Accelerometer = new Accelerometer();accel.addEventListener(AccelerometerEvent.UPDATE, update);

function update(e:AccelerometerEvent):void{

e.accelerationX;e.accelerationY;e.accelerationZ;

}

Page 21: Developing AIR for Mobile with Flash Professional CS5.5

Gestures

cell.addEventListener(TransformGestureEvent.GESTURE_ZOOM, onZoom);function onZoom(e:TransformGestureEvent):void{

cell.scaleX *= e.scaleX;cell.scaleY = cell.scaleX;

}

cell.addEventListener(TransformGestureEvent.GESTURE_ROTATE, onRotate);function onRotate(e:TransformGestureEvent):void{

cell.rotation += e.rotation;}

Page 22: Developing AIR for Mobile with Flash Professional CS5.5

Geolocation

var geo: Geolocation;

if (Geolocation.isSupported) { geo = new Geolocation(); geo.addEventListener(GeolocationEvent.UPDATE, updateHandler); geo.setRequestedUpdateInterval(10000);} else { log.text = "Geolocation feature not supported"; }

Page 23: Developing AIR for Mobile with Flash Professional CS5.5

Hardware Keys

stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown, false, 0, true);

function onKeyDown(event:KeyboardEvent):void { //Back Key if (event.keyCode == Keyboard.BACK) { event.preventDefault(); // to kill event from running default behavior //do your own back stuff }

//Menu Key if (event.keyCode == Keyboard.MENU) { event.preventDefault(); // to kill event from running default behavior //do your own back stuff }}

Page 24: Developing AIR for Mobile with Flash Professional CS5.5

Orientation

stage.scaleMode = StageScaleMode.NO_SCALE;

stage.align = StageAlign.TOP_LEFT;

function setPosition():void

{

vidHolder.x = stageWidth/2 - vidHolder.width/2;

vidHolder.y = stageHeight/2 - vidHolder.height/2;

//If the layout is vertical

if (stage.stageWidth < stage.stageHeight)

{

//Adjust graphics

}

}

setPosition();

stage.addEventListener(Event.RESIZE, resizeLayout);

function resizeLayout(e:Event):void

{

setPosition();

}

Page 25: Developing AIR for Mobile with Flash Professional CS5.5

SQLite Support

http://www.dehats.com/drupal/?q=node/58

Page 26: Developing AIR for Mobile with Flash Professional CS5.5

StageWebView

• You get a browser in your Flash app!

• Good solution for– Maps– Facebook Connect– Remote Content

Page 27: Developing AIR for Mobile with Flash Professional CS5.5

StageText

Page 28: Developing AIR for Mobile with Flash Professional CS5.5

StageVideo

Page 29: Developing AIR for Mobile with Flash Professional CS5.5

Captive Runtime

Developers now have more flexibility with their app packaging options and can automatically package AIR 3 with their Android™, iOS app into a single installation file that includes the app and a bundled version of the AIR runtime.

Page 30: Developing AIR for Mobile with Flash Professional CS5.5

ANEs

Use native code to take advantage of the same platform- and device-specific native capabilities and APIs available to native apps, with easy integration into AIR applications.

Page 31: Developing AIR for Mobile with Flash Professional CS5.5

Limitations

Page 32: Developing AIR for Mobile with Flash Professional CS5.5

No Native Controls

http://blog.kevinhoyt.com/2010/05/some-flash-android-components/

Page 33: Developing AIR for Mobile with Flash Professional CS5.5

No Access to Contacts

Page 34: Developing AIR for Mobile with Flash Professional CS5.5

Building Applications

Page 35: Developing AIR for Mobile with Flash Professional CS5.5

Don’t Fear the Timeline

Page 36: Developing AIR for Mobile with Flash Professional CS5.5

Publishing - Android

Page 37: Developing AIR for Mobile with Flash Professional CS5.5

Publishing - Android

Page 38: Developing AIR for Mobile with Flash Professional CS5.5

Publishing - iOS

Page 39: Developing AIR for Mobile with Flash Professional CS5.5

Publishing - iOS

Page 40: Developing AIR for Mobile with Flash Professional CS5.5

To the Market…

Page 41: Developing AIR for Mobile with Flash Professional CS5.5

Development Guidelines

Page 42: Developing AIR for Mobile with Flash Professional CS5.5

Graphics

• Consider bitmaps over vectors• Keep bitmaps as small as possible• Minimize number of vectors• Test your animations with different qualities of Stage

Avoid, if possible:• Filters• Blend modes• Transparency• Perspective distortion

Page 43: Developing AIR for Mobile with Flash Professional CS5.5

GPU Acceleration

Set rendering mode to GPU

Make sure cacheAsBitmap is set to true on your DisplayObject like this:square.cacheAsBitmap = true;

http://blogs.adobe.com/cantrell/archives/2010/10/gpu-rendering-in-adobe-air-for-android.html

Page 44: Developing AIR for Mobile with Flash Professional CS5.5

GPU Acceleration

cacheAsBitmapMatrix property

http://blog.theflashblog.com/?p=2386

Make sure to assign a Matrix to the cacheAsBitmapMatrix property on your DisplayObject like this:square.cacheAsBitmapMatrix = new Matrix();

Page 45: Developing AIR for Mobile with Flash Professional CS5.5

Text

Use opaque background over transparency

Avoid TLF Test different anti-aliasing techniques

(animation, bitmap text...) Avoid frequently-updated text Use appendText vs. text +=

Page 46: Developing AIR for Mobile with Flash Professional CS5.5

Display Objects

Use the appropriate type of display object

Objects that aren’t interactive, use Shape();trace(getSize(new Shape()));// output: 216

Interactive but no timeline? Use Sprite();trace(getSize(new Sprite()));// output: 396

Need animation? Use Movieclip();trace(getSize(new MovieClip()));// output: 416

Page 47: Developing AIR for Mobile with Flash Professional CS5.5

Freeing Movieclips

Alpha? RemoveChild? Visible?

Even when removed from the display list, the movie clip still dispatches the Event.ENTER_FRAME event.

runningBoy.addEventListener(Event.REMOVED_FROM_STAGE, deactivate);

function deactivate(e:Event):void{

e.currentTarget.removeEventListener(Event.ENTER_FRAME, handleMovement);

e.currentTarget.stop();

}

Page 48: Developing AIR for Mobile with Flash Professional CS5.5

Resources

Page 49: Developing AIR for Mobile with Flash Professional CS5.5

Thanks!

[email protected]

@chrisgriffith

http://chrisgriffith.wordpress.com/