Richard Leggett Weyert de Boer Scott Janousek In this book you’ll learn: The essentials of Flash Lite 1.1 and 2.X How to create mobile applications and games Best practices for structuring your mobile applications, from starting out to final deployment How to integrate graphics, sound, and video into your mobile content How to consume live data over HTTP and socket connections and make use of phone-specific features Foundation Flash Applications for Mobile Devices W ith a growing number of mobile devices offering Flash support, it is an increasingly viable platform for the development of mobile applications. Foundation Flash for Mobile Devices is just the book you need to learn how to take advantage of this new audience of mobile application users. Inside, it covers every facet of mobile Flash, from the essentials of the Flash Lite 1.1 and 2.X platforms and writing applications to testing your work and deploying to mobile users. Applications presented include screensavers, wallpapers, data-consuming informational programs (such as movie, news, and stock tickers), quiz games, action games, and more. You are given tips on mobile Flash development best practices, and all of the essential topics are covered, including creating and using sound, vector graphics, and bitmaps; optimizing assets for the small screen; coding realistic physics for games; and consuming web services using PHP, Java™, ColdFusion, and .NET. Throughout the book, there are many samples to put together and learn from, and several bonus applications are also available to download and check out. FLASH APPLICATIONS FOR MOBILE DEVICES this print for reference only—size & color not accurate Leggett de Boer Janousek FOUNDATION SHELVING CATEGORY 1. FLASH Learn how to create and deploy mobile Flash applications and games Learn how to use the Flash Lite 1.1 and 2.X platforms Covers integration of sound, video, and other assets into your mobile Flash content Mac/PC compatible www.friendsofed.com 6 89253 59558 9 ISBN 1-59059-558-0 9 781590 595589 90000 Also Available 7.5" x 9" / Casebound / Malloy spine bulk = 0.000" 000 page count 50# Thor Flash Applications for Mobile Devices Foundation Foundation Flash Applications for Mobile Devices Richard Leggett Weyert de Boer Scott Janousek 5580FMCMP2 11/27/06 4:14 PM Page i Lead Editor Chris Mills Technical Reviewers Marco Casario Cesar Tardaguila Editorial Board Steve Anglin, Ewan Buckingham, Gary Cornell, Jason Gilmore, Jonathan Gennick, Jonathan Hassell, James Huddleston, Chris Mills, Matthew Moodie, Dominic Shakeshaft, Jim Sumser, Matt Wade Project Manager | Production Director Grace Wong Copy Edit Manager Nicole Flores Copy Editors Heather Lang Damon Larson Assistant Production Director Kari Brooks-Copony Production Editor Laura Esterman Compositor Diana Van Winkle Artist April Milne Proofreaders Liz Welch Lori Bring Indexer Toma Mulligan Cover Image Designer Corné van Dooren Interior and Cover Designer Kurt Krames Manufacturing Director Tom Debolski 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.com in the Downloads section. Credits 5580FMCMP2 11/27/06 4:14 PM Page ii 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 5580FMCMP2 11/27/06 4:14 PM Page iii 5580FMCMP2 11/27/06 4:14 PM Page iv 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 CONTENTS 5580FMCMP2 11/27/06 4:14 PM Page v 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 CONTENTS vi 5580FMCMP2 11/27/06 4:14 PM Page vi 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 CONTENTS vii 5580FMCMP2 11/27/06 4:14 PM Page vii 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 CONTENTS viii 5580FMCMP2 11/27/06 4:14 PM Page viii 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 CONTENTS ix 5580FMCMP2 11/27/06 4:14 PM Page ix [...]... this book—the mobile editions of the Flash Player Flash for mobile devices comes in three flavors: Flash for Pocket PC: a personal digital assistant (PDA) version of the desktop profile Flash Lite: a mobile- specific profile of the Flash Player FlashCast: a streaming web technology that utilizes the Flash Lite player Flash for Pocket PC Flash for Pocket PC is a version of the desktop Flash Player profile... FlashCast BREW i-mode Summary The evolution of Flash on mobile technologies The Flash platform and mobile technologies Current Flash Mobile products and services FlashCast Flash Mobile services Mobile entertainment to mobile applications The Flash Mobile. .. possibilities of Flash for Pocket PC Flash Lite Flash Lite is the mobile phone profile of the Flash Player and is available in two versions: Flash Lite 1.0 and Flash Lite 1.1 are based on the Flash 4 player, and Flash Lite 2 is based on the Flash 7 player Flash 12 5580Ch01 11/27/06 3:51 PM Page 13 MACROMEDIA AND ADOBE FLASH: AN OVERVIEW Lite provides scriptable animation and user interactivity Mobile will... discusses the following topics: A brief history of Flash ActionScript Rich Internet Applications (RIAs) Peripheral Flash technologies (for example, Flash Communication Server) Mobile Flash The future A brief history of Flash Knowing where Flash came from helps in understanding its underlying strengths and how it fits together as a development platform Flash started life as just a glint in the eye of... the Boston Adobe Mobile and Devices User Group (AMaDUG), Boston Flash Platform User Group (BFPUG), and Mobile Monday Boston (MoMoBoston), Scott is passionate about the Flash platform across mobile devices as well as for the desktop When he has a chance, he speaks at new media institutes, user groups, and conferences about Flash and Flash Mobile, including most recently the Design & Technology Festival... functionality of the Flash 6 or Flash 7 player, including XML, UI components, and data loading Although PDA sales are declining in relation to those of other mobile devices, PDAs still provide a large market for which to develop games and applications Flash Player for Pocket PC is available as a free download at the Adobe web site However, creating stand-alone applications that incorporate Flash for Pocket PC... One of this book is composed of four chapters: an overview of Flash, an introduction to mobile devices and associated technologies, and in-depth looks at Flash Lite 1.1, Flash Lite 2.0, and ActionScript These core topics provide a gentle introduction to the subject of Flash for mobile devices and will get you started creating content for your devices in no time at all 5580Ch01 11/27/06 3:51 PM Page 2... beginner with no experience with Flash or an advanced coder with years of web programming prowess—and to give you the skills you need to create great content for mobile devices At first, mobile Flash development might seem like a no brainer; you may have heard that you can just throw your Flash at the phone, and it just works—that’s only half true Creating content for devices carries with it a world... Flash Remoting Flash Remoting is Adobe’s solution for providing fast and efficient data transportation between a server-side source and a Flash client ActionScript Message Format (AMF) is the binary format used by Flash Remoting; it was created to replace the use of plain text or XML for transferring data between server and client As the format is binary rather than human readable, it allows for larger... be transported over HTTP to and from a Flash client in no time 9 5580Ch01 11/27/06 3:51 PM Page 10 CHAPTER 1 at all The AMF data is converted to server native formats on one end and Flash native data formats on the other end This conversion is performed transparently by the Flash Remoting gateway and Flash 6+ client Adobe also provides a set of APIs for using Flash Remoting in your ActionScript; the . Malloy spine bulk = 0.000" 000 page count 50# Thor Flash Applications for Mobile Devices Foundation Foundation Flash Applications for Mobile Devices Richard Leggett Weyert de Boer Scott Janousek. growing number of mobile devices offering Flash support, it is an increasingly viable platform for the development of mobile applications. Foundation Flash for Mobile Devices is just the book. and Devices User Group (AMaDUG), Boston Flash Platform User Group (BFPUG), and Mobile Monday Boston (MoMoBoston), Scott is passionate about the Flash platform across mobile devices as well as for the