Wouter Verweirder (@wouter) en Koen De Weggheleire (@newmovieclip) presented this session at FITC Amsterdam in februari 2011.
You can find the demos of this presentation at
http://factory.happy-banana.be/interact_fitc_ams_2011/
2. SESSION overview
our DO’S and DONT’S
interaction with
Sound
Camera
Mobile /Other devices
Q and hopefully A
DEMO’s
3. our DO’S and DONT’S
Wouter Verweirder
Belgian Citizen, Lord of Sealand
@wouter
4. our DO’S and DONT’S
I DO:
Spend a yearly budget of € 200
to lightsaber apps, noble titles, …
Teach hardcore AS3 at HOWEST
Am a Happy Banana
Cheat on Flash Games
I DON’T
Use the lightsaber apps or noble
titles.
9. INTERACT! with sound
flash.media.sound
More control about input:
flash.media.Microphone
flash.media.SoundChannel
More control about output:
flash.media.SoundTransform
11. INTERACT! with sound
SampleDataEvent
Contains sample data: event.data
= ByteArray instance
readFloat() method avances through
available bytes 4 at a time.
soundBytes
9
10
11
12
13
14
15
16
17
18
readFloat() next starting point
12. INTERACT! with sound
Microphone.rate determines how many samples
are used every time the SampleDataHandler is
called.
rate: 44 44,100 khz 8192 samples
rate: 22 22,050 kHz 4096 samples
rate: 11 11,025 kHz 2048 samples
18. INTERACT! with Camera
Track pixel changes
Draw video into BitmapData instance
Use Difference blendmode
Set threshold and give pixels color
Check for color change
19. INTERACT! with Camera
flash.media.CameraRoll
CameraRoll.browseForImage()
CameraRoll.addBitmapData()
Check CameraRoll.supportsAddBitmapData
property
flash.media.CameraUI
CameraUI.launch(MediaType.IMAGE);
CameraUI.launch(MediaType.VIDEO);
Listen for Event.SELECT, Event.CANCEL
Event.data = MediaPromise instance
Use Loader.loadFilePromise() to load media
promise
20. INTERACT! with Camera
flash.media.MediaPromise
= promise to deliver a media object (image or
video)
Access to the actual file: use the File Property
Eg: promise.file.url,
promise.file.nativePath,...
23. INTERACT! with Touch
Native MouseEvents also supported.
flash.ui.Multitouch
TouchEvent
GestureEvent
Plan:
Step 1: Set the inputMode
Step 2: Check if MultiTouch is supported
Step 3: Add listeners for user interaction
Step 4: Write handler methods to react on UI
24. INTERACT! with Touch
TouchEvent
COOL: pressure property: between 0 and 1
TOUCH_BEGIN, TOUCH_END,
TOUCH_TAP,...
GestureEvent / TransformGestureEvent
More complex user contact
GESTURE_TWO_FINGER_TAP
ROTATE, SWIPE, ZOOM,...
25. INTERACT! with Touch
Multitouch.supportsTouchEvents
Multitouch.maxTouchPoints
TouchEvent has property touchPointID
Dragging : startTouchDrag, stopTouchDrag
28. INTERACT! with Devices
Use devices capabilities als input
Adobe AIR for Android
Adobe AIR for IOS
flash.sensors.Accelerometer
Using the motion sensor of Device
29. INTERACT! with Devices
AccelerometerEvent contains data
AccelerationEvent.accelerationX
AccelerationEvent.accelerationY
AccelerationEvent.accelerationZ
Send the data to a Server
UDP would be nice…
Flash.net.Socket (TCP/IP)
Create Socket Server with Adobe AIR
30. INTERACT! with Devices
CLIENT applications: Socket class
CLIENT sents commands to the SocketServer
31. INTERACT! with Devices
ServerSocket: listen for connections on port
When client is connected: SOCKET_DATA
36. INTERACT! with Kinect
as3osceleton
Open-sourced today
Runs on top of OSCeleton & TUIOKinect
Translates joints into cursors using
TUIOKinect bridge
initial setup
37. INTERACT! with Kinect
Event Driven:
UserEvent.USER_JOINED
UserEvent.USER_LEFT
UserEvent.SKELETON_CREATED
JointChangedEvent.JOINT_CHANGED
Translation of hands to multitouch cursors