Table Of ContentLeggett
de Boer
Foundation
Janousek
Flash Applications
FOUNDATION
Mobile Devices
for
F F
O
In this book you’ll learn: Also Available L
The essentials of Flash Lite 1.1 and 2.X R A
How to create mobile applications and games Richard Leggett
Best practices for structuring your mobile applications, from starting out MS
to final deployment Weyert de Boer
How to integrate graphics, sound, and video into your mobile content H
Scott Janousek
How to consume live data over HTTP and socket connections and make O
use of phone-specific features
BA
Foundation Flash Applications for Mobile Devices
IP
With a growing number of mobile devices offering Flash support, L
it is an increasingly viable platform for the development of mobile P
E
applications. Foundation Flash for Mobile Devicesis just the book you need
to learn how to take advantage of this new audience of mobile application L
users. Inside, it covers every facet of mobile Flash, from the essentials of
DI
the Flash Lite 1.1 and 2.X platforms and writing applications to testing your
C
work and deploying to mobile users.
E
Applications presented include screensavers, wallpapers, data-consuming A
informational programs (such as movie, news, and stock tickers), quiz V
games, action games, and more. You are given tips on mobile Flash T
development best practices, and all of the essential topics are covered, I
including creating and using sound, vector graphics, and bitmaps; CI
optimizing assets for the small screen; coding realistic physics for games; O
and consuming web services using PHP, Java™, ColdFusion, and .NET. E
N
Throughout the book, there are many samples to put together and learn S
from, and several bonus applications are also available to download and
check out. S
SHELVING CATEGORY
1.FLASH
ISBN 1-59059-558-0
Learn how to create and deploy mobile
90000
Flash applications and games
Learn how to use the Flash Lite 1.1 and 2.X platforms
Mac/PC compatible
Covers integration of sound, video,
www.friendsofed.com 6 89253 59558 9 and other assets into your mobile Flash content
9 781590 595589
this print for reference only—size & color not accurate 7.5" x 9" / Casebound / Malloy
spine bulk = 0.000" 000 page count 50# Thor
5580FMCMP2 11/27/06 4:14 PM Page i
Foundation Flash Applications
for Mobile Devices
Richard Leggett
Weyert de Boer
Scott Janousek
5580FMCMP2 11/27/06 4:14 PM Page ii
Foundation Flash Applications
for Mobile Devices
Copyright © 2006 by Richard Leggett, Weyert de Boer, Scott Janousek
All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical,
including photocopying, recording, or by any information storage or retrieval system, without the prior written permission
of the copyright owner and the publisher.
ISBN-13: 978-1-59059-558-9
ISBN-10: 1-59059-558-0
Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1
Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names
only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark.
Java™ and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc., in the United States and other countries.
Apress, Inc., is not affiliated with Sun Microsystems, Inc., and this book was written without endorsement from Sun Microsystems, Inc.
Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013.
Phone 1-800-SPRINGER, fax 201-348-4505, e-mail orders-ny@springer-sbm.com, or visit www.springeronline.com.
For information on translations, please contact Apress directly at 2560 Ninth Street, Suite 219, Berkeley, CA 94710.
Phone 510-549-5930, fax 510-549-5939, e-mail info@apress.com, or visit www.apress.com.
The information in this book is distributed on an “as is” basis, without warranty. Although every precaution has been taken in the preparation of this
work, neither the author(s) nor Apress shall have any liability to any person or entity with respect to any loss or damage caused or alleged to be
caused directly or indirectly by the information contained in this work.
The source code for this book is freely available to readers at www.friendsofed.comin the Downloads section.
Credits
Lead Editor Production Editor
Chris Mills Laura Esterman
Technical Reviewers Compositor
Marco Casario Diana Van Winkle
Cesar Tardaguila
Artist
Editorial Board April Milne
Steve Anglin, Ewan Buckingham,
Gary Cornell, Jason Gilmore, Proofreaders
Jonathan Gennick, Jonathan Hassell, Liz Welch
James Huddleston, Chris Mills, Lori Bring
Matthew Moodie, Dominic Shakeshaft,
Indexer
Jim Sumser, Matt Wade
Toma Mulligan
Project Manager | Production Director
Cover Image Designer
Grace Wong
Corné van Dooren
Copy Edit Manager
Interior and Cover Designer
Nicole Flores
Kurt Krames
Copy Editors
Manufacturing Director
Heather Lang
Tom Debolski
Damon Larson
Assistant Production Director
Kari Brooks-Copony
5580FMCMP2 11/27/06 4:14 PM Page iii
CONTENTS AT A GLANCE
About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
About the Main Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
About the Cover Image Designer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi
PART ONE GETTING STARTED 1
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapter 1 Macromedia and Adobe Flash: An Overview . . . . . . . . . . . 3
Chapter 2 Mobile Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Chapter 3 Flash Lite 1.1 and Your First Flash Lite Application . . . . 43
Chapter 4 Flash Lite 2.X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
PART TWO LET’S GET DEVELOPING! 131
. . . . . . . . . . . . . . . . . . . .
Chapter 5 Application Development . . . . . . . . . . . . . . . . . . . . . . . . 133
Chapter 6 Mobile Gaming. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Chapter 7 Flash Lite Mobile Entertainment Basics . . . . . . . . . . . . . 225
Chapter 8 Flash Mobile Sound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261
Chapter 9 Flash Mobile Video. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Chapter 10 Extending Flash Lite . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
PART THREE THE POST-DEVELOPMENT STAGE 389
. . . . . . . . . .
Chapter 11 Distribution and Deployment . . . . . . . . . . . . . . . . . . . . 391
Chapter 12 The Future of Flash in the Mobile World . . . . . . . . . . . 427
PART FOUR APPENDIXES 439
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Appendix A Error Codes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 441
Appendix B FSCommand2 Commands . . . . . . . . . . . . . . . . . . . . . . . 445
Appendix C Glossary of Terms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467
Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
iii
5580FMCMP2 11/27/06 4:14 PM Page iv
5580FMCMP2 11/27/06 4:14 PM Page v
CONTENTS
About the Authors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xv
About the Main Technical Reviewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
About the Cover Image Designer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xvii
Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xix
Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xxi
PART ONE GETTING STARTED 1
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
Chapter 1 Macromedia and Adobe Flash: An Overview . . . . . . . . . . . 3
A brief history of Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Object-oriented programming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
ActionScript 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
ActionScript 3.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Rich Internet Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Peripheral Flash technologies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Flash Remoting . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Flash Media Server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Stand-alone SWF wrappers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Flex and the Flash platform . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Alternatives to Flex and the Flash IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Open source Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Mobile Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Flash for Pocket PC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Flash Lite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
FlashCast . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
The future . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Chapter 2 Mobile Devices. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
The wireless revolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Mobile evolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
Content and infrastructure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
What is 3G? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Cultural acceptance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Synchronization and convergence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
v
5580FMCMP2 11/27/06 4:14 PM Page vi
CONTENTS
Invasive nature of personal devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
A CRM dream . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Types of devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Mobile phones and their operating systems . . . . . . . . . . . . . . . . . . . . . . . . . . 23
PDAs and their operating systems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Other devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Device limitations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
CPU and RAM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Screen size and resolution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
Screen color depth . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Keypads . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
Other input devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Ergonomics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
Connectivity and network speeds . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Data storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Security . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
Other limitations to consider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
User expectations and human-computer interaction (HCI) limitations . . . . . . . . . . . 31
Self-inflicted limitations (by you, the developer) . . . . . . . . . . . . . . . . . . . . . . . 32
Other existing technologies for mobile development . . . . . . . . . . . . . . . . . . . . . . 32
Java 2 Mobile Edition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
Symbian native C++ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
Binary Runtime Environment for Wireless (BREW) . . . . . . . . . . . . . . . . . . . . . . 35
Python for Symbian . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
What makes a device successful? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
The Pogo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
The Nokia 3210 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Successful applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
Business and productivity applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Games . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
Market opportunities . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
The future of devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
Chapter 3 Flash Lite 1.1 and Your First Flash Lite Application. . . . . 43
Setting up your Flash Lite studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Flash MX 2004 Professional . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
The Flash Lite player for the Flash IDE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
The Flash Lite 1.1 publish profile configuration file . . . . . . . . . . . . . . . . . . . . . 45
The device’s configuration file . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
Device templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
Obtaining the Flash Lite player for your device . . . . . . . . . . . . . . . . . . . . . . . . . . 48
Creating a simple test application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
A Flash Lite 1.1 ActionScript primer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
Variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
Undefined variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
vi
5580FMCMP2 11/27/06 4:14 PM Page vii
CONTENTS
Slash notation (targeting movie clips) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
Relative paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
Variable scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
Control structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
Emulating arrays with eval() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
Creating custom functions with call() Coding conventions . . . . . . . . . . . . . . . . . . . . 66
Whitespace and new lines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
Comments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
Variable naming . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Text field variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68
Keywords and reserved words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Statement terminators (semicolons) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
Dot syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
FSCommand2 commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Using FSCommand2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
Getting the date and time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
Useful functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
String functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
Custom string functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
Number functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
Time line functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
Movie clip functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
General functions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
mitations of ActionScript for Flash Lite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
getURL() and loadVariables() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
GET character limit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Local storage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
Maximum integer value . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Version inconsistencies and common pitfalls . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Variable initialization and undefined . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
Checking for a movie clip’s existence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
Renaming movie clips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
add vs. + (string concatenation) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
SWF tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
The Adobe Flash Lite 1.1 CDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Flash Lite 1.1 Authoring Guidelines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Interface elements (components) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95
Chapter 4 Flash Lite 2.X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
Flash Lite 2.X ActionScript primer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Variables and strict data typing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
Operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
Variable scope . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
Programming constructs new to Flash Lite 2.0 . . . . . . . . . . . . . . . . . . . . . . . . 105
vii
5580FMCMP2 11/27/06 4:14 PM Page viii
CONTENTS
New objects in Flash Lite 2.0 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Date . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
Color . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
Key and ExtendKey . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
TextField and TextFormat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
Stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
MovieClipLoader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
LoadVars . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
XML and XMLNode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109
Video . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Structuring a Flash Lite 2.0 application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
The time-line–based method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
The pure code method . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
The EventDispatcher class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
Dynamic MovieClips and buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
createEmptyMovieClip() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116
attachMovie() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117
getNextHighestDepth() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
onEnterFrame() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 118
MovieClip buttons and the Delegate class . . . . . . . . . . . . . . . . . . . . . . . . . . 119
Unsupported code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120
Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Methods . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121
Mobile shared objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
MSO example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122
More on mobile shared objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
The System.capabilities object . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124
Device functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125
Drawing API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Extending the drawing API . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
Improvements and changes in Flash Lite 2.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
XMLSocket . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
In-line text fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128
TextField variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Escape/Unescape changes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
File locations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130
PART TWO LET’S GET DEVELOPING! 131
. . . . . . . . . . . . . . . . . . . .
Chapter 5 Application Development . . . . . . . . . . . . . . . . . . . . . . . . 133
User interface design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Navigation and interaction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Aesthetics vs. functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134
Key events and key catcher buttons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138
Custom tab order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143
Common UI guidelines and feedback . . . . . . . . . . . . . . . . . . . . . . . . . . . . 147
Fail safes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 149
viii
5580FMCMP2 11/27/06 4:14 PM Page ix
CONTENTS
The Flash Lite 1.1 CDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
The example files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150
The components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
Improving the CDK components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 156
The Flash Lite 2.0 CDK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
The documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
The example files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
The tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
Consuming data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
loadVariables() (Flash Lite 1.0+) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
LoadVars (Flash Lite 2.X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165
XML (Flash Lite 2.X) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166
Interaction with server-side scripts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Interaction with a database . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168
Integrating with the phone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171
getURL() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172
FSCommand2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 173
Example application: Stock quote client . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
The server side . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174
Stock quote client for Flash Lite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176
StockQuote Lite for Flash Lite 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 180
Adapting StockQuote Lite for Flash for Pocket PC . . . . . . . . . . . . . . . . . . . . . 181
Summary . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182
Chapter 6 Mobile Gaming. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185
Introduction to the mobile game scene . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186
Platforms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
PDAs and phones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Handheld consoles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187
Game genres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 188
Code samples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Making things move . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Moving an item directly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189
Moving several items at once . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
Moving items around a point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 190
The physics of motion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Velocity, direction, and momentum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191
Creating an ease out tween . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
Player input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 193
One-button games . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194
Using input with motion in a jump example . . . . . . . . . . . . . . . . . . . . . . . . . 194
Collision detection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
MovieClip.hitTest() (Flash Lite 2.0+) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198
The registration point . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Bounding box collisions (Flash Lite 1.1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 199
Circle-to-circle(s) collisions (Flash Lite 1.1+) . . . . . . . . . . . . . . . . . . . . . . . . . 201
Line-to-circle collisions (Flash Lite 1.1+) . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
ix