Flash iOS Apps Cookbook
()
About this ebook
Related to Flash iOS Apps Cookbook
Related ebooks
JavaFX 1.2 Application Development Cookbook Rating: 0 out of 5 stars0 ratingsAndroid Application Development Cookbook - Second Edition Rating: 5 out of 5 stars5/5Visual Studio 2015 Cookbook - Second Edition Rating: 0 out of 5 stars0 ratingsDart Cookbook Rating: 0 out of 5 stars0 ratingsVisual Studio 2013 Cookbook Rating: 0 out of 5 stars0 ratingsOdoo Development Cookbook Rating: 0 out of 5 stars0 ratingsMicrosoft Team Foundation Server 2015 Cookbook Rating: 0 out of 5 stars0 ratingsYii Application Development Cookbook - Second Edition Rating: 0 out of 5 stars0 ratingsOracle APEX Cookbook - Second Edition Rating: 0 out of 5 stars0 ratingsMeteor Cookbook Rating: 5 out of 5 stars5/5PlayStationå¨Mobile Development Cookbook Rating: 0 out of 5 stars0 ratingsJIRA Development Cookbook - Third Edition Rating: 0 out of 5 stars0 ratingsYii 1.1 Application Development Cookbook Rating: 0 out of 5 stars0 ratingsBusiness Intelligence with MicroStrategy Cookbook Rating: 0 out of 5 stars0 ratingsMicrosoft Windows Azure Development Cookbook Rating: 5 out of 5 stars5/5Visual Studio 2013 and .NET 4.5 Expert Cookbook Rating: 4 out of 5 stars4/5Oracle JDeveloper 11gR2 Cookbook Rating: 0 out of 5 stars0 ratingsPHP 7: Real World Application Development Rating: 0 out of 5 stars0 ratingsWindows Server 2012 Automation with PowerShell Cookbook Rating: 0 out of 5 stars0 ratingsMicrosoft System Center 2012 Configuration Manager: Administration Cookbook Rating: 0 out of 5 stars0 ratingsLaravel Application Development Cookbook Rating: 0 out of 5 stars0 ratingsMicrosoft System Center Configuration Manager Cookbook - Second Edition Rating: 0 out of 5 stars0 ratingsMicrosoft Azure Development Cookbook Second Edition Rating: 5 out of 5 stars5/5Oracle E-Business Suite R12 Integration and OA Framework Development and Extension Cookbook Rating: 0 out of 5 stars0 ratingsPanda3d 1.7 Game Developer's Cookbook Rating: 0 out of 5 stars0 ratingsWordpress and Flash 10x Cookbook Rating: 0 out of 5 stars0 ratingsDelphi Cookbook - Second Edition Rating: 5 out of 5 stars5/5JIRA 5.x Development Cookbook Rating: 0 out of 5 stars0 ratingsEntity Framework Core Cookbook - Second Edition Rating: 0 out of 5 stars0 ratingsServiceStack 4 Cookbook Rating: 0 out of 5 stars0 ratings
Information Technology For You
Summary of Super-Intelligence From Nick Bostrom Rating: 5 out of 5 stars5/5Hacking Essentials - The Beginner's Guide To Ethical Hacking And Penetration Testing Rating: 3 out of 5 stars3/5How To Use Chatgpt: Using Chatgpt To Make Money Online Has Never Been This Simple Rating: 0 out of 5 stars0 ratingsComputer Science: A Concise Introduction Rating: 4 out of 5 stars4/5Creating Online Courses with ChatGPT | A Step-by-Step Guide with Prompt Templates Rating: 4 out of 5 stars4/5Practical Ethical Hacking from Scratch Rating: 5 out of 5 stars5/5Supercommunicator: Explaining the Complicated So Anyone Can Understand Rating: 3 out of 5 stars3/5Data Analytics for Beginners: Introduction to Data Analytics Rating: 4 out of 5 stars4/5CompTIA Network+ CertMike: Prepare. Practice. Pass the Test! Get Certified!: Exam N10-008 Rating: 0 out of 5 stars0 ratingsCybersecurity for Beginners : Learn the Fundamentals of Cybersecurity in an Easy, Step-by-Step Guide: 1 Rating: 0 out of 5 stars0 ratingsHow to Write Effective Emails at Work Rating: 4 out of 5 stars4/5Linux Command Line and Shell Scripting Bible Rating: 3 out of 5 stars3/5Handbook of Digital Forensics and Investigation Rating: 4 out of 5 stars4/5CompTIA A+ CertMike: Prepare. Practice. Pass the Test! Get Certified!: Core 1 Exam 220-1101 Rating: 0 out of 5 stars0 ratingsChatGPT: The Future of Intelligent Conversation Rating: 4 out of 5 stars4/5Data Governance For Dummies Rating: 0 out of 5 stars0 ratingsAWS Certified Cloud Practitioner: Study Guide with Practice Questions and Labs Rating: 5 out of 5 stars5/5The Basics of Hacking and Penetration Testing: Ethical Hacking and Penetration Testing Made Easy Rating: 4 out of 5 stars4/5Health Informatics: Practical Guide Rating: 0 out of 5 stars0 ratings20 Windows Tools Every SysAdmin Should Know Rating: 5 out of 5 stars5/5The Programmer's Brain: What every programmer needs to know about cognition Rating: 5 out of 5 stars5/5Computer Organization and Design: The Hardware / Software Interface Rating: 4 out of 5 stars4/5Guide to Healthcare Information Protection and Privacy for Executives Rating: 0 out of 5 stars0 ratingsAn Ultimate Guide to Kali Linux for Beginners Rating: 3 out of 5 stars3/5Windows Registry Forensics: Advanced Digital Forensic Analysis of the Windows Registry Rating: 4 out of 5 stars4/5Cyber Security Consultants Playbook Rating: 0 out of 5 stars0 ratings
Reviews for Flash iOS Apps Cookbook
0 ratings0 reviews
Book preview
Flash iOS Apps Cookbook - Christopher Caleb
Table of Contents
Flash iOS Apps Cookbook
Credits
About the Author
Acknowledgement
About the Reviewers
www.PacktPub.com
Support files, eBooks, discount offers, and more
Why Subscribe?
Free Access for Packt account holders
Preface
What this book covers
What you need for this book
Who this book is for
Conventions
Reader feedback
Customer support
Downloading the example code
Errata
Piracy
Questions
1. Getting Started with iOS App Development
Introduction
Joining the iOS Developer Program
Getting ready
How to do it...
Register as an Apple developer
Select your program
Complete your purchase
How it works...
There's more...
Working with multiple team members
iOS SDK, tools, and documentation
Accessing the iOS Provisioning Portal
Getting ready
How to do it...
How it works...
There's more...
Resources
Adding team members
Distribution
Technical support
Generating a Certificate Signing Request using Windows
Getting ready
How to do it...
How it works...
See also
Generating a Certificate Signing Request using Mac OS X
How to do it...
How it works...
See also
Obtaining your development certificate
Getting ready
How to do it...
How it works...
There's more...
Approving Certificate Signing Requests
Team roles
Distribution certificates
Creating a P12 certificate using Windows
Getting ready
How to do it...
How it works...
There's more...
Certificate expiration
Creating a P12 certificate using Mac OS X
Getting ready
How to do it...
How it works...
There's more...
Certificate expiration
Registering a device
Getting ready
How to do it...
How it works...
There's more...
Adding devices in a team environment
Editing device names
Device limit
UDID Sender
Creating an App ID
How to do it...
How it works...
There's more...
Bundle Identifier naming convention
App distribution
Editing App IDs
Creating a development provisioning profile
Getting ready
How to do it...
How it works...
There's more...
Profile expiration
Editing provisioning profiles
Additional provisioning profile types
Working with multiple team members
Installing a provisioning profile on your device
Getting ready
How to do it...
How it works...
There's more...
Removing provisioning profiles
iPhone Configuration Utility
2. Building iOS Apps Using Flash
Introduction
Installing the AIR SDK
Getting ready
How to do it...
Updating Flash Professional
Overlaying the AIR SDK
How it works...
Creating an AIR for iOS document
Getting ready
How to do it...
How it works...
There's more...
Stage dimensions
Frame rate
See also
Adding content to the stage
Getting ready
How to do it...
How it works...
See also
AIR for iOS general settings
Getting ready
How to do it...
How it works...
There's more...
Adding the status bar
Including files
See also
AIR for iOS deployment settings
Getting ready
How to do it...
How it works...
There's more...
Specifying an App ID
Deployment types
See also
Compiling from Flash Professional
Getting ready
How to do it...
How it works...
There's more...
The LLVM compiler infrastructure
Installing your app with iTunes
Getting ready
How to do it...
How it works...
There's more...
Updating version numbers
iPhone Configuration Utility
TestFlight
3. Writing your First App
Introduction
Creating a basic document class
Getting ready
How to do it...
How it works...
There's more...
Naming the document class
Using packages
Editing with Flash Builder
Creating other ActionScript 3.0 classes
See also
Preventing screen idle
Getting ready
How to do it...
How it works...
Handling multitasking
Getting ready
How to do it...
How it works...
There's more...
Background processing
App closing
Exiting gracefully from an app
Getting ready
How to do it...
How it works...
There's more...
The app switcher
Cleaning up
Script execution time
Linking classes to movie-clip symbols
How to do it...
How it works...
There's more...
Extending sprite
Using an update loop
How to do it...
How it works...
Including an application launch image
How to do it...
How it works...
There's more...
Landscape orientation
Supporting the Retina display
iPad launch images
Universal apps
Using the status bar
Bundling other files
See also
Including icons
How to do it...
How it works...
Editing the application descriptor file
Getting ready
How to do it...
How it works...
There's more...
Status bar style
See also
Remote debugging
Getting ready
How to do it...
Creating a debug build
Connecting to the Remote Debugger
How it works...
There's more...
Remote connection attempts
4. Porting Flash Projects to iOS
Introduction
Handling user interaction
Getting ready
How to do it...
Creating the button movie clip
Linking a class to the button
How it works...
There's more...
Re-using the button class
Handling keyboard controls
See also
Saving application state
Getting ready
How to do it...
How it works...
See also
Flattening the display list
Getting ready
How to do it...
How it works...
Converting vectors to bitmaps
Getting ready
How to do it...
How it works...
There's more...
Export as Bitmap
Convert to Bitmap
Working with timeline animation
Targeting multiple screen sizes
Pre-rendering filters and blends
See also
Resizing bitmaps
Getting ready
How to do it...
How it works...
There's more...
Targeting multiple screen sizes
Optimizing vector shapes
Stage quality
See also
Masking content
Getting ready
How to do it...
How it works...
See also
Working with external SWFs
Getting ready
How to do it...
Publishing a SWC
Statically linking the SWC
How it works...
There's more...
See also
5. Multi-touch and Gesture Support
Introduction
Setting the touch point input mode
Getting ready
How to do it...
How it works...
There's more...
Available touch events
Determining the number of supported touch points
Touch point hit targets
Mouse events
Testing in ADL
See also
Detecting multiple touch points
Getting ready
How to do it...
Updating the Bubble class
Responding to multiple touch events
How it works...
Handling roll out
There's more...
Primary touch point
Touch point ID
Local touch coordinates
Global touch coordinates
See also
Dragging multiple display objects
Getting ready
How to do it...
How it works...
There's more...
startTouchDrag() parameters
See also
Tracking movement
Getting ready
How to do it...
How it works...
See also
Setting the gesture input mode
Getting ready
How to do it...
How it works...
There's more...
Available gesture events and types
Determining the supported gestures
Mouse events
Testing in ADL
See also
Handling a swipe gesture
Getting ready
How to do it...
How it works...
There's more...
Swiping vertically
See also
Panning an object
Getting ready
How to do it...
How it works...
There's more...
Gesture phases
Single finger panning
See also
Rotating an object
Getting ready
How to do it...
How it works...
See also
Zooming an object
Getting ready
How to do it...
How it works...
See also
6. Graphics and Hardware Acceleration
Introduction
Comparing vector and bitmap graphics
Getting ready
How to do it...
How it works...
There's more...
Stage quality
See also
Understanding GPU-Blend mode
Getting ready
How to do it...
How it works...
The rendering process
CPU mode and GPU-Blend mode
Redrawing dirty regions
There's more...
Auto rendering
See also
Understanding GPU-Vector mode
Getting ready
How to do it...
How it works...
GPU-Vector mode
There's more...
Rendering vectors using GPU-Vector mode
Using GPU-Vector mode with Flash Professional CS5
Stage 3D
See also
Using Cache as Bitmap
Getting ready
How to do it...
How it works...
There's more...
Other transformation changes
Caching display objects that contain children
Taking advantage of GPU Blend
Bitmaps and GPU Vector
Using vectors ahead of bitmaps
See also
Using Cache as Bitmap Matrix
Getting ready
How to do it...
How it works...
There's more...
Selecting a matrix transformation
Changing the Matrix object
Reusing the Matrix object
3D properties
Working with GPU Blend
See also
Accessing bitmaps with ActionScript
Getting ready
How to do it...
Exporting the bitmap
Displaying the bitmap using ActionScript
How it works...
There's more...
Managing image sizes
Size restrictions
Storing bitmap data on the GPU
See also
Loading bitmaps at runtime
Getting ready
How to do it...
Bundling the bitmap
Loading the bitmap at runtime
How it works...
There's more...
Handling load errors
Accessing the bitmap's data
Disposing of bitmap data
See also
Working with sprite sheets
Getting ready
How to do it...
How it works...
There's more...
Creating sprite sheets
Comparing performance and memory consumption
See also
Performing bitmap animation with ActionScript
Getting ready
How to do it...
How it works...
There's more...
Animation sequences
Loading resources at runtime
Stage 3D
See also
7. Working with Text and the Virtual Keyboard
Introduction
Using device fonts within text fields
Getting ready
How to do it...
How it works...
There's more...
Device fonts on iOS
Enumerating the available device fonts
Pixel density
TLF text
See also
Using embedded fonts within text fields
Getting ready
How to do it...
How it works...
There's more...
Size considerations
See also
Providing text entry
Getting ready
How to do it...
How it works...
There's more...
Keyboard types
Launching the virtual keyboard programmatically
See also
Capturing text input
Getting ready
How to do it...
How it works...
There's more...
Listening for focus
See also
Configurable panning with virtual keyboard activation
Getting ready
How to do it...
How it works...
There's more...
Related object
Updating dynamic text fields
Getting ready
How to do it...
How it works...
There's more...
Device fonts
Appending text
Replacing text fields with bitmaps
Cache as Bitmap
See also
Using native iOS text controls
Getting ready
How to do it...
How it works...
There's more...
Virtual keyboard types
Return key label types
Enumerating device fonts
Events
Auto-correction and auto-capitalization
See also
8. Screen Resolution and Orientation Changes
Introduction
Targeting a device
Getting ready
How to do it...
Setting the target devices
Detecting the current device
How it works...
There's more...
Application launch image
Including icons
Landscape aspect ratio
See also
Targeting the Retina display
Getting ready
How to do it...
Setting Retina display support
Detecting a Retina display device
How it works...
There's more...
Retina home screen icon
Retina application launch image
Vector-only apps
iPad display
See also
Supporting multiple resolutions
Getting ready
How to do it...
Setting supported devices and resolutions
Displaying the correct bitmap
How it works...
There's more...
Default stage size
Model-View-Controller architecture
Dynamic sizing and layout
Supporting iPad separately
See also
Setting the default aspect ratio
Getting ready
How to do it...
How it works...
There's more...
Auto aspect ratio
See also
Enabling auto-orientation
Getting ready
How to do it...
How it works...
There's more...
Checking for orientation support
Programmatically setting auto-orientation
Stage scale mode
Stage alignment
See also
Listening for orientation changes
Getting ready
How to do it...
How it works...
There's more...
Determining device orientation
See also
Responding to orientation changes
Getting ready
How to do it...
How it works...
There's more...
The stage color
Stage orientation
Preventing auto-orientation
See also
9. Geolocation and Accelerometer APIs
Introduction
Determining your current location
Getting ready
How to do it...
How it works...
There's more...
Accuracy
Altitude support
Mapping your location
Calculating distance between geolocations
Geocoding
Gyroscope support
See also
Determining your speed and heading
Getting ready
How to do it...
How it works...
There's more...
Determining support
Simulating the GPS receiver
Preventing screen idle
See also
Checking for geolocation access
Getting ready
How to do it...
How it works...
See also
Responding to accelerometer changes
Getting ready
How to do it...
How it works...
There's more...
Orientation and the accelerometer axes
Determining device orientation
Applying a low-pass filter
Applying a high-pass filter
The muted
property
See also
Detecting a shake
Getting ready
How to do it...
How it works...
There's more...
Checking multiple axes
Smoothing accelerometer data
See also
10. Camera and Microphone Support
Introduction
Saving to the camera roll
Getting ready
How to do it...
How it works...
There's more...
Handling a failed save
Saving specific display objects
Video and the camera roll
See also
Reading from the camera roll
Getting ready
How to do it...
How it works...
There's more...
Parsing Exif data
See also
Capturing with the default camera app
Getting ready
How to do it...
How it works...
There's more...
Handling errors
Displaying the captured image
Saving the captured image to the camera roll
Capturing video
Reading the captured data
See also
Working with the built-in cameras
Getting ready
How to do it...
How it works...
There's more...
Portrait mode
Selecting a camera
Grabbing a bitmap image
Live streaming
Using the stage
See also
Recording microphone audio
Getting ready
How to do it...
How it works...
There's more...
Microphone activity
Live streaming
See also
Playing recorded audio
Getting ready
How to do it...
How it works...
There's more...
Working with lower sample rates
Saving captured data
Exporting as WAV or MP3
See also
11. Rendering Web Pages
Introduction
Opening a web page within Safari
Getting ready
How to do it...
How it works...
See also
Rendering a web page within an app
Getting ready
How to do it...
How it works...
There's more...
Page load events
Multiple instances
Checking for support
Retina web pages within a standard screen resolution
Including banner ads
OAuth support
See also
Navigating the browsing history
Getting ready
How to do it...
How it works...
There's more...
Obtaining the current location
Stopping and reloading pages
Detecting when the URL is about to change
See also
Rendering a local web page
Getting ready
How to do it...
Bundling the HTML
Loading the bundled HTML
How it works...
There's more...
Bi-directional ActionScript/JavaScript communication
See also
Dynamically generating a local web page
Getting ready
How to do it...
Linking to the as3corelib API
Generating the HTML
How it works...
There's more...
Cleaning-up
Using loadString()
See also
Capturing a snapshot of a web page
Getting ready
How to do it...
How it works...
There's more...
Overlaying display objects
See also
12. Working with Video and Audio
Introduction
Playing local FLV video
Getting ready
How to do it...
Bundling the FLV video
Playing the FLV video
How it works...
There's more...
Metadata and cue point events
Playing remote FLV video
Screen lock
Maximizing playback performance
Bundling multiple videos
See also
Playing local H.264 video
Getting ready
How to do it...
Bundling the H.264 video
Playing the H.264 video
How it works...
There's more...
Metadata and cue point events
Playing video captured by the default camera
Determining the video's size
Playing remote H.264 video
Encoding H.264 video
Bundling multiple videos
See also
Controlling video
Getting ready
How to do it...
How it works...
There's more...
NetStream status
Closing the video stream
Embedding audio
How to do it...
How it works...
See also
Playing embedded audio
Getting ready
How to do it...
How it works...
There's more...
Playback position
Looping
See also
Streaming audio
Getting ready
How to do it...
Bundling the MP3 file
Playing the MP3 file
How it works...
There's more...
Increasing the buffer time
Monitoring load progress
Sound length
Sound metadata
Working with raw PCM sound data
Playing audio in the background
See also
Controlling audio playback
Getting ready
How to do it...
Bundling the MP3 file
Controlling playback
How it works...
There's more...
Volume and panning
Global sound
See also
13. Connectivity, Persistence, and URI Schemes
Introduction
Monitoring Internet connectivity
Getting ready
How to do it...
Linking the SWC file
Checking connectivity
How it works...
There's more...
Monitoring sockets
Polling interval
See also
Specifying a persistent Wi-Fi connection
Getting ready
How to do it...
How it works...
See also
Referencing an app's common directories
Getting ready
How to do it...
How it works...
There's more...
Creating directories
See also
Writing files
Getting ready
How to do it...
How it works...
There's more...
Working with data formats
Writing synchronously
Monitoring progress
Persistence
See also
Reading files
Getting ready
How to do it...
How it works...
There's more...
Working with data formats
Reading synchronously
Monitoring progress
Deleting files
Other file modes
See also
Launching system applications
Getting ready
How to do it...
How it works...
There's more...
Dialing a phone number
Sending SMS messages
Playing a YouTube video
URI schemes within HTML
See also
Launching the App Store
Getting ready
How to do it...
Obtaining the app's URL
Linking to the app from ActionScript
How it works...
See also
Launching the Maps application
Getting ready
How to do it...
How it works...
There's more...
Generating directions
Mapping your current location
See also
Declaring device capabilities
Getting ready
How to do it...
How it works...
There's more...
Dropped support for ARMv6 devices
See also
Index
Flash iOS Apps Cookbook
Flash iOS Apps Cookbook
Copyright © 2012 Packt Publishing
All rights reserved. No part of this book may be reproduced, stored in a retrieval system, or transmitted in any form or by any means, without the prior written permission of the publisher, except in the case of brief quotations embedded in critical articles or reviews.
Every effort has been made in the preparation of this book to ensure the accuracy of the information presented. However, the information contained in this book is sold without warranty, either express or implied. Neither the author, nor Packt Publishing, and its dealers and distributors will be held liable for any damages caused or alleged to be caused directly or indirectly by this book.
Packt Publishing has endeavored to provide trademark information about all of the companies and products mentioned in this book by the appropriate use of capitals. However, Packt Publishing cannot guarantee the accuracy of this information.
First published: February 2012
Production Reference: 2250112
Published by Packt Publishing Ltd.
Livery Place
35 Livery Street
Birmingham B3 2PB, UK.
ISBN 978-1-84969-138-3
www.packtpub.com
Cover Image by Charwak A (<charwak86@gmail.com >)
Credits
Author
Christopher Caleb
Reviewers
Daniel Albu
JP Berrie
Simon Buckley
Mark Doherty
Richard England
Stuart McLeman
Brian Rinaldi
David Wagner
Acquisition Editor
Douglas Paterson
Lead Technical Editor
Dayan Hyames
Technical Editor
Kedar Bhat
Copy Editor
Neha Shetty
Project Coordinator
Alka Nayak
Proofreader
Mario Cecere
Indexer
Rekha Nair
Graphics
Valentina D'Silva
Manu Joseph
Production Coordinator
Arvindkumar Gupta
Cover Work
Arvindkumar Gupta
About the Author
Christopher Caleb has been developing rich interactive experiences with the Flash platform for almost a decade. He remembers a time when browsers didn't support images, and has witnessed technologies such as Flash help drive the web to where it is today. During that period he has been fortunate enough to have worked with a wide range of clients including the BBC, Activision, Samsung, and Aardman Animations on projects encompassing film, games, education, and children's entertainment.
He has a love for all things mobile and has been a proponent of Flash in this space since its emergence. He is also an active member of the Flash community, both through his personal blog and the various articles he contributes elsewhere. Whenever he finds a spare minute, Christopher likes to chip away at the many apps and experiments he has inspired to undertake.
Christopher is currently a lead Flash developer at WeeWorld—an avatar-based social network and virtual world for teens. He blogs at www.yeahbutisitflash.com and tweets as @chriscaleb.
Acknowledgement
This book would not have been possible without the help and support of so many individuals.
First and foremost, I'd like to thank the people at Packt Publishing; in particular, Steven Wilding for providing me with this wonderful and unexpected opportunity; Maitreya Bhakal for his guidance and encouragement; and Kedar Bhat for his assistance and endless patience.
I'm extremely lucky to have had such talented technical reviewers (Daniel Albu, JP Berrie, Simon Buckley, Mark Doherty, Richard England, Stuart McLeman, Brian Rinaldi, and David Wagner) who, despite their workloads, managed to find the time to provide invaluable feedback. Dave and JP: I really owe you both for your perseverance over the last few weeks.
Various individuals at Adobe have also helped me along the way. Particularly, I'd like to thank Mark Doherty and Brian Rinaldi for their immense contribution and enthusiasm towards the project. I'd also like to extend thanks to Robert Christensen for always taking the time to answer my questions over the past twelve months.
A huge debt of gratitude is also owed to my brother Alan (alancaleb.com), Steve Koren (popjunk.co.uk), and Selina Wagner (blobina.com) whose creative talents grace the many code examples found within these pages. Also, a mention must go out to Matt McKenna (maketh.com) and Andrew Nicolson (drewnotweird.co.uk) for the part they both played.
I would also like to thank Graham MacDonald for affording me the time to write and, at the same time, earn a living; Helen and my little nephew Freddy (I love him even more than Flash) for making me smile; Gregory for providing the arm wrestling training that helped develop my typing stamina; and Amanda who makes every day better than the last. Special thanks must also be extended to Bobby Farmer who has always made time for me over the years and has been a constant source of encouragement.
Finally, to my father, mother, brother, and sister, I cannot thank you enough for your love and support, without which I am nothing.
About the Reviewers
Daniel Albu is a freelance Flash platform developer with more than ten years of experience in the production and deployment of rich media websites, games, and applications.
Daniel has unique expertise in production and integration of Flash and Flash platform-based technologies. Most recently, Daniel entered the mobile development field by using Adobe AIR to develop for the Android and iOS platforms.
Daniel also provides worldwide remote training and consultancy around Flash platform technologies for companies and individuals alike.
JP Berrie first encountered Macromedia Director 4 in 1995 while at university studying Multimedia Technology, and subsequently embarked upon a career as a Multimedia Developer, specializing in Director Lingo and latterly Flash ActionScript 3.0 programming.
He was appointed lead programmer for several BBC games titles, including Walking with Beasts, Bill & Ben the Flowerpot Men, and Rotten Ralph. Other titles include the Chicken Run game for Activision / Aardman Animations, and a title for interactive publishing giants Dorling Kindersley.
Since 2002, JP has freelanced for many clients including global brands such as AstraZeneca, BP, Diageo, Guinness, Kellogg's, Pepsi, Pfizer, and the Post Office.
Website: www.jpberrie.com.
Simon Buckley received his M.Sc in Physics from the University of Birmingham, England, in 2007 before moving into Computer Science to gain a M.Sc in Intelligent Systems Engineering at the same university in 2008.
After graduating, Simon spent some time as an enterprise Java developer before opting to go freelance. He is now a Flex Adobe Certified expert and his company, Techjump, specializes in developing workflow tools and Rich Internet Applications for desktop and mobile platforms. He loves working with new technologies, developing rich user experiences, and solving tough programming problems.
Mark Doherty is the Platform Evangelist for Mobile and Devices at Adobe, working to create a vibrant ecosystem around Flash Player and Adobe AIR for devices. He has spent ten years in the mobile and devices industry, including seven at Adobe, holding Engineering, Consulting, Business Development, and Marketing roles. Prior to this, Mark has worked with leading OEMs at Mobile Innovation, Nokia, Samsung, and Panasonic.
Richard England is an award winning freelance developer, who has worked with Flash technology for over 10 years, including building BAFTA-nominated educational games, interactive learning resources, and truly Rich Internet Applications.
An eternal student of all things digital, Richard is enthused by the ever-evolving mobile development landscape, creating applications for iOS both natively in Objective-C and with Adobe AIR.
Richard can be contacted through Twitter—@englandrp.
Stuart McLeman has been involved with web and mobile software development for ten years since his previous life in electronic engineering. From working on educational Flash content for the BBC through to his current role as lead iOS developer at WeeWorld, he has always been passionate about aesthetics and usability as well as good code. Although Objective-C is his new love, he still has fond memories of AS3. He can't wait to see how the mobile landscape will evolve so he can decide what to learn next!
Stuart can be contacted through his website: www.stuartmcleman.com where he promises to someday start a blog, or through Twitter—@stuartmcleman.
Brian Rinaldi is a content and community manager for the Adobe Developer Center team, where he oversees community strategy for developers with a focus on HTML5 and JavaScript. Brian has been a Flex, Flash, and ColdFusion developer for over a dozen years and has been always known for his contributions to the community as an open source developer, a speaker, and an author. Brian founded the ColdFusion user group in Boston as well as the RIA Unleashed conference. Brian blogs regularly at http://remotesynthesis.com and is an unreformed twitter addict—@remotesynth.
David Wagner has been creating mobile phone games and applications for over a decade—from the days when 96x64 pixel displays with four shades of green were a luxury, through to the present with multi-cored, GPU-accelerated devices of pure awesomeness. In between, he has played with assembler, made a career of embedded C programming, decided browsers were more fun with ActionScript, and then went back to the future with Objective-C. He is currently a senior engineer at HuzuTech, working on a cross-platform virtual world framework.
If you want to read his occasionally coherent ravings, visit www.noiseandheat.com, or you can follow his stream of sarcasm on Twitter—@kaeladan.
www.PacktPub.com
Support files, eBooks, discount offers, and more
You might want to visit www.PacktPub.com for support files and downloads related to your book.
Did you know that Packt offers eBook versions of every book published, with PDF and ePub files available? You can upgrade to the eBook version at www.PacktPub.com and as a print book customer, you are entitled to a discount on the eBook copy. Get in touch with us at
At www.PacktPub.com, you can also read a collection of free technical articles, sign up for a range of free newsletters, and receive exclusive discounts and offers on Packt books and eBooks.
http://PacktLib.PacktPub.com
Do you need instant solutions to your IT questions? PacktLib is Packt's online digital book library. Here, you can access, read, and search across Packt's entire library of books.
Why Subscribe?
Fully searchable across every book published by Packt
Copy and paste, print, and bookmark content
On demand and accessible via web browser
Free Access for Packt account holders
If you have an account with Packt at www.PacktPub.com, you can use this to access PacktLib today and view nine entirely free books. Simply use your login credentials for immediate access.
Preface
The iPhone is revolutionary. Every day, it seems, someone finds an innovative use for it and, in the App Store, the perfect outlet for their work. Its success has made apps cool and helped shift delivery of content away from the browser. Adobe has reacted to this change by repositioning the Flash platform, and providing the tools required for the creation and publication of native iOS applications directly from Flash Professional.
The Flash iOS Apps Cookbook is a culmination of my experience working with AIR for iOS since its beginnings. I have paid particular attention to the fundamentals, focusing on the groundwork that many newcomers find daunting. For those with a firm grasp of the basics, there is plenty to learn, from working with the device's many sensors, to maximizing the performance of graphics using hardware acceleration.
By the end of this book, you will have acquired the necessary skills to write and distribute your own native iOS applications using Flash. I hope that you will use what you have learned here to create beautiful applications that befit the talented and inspiring community you are about to become a part of.
What this book covers
Chapter 1, Getting Started with iOS App Development, leads you through the often intimidating process of becoming a registered iOS developer. By the end of the chapter you will have the necessary files required to publish native iOS apps from Flash Professional.
Chapter 2, Building iOS Apps Using Flash, covers everything required to configure Flash Professional and publish native iOS apps from it. You will also learn how to install apps on an iPhone for testing.
Chapter 3, Writing your First App, takes you through the steps necessary to build and test your very first iOS app using Flash Professional with a modest amount of ActionScript. Some best practices for development will also be explored.
Chapter 4, Porting Flash Projects to iOS, will get you started on the right foot when converting Flash projects from the desktop to iOS. You will learn how to work within mobile constraints and how to avoid common pitfalls that can often cripple an app's performance.
Chapter 5, Multi-touch and Gesture Support, will show you how to take full advantage of the touch-screen. You will learn how to detect multiple touch points and respond to swipe, pan, and pinch gestures with ActionScript.
Chapter 6, Graphics and Hardware Acceleration, provides invaluable recipes for an area that often causes frustration. We will cover powerful techniques for dramatically boosting your application's frame rate and learn the intricacies of Flash's rendering pipeline. With this knowledge, you will be able to push the graphics performance of your own creations to the limit!
Chapter 7, Working with Text and the Virtual Keyboard, will help you adjust to life without physical keys by exploring support for iOS's virtual keyboard and native text-input controls. Time will also be spent covering relevant features of Flash's own text engine.
Chapter 8, Screen Resolution and Orientation Changes, details how to render content on any iOS device regardless of its screen resolution or physical orientation. Support for the high resolution Retina display can also be found, along with instructions detailing how to set up a universal app that can target iPhone, iPad, and iPod touch.
Chapter 9, Geolocation and Accelerometer APIs, covers recipes that utilize both the device's GPS sensor and its accelerometer. Learn how to make location-aware apps, respond to changes in physical orientation and detect vibration.
Chapter 10, Camera and Microphone Support, will help you master two of the most popular sensors built into iOS devices. With the camera, you will learn how to shoot video, capture photos, and access the image library. This chapter will conclude by covering how to record and play back audio captured with the microphone.
Chapter 11, Rendering Web Pages, focuses on the presentation of web content—both directly within your app and by launching Safari. It also covers how to dynamically generate HTML, navigate the browsing history, and capture a snapshot of the current page.
Chapter 12, Working with Video and Audio, explores the many A/V options available when targeting iOS. In addition to utilizing Flash's popular FLV video format, this chapter will detail how to take advantage of hardware-accelerated H.264 video for best quality high-definition playback.
Chapter 13, Connectivity, Persistence, and URI Schemes, ties up some loose ends, beginning with Internet connectivity. Next, file system access is discussed—a topic touched upon by a number of recipes throughout the book. At the end of the chapter, space is given over to the use of URI schemes to launch various system apps including Mail, YouTube, App Store, and Maps.
Chapter 14, Using Native Extensions and ADT, details how to use the command line to take advantage of AIR for iOS features that aren't currently provided from Flash Professional directly. Specifically, you will learn how to use native extensions to access iOS-specific APIs missing from the AIR SDK. This chapter is not present in the book but is available as a free download at the following link: http://www.packtpub.com/sites/default/files/downloads/1383_Chapter14.pdf
Chapter 15, ActionScript Optimization, covers a range of invaluable optimizations that can be applied to your project's ActionScript. You will see how even the simplest of changes can improve your application's execution speed or improve its memory usage. This chapter is not present in the book but is available as a free download at the following link: http://www.packtpub.com/sites/default/files/downloads/1383_Chapter15.pdf
Appendix A, Flash Professional CS5.5 Specific Recipes, contains a list of the recipes throughout this book that require Flash Professional CS5.5 and AIR 2.6 or above. The appendix is not present in the book but is available as a free download at the following link: http://www.packtpub.com/sites/default/files/downloads/1383_AppendixA.pdf
Appendix B, ActionScript Optimization Measurements, provides the results from various optimizations detailed in Chapter 15. This appendix is not present in the book but is available as a free download at the following link: http://www.packtpub.com/sites/default/files/downloads/1383_AppendixB.pdf
What you need for this book
This book has been written for users of Adobe Flash Professional CS5 or CS5.5.
The majority of recipes covered are compatible with both CS5 and CS5.5. However, some are specific to CS5.5 and require the latest version of the Adobe AIR SDK.
You will also need an iPhone, iPad, or iPod touch. Flash Professional CS5.5 supports the development of applications for iOS 4 or above, whereas CS5 also provides support for older devices running iOS 3.
You can build native iOS apps using either Flash Professional for Mac OS X or Microsoft Windows.
Who this book is for
The material throughout this book is written for both beginners and seasoned developers with a working knowledge of ActionScript 3.0 and Flash Professional. If you ever want to leverage your existing Flash skills to write iOS apps, then this book will show you how, starting with the basics. Those users who are already up to speed can go directly to the more advanced topics that are on offer.
Conventions
In this book, you will find a number of styles of text that distinguish between different kinds of information. Here are some examples of these styles, and an explanation of their meaning.
The development of iOS apps using Flash Professional is commonly referred to as AIR for iOS. However, Flash Professional CS5 uses the term iPhone OS. This book will almost exclusively use the term AIR for iOS throughout.
Code words in text are shown as follows: Keep the default location set to C:\OpenSSL-Win32.
A block of code is set as follows:
public function Main() {
application = NativeApplication.nativeApplication;
application.systemIdleMode = SystemIdleMode.KEEP_AWAKE;
application.addEventListener(Event.ACTIVATE, activate);
application.addEventListener(Event.DEACTIVATE, deactivate);
}
When