Transcript
Page 1: Beefing Up AIR - FITC AMS 2012

Native extensions in AIR 3.0

BEEFING UP AIR

Page 2: Beefing Up AIR - FITC AMS 2012

@WOUTER

•Wouter Verweirder

• blog.aboutme.be

• Lecturer @ HOWEST

• Partner @ Happy Banana

• AS3NUI / AIRKinect

Page 3: Beefing Up AIR - FITC AMS 2012
Page 4: Beefing Up AIR - FITC AMS 2012

1.What is a native extension

2.Build a native extension

1. Hello World

2. Working with AS Objects

3. Threading / Communication

4. What about Android

3.Use a native extension

4.AIRKinect extension

5.Q & (hopefully) A

SESSION OVERVIEW

Page 5: Beefing Up AIR - FITC AMS 2012

WHAT IS A NATIVE EXTENSION?

• Extend the features of the AIR runtime !

• For TV, Mobile, Desktop

Page 7: Beefing Up AIR - FITC AMS 2012

Flex

ActionScript

AIR

OS

extension

AS3

DLL

AS3

JAR...

WHAT IS A NATIVE EXTENSION?

Page 8: Beefing Up AIR - FITC AMS 2012

library.swf

ext.dll

library.swf

ext.jar...

extension.xml

catalog.xmllibrary.swf

ANE FILE STRUCTURE

Page 9: Beefing Up AIR - FITC AMS 2012

ANE FILE STRUCTURE

REGULAR SWC FILE

Page 10: Beefing Up AIR - FITC AMS 2012

ANE FILE STRUCTURE

ANE FILE

Page 11: Beefing Up AIR - FITC AMS 2012

WHY?

• access native platform specific code libraries

• Re-use legacy native code

• Increase performance (native performance / threading)

Page 12: Beefing Up AIR - FITC AMS 2012

WRITING AN EXTENSION

• ActionScript: ExtensionContext class

•Native:

• C entry point on Windows, OSX, iOS (& Android)

• Java entry point on Android

Page 13: Beefing Up AIR - FITC AMS 2012

WRITING AN EXTENSION

adt ane file

Page 14: Beefing Up AIR - FITC AMS 2012

1. Create ExtensionContext object

2. Look up link with native code in XML

Page 15: Beefing Up AIR - FITC AMS 2012

3. Link the context initializer

4. Link the native functions in the context initializer

Page 16: Beefing Up AIR - FITC AMS 2012

5. Call a method in native code

Page 17: Beefing Up AIR - FITC AMS 2012

context initializer

context finalizer

function calls & events

extension initializer

extension finalizer

Page 18: Beefing Up AIR - FITC AMS 2012

Demo Hello World

Page 19: Beefing Up AIR - FITC AMS 2012

• Construct new AS3 Objects

• Get AS3 Object Type

• Get / Set properties of AS3 Objects

• Call AS3 Object methods

WORKING WITH AS OBJECTS

Page 20: Beefing Up AIR - FITC AMS 2012

WORKING WITH AS OBJECTSSIMPLE DATA TYPES

Page 21: Beefing Up AIR - FITC AMS 2012

WORKING WITH AS OBJECTSAS CLASS INSTANCES

Page 22: Beefing Up AIR - FITC AMS 2012

WORKING WITH AS OBJECTSEXAMPLE:

Page 23: Beefing Up AIR - FITC AMS 2012

ARRAY / VECTOR METHODS

Page 24: Beefing Up AIR - FITC AMS 2012

BYTEARRAY / BITMAPDATA

acquire

release

memory access No other API methods are allowed here

Page 25: Beefing Up AIR - FITC AMS 2012

BYTEARRAY / BITMAPDATA

Page 26: Beefing Up AIR - FITC AMS 2012

BYTEARRAY / BITMAPDATA

EXAMPLE:

Page 27: Beefing Up AIR - FITC AMS 2012

Demo ByteArray Access

Page 28: Beefing Up AIR - FITC AMS 2012

THREADING• Is allowed in the native extension :-)

•NO FRE API calls allowed outside the main thread

• except for : FREDispatchStatusEventAsync

Page 29: Beefing Up AIR - FITC AMS 2012

THREADING

Page 30: Beefing Up AIR - FITC AMS 2012

Demo Threading

Page 31: Beefing Up AIR - FITC AMS 2012

WHAT ABOUT ANDROID ?

• C API for Windows, OSX & iOS

• Java Wrapper for Android:

• com.adobe.fre.FREExtension

• com.adobe.fre.FREContext

• com.adobe.fre.FREFunction

create instance of...

returns collection of...

Page 32: Beefing Up AIR - FITC AMS 2012

WHAT ABOUT ANDROID ?

EXAMPLE:

Page 33: Beefing Up AIR - FITC AMS 2012

EXAMPLE:

WHAT ABOUT ANDROID ?

Page 34: Beefing Up AIR - FITC AMS 2012

WHAT ABOUT ANDROID ?

EXAMPLE:

Page 35: Beefing Up AIR - FITC AMS 2012

Demo Mobile UDP extension

Page 36: Beefing Up AIR - FITC AMS 2012

library.swf

ext.dll

library.swf

ext.jar...

extension.xml

catalog.xmllibrary.swf

PACKAGING AN ANE

Page 37: Beefing Up AIR - FITC AMS 2012

1.Compile SWC of your AS3 code

2.Unzip SWC file, get library.swf file

3.Put swc, library.swf, extension.xml & native builds (dll, ...) in one directory

4.Run adt command

PACKAGING AN ANE

Page 38: Beefing Up AIR - FITC AMS 2012

adt -package -storetype pkcs12 -storepass p@ssw0rd -keystore key.p12 -tsa none -target ane HelloWorldExtension.ane extension.xml -swc helloworldas.swc -platform MacOS-x86 library.swf HelloWorld.framework -platform Windows-x86 library.swf HelloWorld.dll

http://help.adobe.com/en_US/air/build/WS789ea67d3e73a8b22388411123785d839c-8000.html

PACKAGING AN ANE

Page 39: Beefing Up AIR - FITC AMS 2012

BUILDING APPS WITH ANE’S

Page 40: Beefing Up AIR - FITC AMS 2012

BUILDING APPS WITH ANE’S

Page 41: Beefing Up AIR - FITC AMS 2012

BUILDING APPS WITH ANE’S

Page 42: Beefing Up AIR - FITC AMS 2012

AIRKINECT

•Native extension to use the Kinect in your AIR apps

• Current version: 1.7.1

• Full skeleton Data

• Camera Streams: RGB & Depth

• Point Cloud info

Page 43: Beefing Up AIR - FITC AMS 2012

Created By Tim Camerlinckx - http://vimeo.com/34614887

Page 44: Beefing Up AIR - FITC AMS 2012

Created By Yannick Van der Goten - http://vimeo.com/34563640

Page 45: Beefing Up AIR - FITC AMS 2012

Created By Laurents Laire - http://vimeo.com/34264122

Page 46: Beefing Up AIR - FITC AMS 2012

Created By Simon Pertz - http://vimeo.com/34681243

Page 47: Beefing Up AIR - FITC AMS 2012

AIRKINECT 2.0

• Simplified API

•New features:

• Skeleton Joint Rotations

• User center-of-mass

• Point Cloud Regions

• IR Camera Stream

Page 48: Beefing Up AIR - FITC AMS 2012

Time for some Kinect coding!

Page 49: Beefing Up AIR - FITC AMS 2012

Questions(and hopefully some answers...)

Page 50: Beefing Up AIR - FITC AMS 2012

Thank you!

@wouterhttp://blog.aboutme.behttp://www.as3nui.com

http://www.happy-banana.be


Top Related