Flash CS6 The Missing Manual

User Manual: manual pdf -FilePursuit

Open the PDF directly: View PDF PDF.
Page Count: 850

DownloadFlash CS6 The Missing Manual
Open PDF In BrowserView PDF
www.it-ebooks.info

www.it-ebooks.info

Flash CS6
The book that should have been in the box®

Chris Grover

Beijing | Cambridge | Farnham | Köln | Sebastopol | Tokyo

www.it-ebooks.info

Flash CS6: The Missing Manual
by Chris Grover

Copyright © 2012 Chris Grover. All rights reserved.
Printed in the United States of America.
Published by O’Reilly Media, Inc.,
1005 Gravenstein Highway North, Sebastopol, CA 95472.
O’Reilly books may be purchased for educational, business, or sales promotional use.
Online editions are also available for most titles (http://my.safaribooksonline.com).
For more information, contact our corporate/institutional sales department: (800)
998-9938 or corporate@oreilly.com.
June 2012:

First Edition.

Revision History for the 1st Edition:
2012-06-11

First release

See http://oreilly.com/catalog/errata.csp?isbn=0636920022787 for release details.

The Missing Manual is a registered trademark of O’Reilly Media, Inc. Flash CS6: The
Missing Manual, the Missing Manual logo, and “The book that should have been in
the box” are trademarks of O’Reilly Media, Inc. Many of the designations used by
manufacturers and sellers to distinguish their products are claimed as trademarks.
Where those designations appear in this book, and O’Reilly Media is aware of a
trademark claim, the designations are capitalized.
While every precaution has been taken in the preparation of this book, the publisher
assumes no responsibility for errors or omissions, or for damages resulting from the
use of the information contained in it.
ISBN-13: 978-1-449-31625-9

[M]

www.it-ebooks.info

Contents
The Missing Credits. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ix
Introduction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

Part One:
Chapter 1:

Creating a Flash Animation
Getting Around Flash. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Starting Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
A Tour of the Flash Workspace. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
Panels and Toolbars. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  25
The Flash CS6 Test Drive. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

Chapter 2:

Creating Simple Drawings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Plan Before You Draw. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
Preparing to Draw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  47
Drawing a Shape. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  53
Choosing a Drawing Mode. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  55
Creating Original Artwork. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
Copying and Pasting Drawn Objects. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  82
Adding Color. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

Chapter 3:

Animate Your Art. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Frame-by-Frame Animation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Editing Your Frame-by-Frame Animation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
Making It Move with Motion Tweens. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  103
Editing the Motion Path. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
Copying and Pasting Properties. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
Shape Tweening (Morphing) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

Part Two:

Advanced Drawing and Animation

Chapter 4:

Organizing Frames and Layers. . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Working with Frames. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127
Working with Multiple Layers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
Organizing Layers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  148
Spotlight Effect Using Mask Layers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151
iii

www.it-ebooks.info

Chapter 5:

Advanced Drawing and Coloring.. . . . . . . . . . . . . . . . . . . . . . . . . 157
Selecting Graphic Elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157
Manipulating Graphic Elements. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  170
Spray Painting Symbols. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  195
Drawing with the Deco Tool. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  196
Advanced Color and Fills . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  198

Chapter 6:

Choosing and Formatting Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . 215
Text Questions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  216
Choosing TLF or Classic Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  216
About Typefaces and Fonts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  219
Adding Text to Your Document. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220
Choosing and Using Text Containers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228
Animating Text Without ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233
Text Properties by Subpanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239

Chapter 7:

Reusable Flash: Symbols and Templates. . . . . . . . . . . . . . . . . . 247
Symbols and Instances. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248
Templates. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

Chapter 8:

Advanced Tweens with the Motion Editor. . . . . . . . . . . . . . . . . 295
Applying Motion Presets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295
Modifying a Motion Preset. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 299
Editing a Tween Span. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .307
A Tour of the Motion Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 311
Easing Tweens. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 320

Chapter 9:

Realistic Animation with IK Bones. . . . . . . . . . . . . . . . . . . . . . . . 325
Linking Symbols with Bones. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 326
Perfect Posing with Control Handles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 339
Baby Steps with Pins. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  341
Making Shapes Move with Bones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342
Apply Spring to a Motion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 346
Animating an Armature with ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . 349

Chapter 10:

Incorporating Non-Flash Media Files. . . . . . . . . . . . . . . . . . . . . 351
Importing Graphics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351
Importing Illustrator Graphics Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 354
Importing Photoshop Graphic Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 359
Importing Fireworks Graphics. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  361
Editing Bitmaps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364
Editing Bitmaps with Photoshop. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366
Importing a Series of Graphics Files. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 368
Exporting Graphics from Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370

iv

Contents

www.it-ebooks.info

Chapter 11:

Incorporating Sound and Video.. . . . . . . . . . . . . . . . . . . . . . . . . . 373
Incorporating Sound . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  374
Incorporating Video. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 384
Importing Video Files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396

Part Three:
Chapter 12:

Adding Interactivity
Introduction to ActionScript 3.0. . . . . . . . . . . . . . . . . . . . . . . . . . 407
Getting to Know ActionScript 3.0. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408
Beginning Your ActionScript Project. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 413
Object-Oriented Thinking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  419
Using Data Types, Variables, and Constants. . . . . . . . . . . . . . . . . . . . . . . . . . 429
Conditionals and Loops. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 436
Combining ActionScript’s Building Blocks . . . . . . . . . . . . . . . . . . . . . . . . . . . 440

Chapter 13:

Controlling Actions with Events. . . . . . . . . . . . . . . . . . . . . . . . . . 443
How Events Work. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443
Mouse Events . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 445
Getting Help for Events and Event Listeners . . . . . . . . . . . . . . . . . . . . . . . . . 448
Keyboard Events and Text Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471
Keeping Time with TimerEvent. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476
Removing Event Listeners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477
In Case of Other Events. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 478

Chapter 14:

Organizing Objects with the Display List.. . . . . . . . . . . . . . . . . 481
The Display List: Everything in Its Place. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  481
Adding Objects to the Display List. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 483
Managing the Stacking Order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 500
Summary of Properties and Methods. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 507

Chapter 15:

Controlling the Timeline and Animation. . . . . . . . . . . . . . . . . . 513
Slowing Down (or Speeding Up) Animation. . . . . . . . . . . . . . . . . . . . . . . . . .  514
Timeline Stop and Go . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  519
Organizing Your Animation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 522
Looping a Series of Frames . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 536
Reversing a Series of Frames. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  541

Chapter 16:

Components for Interactivity. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 543
Adding Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 544
The Built-In Components . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 558
Finding Additional Components. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 579

Contents

www.it-ebooks.info

v

Chapter 17:

Choosing, Using, and Animating Text. . . . . . . . . . . . . . . . . . . . . 581
What Font Does Your Audience Have? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  581
Controlling Text with ActionScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 585
Creating Text Fields with ActionScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591
Formatting Characters and Paragraphs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 596
Formatting with HTML and CSS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 600
Choosing the Right Text Formatting System . . . . . . . . . . . . . . . . . . . . . . . . . 608

Chapter 18:

Drawing with ActionScript. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
What’s the Point?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 611
Beginning with the Graphics Class. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  615
Drawing Lines. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  616
Drawing Curves. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  619
Drawing Built-In Shapes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 622
Drawing Irregular Shapes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 625
Making Drawings Move. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 626
Removing Lines and Shapes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 632

Part Four:

Debugging and ­Delivering Your
Animation

Chapter 19:

Testing and Debugging Your Animation. . . . . . . . . . . . . . . . . . 637
Testing Strategies. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 637
Testing on the Stage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  641
Using the Test Movie Commands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 642
Testing Inside a Web Page. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 644
Testing Download Time. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 646
The Art of Debugging. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652
Analyzing Code with the Debugger. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 662

Chapter 20:

Publishing and Exporting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669
Optimizing Flash Documents. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 669
Publishing Your Animations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 677
Exporting Flash to Other Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 699

Chapter 21:

Introducing Adobe AIR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705
Meet Adobe AIR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 705
Creating Your First AIR Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 707
Create a Code Signing Certificate. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  710
Convert a Flash Animation to AIR. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 713
Publish Your AIR Application. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715
Manually Install Adobe AIR Runtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720

vi

Contents

www.it-ebooks.info

Chapter 22:

Making iPhone Apps. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721
Your First “Hello iPad” App . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722
Joining the iOS Developer Program. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 723
Air for iOS App Settings. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 738
Building a Tap-Ready App. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  745
Tips for iOS App Development . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 749

Chapter 23:

Building Android Apps.. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751
Meet AIR for Android. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .  752
Building Apps for Both iOS and Android. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 760
Tips for Android App Development. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 763

Part Five:
Appendix A:

Appendixes
Installation and Help. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 767
Flash CS6 Minimum System Requirements. . . . . . . . . . . . . . . . . . . . . . . . . . . 767
Getting Help from Flash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770
Getting Help from Adobe. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 771
More Flash Books. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 772
Finding Flash Gurus. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 773

Appendix B:

Flash Professional CS6, Menu by Menu.. . . . . . . . . . . . . . . . . . . 775
File. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775
Edit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779
View . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784
Insert. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788
Modify. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 790
Text. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798
Commands. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799
Control . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800
Debug. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802
Window . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804
Help. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809

Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813

Contents

www.it-ebooks.info

vii

www.it-ebooks.info

The Missing Credits
About the Author
Chris Grover is a veteran of the San Francisco Bay Area advertising
and design community, having worked for over 25 years in print,
video, and electronic media. He has been using and writing about
computers from the day he first fired up his Kaypro II. Chris is the
owner of Bolinas Road Creative (www.BolinasRoad.com), an agency
that helps small businesses promote their products and services. His
writing has appeared in a range of media from Fine Homebuilding to Macworld.com.
He’s also the author of Office 2011 for Macintosh: The Missing Manual, Adobe Edge
Preview 5: The Missing Manual, and several other books in the Missing Manual series.

About the Creative Team
Nan Barber (editor) has been working on the Missing Manual series since its inception. She lives in Massachusetts with her husband and various Apple products. Email:
nanbarber@oreilly.com.
Rachel Steely (production editor) is an avid lover of books in all their forms, and can
typeset, illustrate, and bind a book by hand. She enjoys traveling and speaks fluent
Spanish. In her spare time, she draws Celtic knotwork, reads, and plays the violin.
Julie Van Keuren (proofreader) quit her newspaper job in 2006 to move to Montana
and live the freelancing dream. She and her husband, M.H. (who is living the novelwriting dream), have two sons, Dexter and Michael. Email: little_media@yahoo.com.
Ron Strauss (indexer) specializes in the indexing of information technology publications of all kinds. Ron is also an accomplished classical violist and lives in northern
California with his wife and fellow indexer, Annie, and his miniature pinscher, Kanga.
Email: rstrauss@mchsi.com.
Chris Deely (tech reviewer) is a software developer living in Philadelphia with his
wife, Nichole, and their son, Christopher Jr. He has been working with the Flash
platform since 2004, building applications with ActionScript, Flex, and AIR. Chris
currently leads a User Interface development team responsible for building enterprise application front-ends.
Tina Spargo (technical reviewer), her husband (and professional musician) Ed,
their children, Max and Lorelei, and their two silly Spaniels, Parker (Clumber) and
Piper (Sussex), all share time and space in their suburban Boston home. Tina juggles being an at-home mom with promoting and marketing Ed’s musical projects
and freelancing as a virtual assistant. Tina has over 20 years’ experience supporting top-level executives in a variety of industries. Website: www.tinaspargo.com.
The Missing Credits

www.it-ebooks.info

ix

Acknowledgments
I’m always amazed at the number of pros it takes to create a book like Flash CS6:
The Missing Manual. My thanks go out to everyone who worked on this book. Nan
Barber has worked with me on several books and her skill and grace under fire is
always appreciated. I’d also like to thank Rachel Steely for coordinating the production and Ron Strauss for writing the index. Rebecca Demarest managed to take my
screenshots and crude charts and make them suitable for publication. A special
thanks to the people who catch the errors that always try to sneak onto the pages:
technical reviewers Chris Deely and Tina Spargo and proofreader Julie Van Keuren.
And of course, thanks to Joyce, my wife, who helps me in everything I do.
——Chris Grover

The Missing Manual Series
Missing Manuals are witty, superbly written guides to computer products that don’t
come with printed manuals (which is just about all of them). Each book features
a handcrafted index; cross-references to specific pages (not just chapters); and
RepKover, a detached-spine binding that lets the book lie perfectly flat without the
assistance of weights or cinder blocks.
Recent and upcoming titles include:
• Access 2010: The Missing Manual by Matthew MacDonald
• Buying a Home: The Missing Manual by Nancy Conner
• CSS: The Missing Manual, Second Edition, by David Sawyer McFarland
• Creating a Website: The Missing Manual, Third Edition, by Matthew MacDonald
• David Pogue’s Digital Photography: The Missing Manual by David Pogue
• Dreamweaver CS5.5: The Missing Manual by David Sawyer McFarland
• Dreamweaver CS6: The Missing Manual by David Sawyer McFarland
• Droid X: The Missing Manual by Preston Gralla
• Droid 2: The Missing Manual by Preston Gralla
• Droid X2: The Missing Manual by Preston Gralla
• Excel 2010: The Missing Manual by Matthew MacDonald
• Facebook: The Missing Manual, Third Edition by E.A. Vander Veer
• FileMaker Pro 11: The Missing Manual by Susan Prosser and Stuart Gripman
• Flash CS5.5: The Missing Manual by Chris Grover
• Galaxy S II: The Missing Manual by Preston Gralla

x

The Missing Credits

www.it-ebooks.info

• Galaxy Tab: The Missing Manual by Preston Gralla
• Google+: The Missing Manual by Kevin Purdy
• Google Apps: The Missing Manual by Nancy Conner
• Google SketchUp: The Missing Manual by Chris Grover
• HTML5: The Missing Manual by Matthew MacDonald
• iMovie ’11 & iDVD: The Missing Manual by David Pogue and Aaron Miller
• iPad 2: The Missing Manual, Third Edition by J.D. Biersdorfer
• iPhone: The Missing Manual, Fifth Edition by David Pogue
• iPhone App Development: The Missing Manual by Craig Hockenberry
• iPhoto ’11: The Missing Manual by David Pogue and Lesa Snider
• iPod: The Missing Manual, Tenth Edition by J.D. Biersdorfer and David Pogue
• JavaScript & jQuery: The Missing Manual, Second Edition by David Sawyer
McFarland
• Kindle Fire: The Missing Manual by Peter Meyers
• Living Green: The Missing Manual by Nancy Conner
• Mac OS X Lion: The Missing Manual by David Pogue
• Mac OS X Mountain Lion: The Missing Manual by David Pogue
• Microsoft Project 2010: The Missing Manual by Bonnie Biafore
• Motorola Xoom: The Missing Manual by Preston Gralla
• Netbooks: The Missing Manual by J.D. Biersdorfer
• NOOK Tablet: The Missing Manual by Preston Gralla
• Office 2010: The Missing Manual by Nancy Connor, Chris Grover, and Matthew
MacDonald
• Office 2011 for Macintosh: The Missing Manual by Chris Grover
• Palm Pre: The Missing Manual by Ed Baig
• Personal Investing: The Missing Manual by Bonnie Biafore
• Photoshop CS5: The Missing Manual by Lesa Snider
• Photoshop CS6: The Missing Manual by Lesa Snider
• Photoshop Elements 10: The Missing Manual by Barbara Brundage
• PHP & MySQL: The Missing Manual by Brett McLaughlin
• PowerPoint 2007: The Missing Manual by E.A. Vander Veer

The Missing Credits

www.it-ebooks.info

xi

• Premiere Elements 8: The Missing Manual by Chris Grover
• QuickBase: The Missing Manual by Nancy Conner
• QuickBooks 2012: The Missing Manual by Bonnie Biafore
• QuickBooks 2013: The Missing Manual by Bonnie Biafore
• Quicken 2009: The Missing Manual by Bonnie Biafore
• Switching to the Mac: The Missing Manual, Lion Edition by David Pogue
• Switching to the Mac: The Missing Manual, Mountain Lion Edition by David Pogue
• Wikipedia: The Missing Manual by John Broughton
• Windows XP Home Edition: The Missing Manual, Second Edition, by David Pogue
• Windows XP Pro: The Missing Manual, Second Edition, by David Pogue, Craig
Zacker, and Linda Zacker
• Windows Vista: The Missing Manual by David Pogue
• Windows 7: The Missing Manual by David Pogue
• Word 2007: The Missing Manual by Chris Grover
• Your Body: The Missing Manual by Matthew MacDonald
• Your Brain: The Missing Manual by Matthew MacDonald
• Your Money: The Missing Manual by J.D. Roth
For a full list of all Missing Manuals in print, go to www.missingmanuals.com/library​
.html.

xii

The Missing Credits

www.it-ebooks.info

Introduction

F

lash’s evolution is unique, even for the fast-changing computer software world.
First released in 1996 under the name FutureSplash, it was a tool for creating
web-based animations. It’s still the go-to application for that job; however,
along the way it’s acquired new capabilities. Today, Flash powers video websites
like YouTube and Hulu (Figure I-1). It’s used to develop desktop applications like
eBay Desktop. As you read this, Flash/ActionScript pros are developing the next
generation of apps for handheld devices like the Droid RAZR and the iPhone. Flash
has grown up with the World Wide Web and managed to carve out an important
niche. In fact, there are a whole slew of programs that make use of Flash technology. They include Flex, Flash Builder, and Flash Catalyst. Still, if you want to learn
Flash’s design and animation features as well as its programming and development
features, then Flash Professional CS6 is the place to start.
Here are just some of the things you can do with Flash:
• Animate. You can create original artwork using Flash’s tools, or you can add
images from your other favorite programs. Flash recognizes the most common
image, video, and sound file formats. Once your artwork is in Flash, you can
add motion, sound, and dazzling effects. Surely you’ve spent some quality time
watching JibJab cartoons (Figure I-2).
• Multimedia websites. Today’s websites include motion, video, background
music, and above all, interactive objects. Flash’s built-in programming language,
ActionScript, was designed to create interactive objects. You can create eyecatching, attention-grabbing websites with Flash. It’s your choice whether
you sprinkle Flash bits on various pages or go whole-hog and develop a 100
percent Flash site.

1

www.it-ebooks.info

What’s New
in Flash
Professional
CS6‌

• Tutorials. Web-based training courses, which often include a combination of
text, drawings, animations, video clips, and voice-overs, are a natural fit for
Flash. By hooking Flash up to a server on the back end, you can even present
your audience with graded tests and up-to-the-minute product information. You
don’t have to deliver your tutorials over the web, though; you can publish them
as standalone projector files (Chapter 20) or AIR applications (Chapter 21) and
deliver them to your students via CDs, DVDs, or mobile apps.

Figure I-1

Sites like Hulu and
YouTube have made
great use of Flash’s video
abilities. You can check
any site to see whether
it’s using Flash behind the
scenes. Just right-click (or
Control-click) an image
that you think might be
Flash. If it says “About
Flash Player” at the bottom of the pop-up menu,
you guessed right.

• Presentations. PowerPoint presentations are fine…up to a point. With Flash,
you can create self-running presentations that are more creative and have a
higher degree of interactivity.
• Customer service kiosks. Many of the kiosks you see in stores and building
lobbies use Flash to help customers find what they need. For example, photo
kiosks walk customers through the process of transferring images from their
digital cameras and ordering prints; kiosks in banks let customers withdraw
funds, check interest rates, and make deposits.
• Television and film effects. The Hollywood set has been known to use Flash
to create visual effects for TV shows and even small feature films. But where
the TV and film industry is seriously adopting Flash is on promotional websites,
where designers can wed Flash graphics to scenes taken from their movies and

2

Flash CS6: The Missing Manual

www.it-ebooks.info

shows to present powerful trailers, interactive tours of movie and show sets,
and teasers.

What’s New
in Flash
Professional
CS6

• Games and other programs. With support for runtime scripting, back-end data
transfers, and interactive controls like buttons and text boxes, Flash has everything a programmer needs to create entertaining, professional-looking games.
• Mobile apps. With Flash CS6, the biggest change is the ease with which you
can develop apps for mobile devices, from iPads to Androids.

Figure I-2

With a little creativity,
your Flash animations
can capture the public’s
attention. Just ask the
folks at JibJab.

What’s New in Flash Professional CS6
Flash has been evolving and adding features at a breakneck pace since Adobe
acquired Macromedia at the end of 2005. There are many benefits to being part
of Adobe’s Creative Suite, primarily the smooth interaction with applications such
as Photoshop, Illustrator, and Dreamweaver. If you’ve used other Adobe programs,
you’ll also welcome the consistency in drawing, text, and color-choosing tools. By
the same token, if you’re new to the Adobe family, the skills you learn in Flash will
come in handy if you move on to other Adobe products.
The last few versions of Flash Professional introduced a slew of new features. For
example, CS4 added a more powerful, yet easy-to-use motion tween, complete

Introduction

www.it-ebooks.info

3

What’s New
in Flash
Professional
CS6

with Motion Editor. New 3-D capabilities opened up the world of motion, and IK
Bones (inverse kinematics) made it easy for animators to link objects for realistic
movement. Flash CS5 added a new text engine called Text Layout Framework
(TLF), which provides the kind of text control that you’d find in Adobe Illustrator
or ­InDesign, and Adobe simplified the mysterious process of font embedding. IK
bones were enhanced with a new Spring property. ActionScript coding was made
easier with code snippets—cut and paste bits of code that are easy to drop into your
document. Code hinting provides an instant reference and tips on what to do next.
Flash CS5 also made it easier to build Adobe AIR projects that run as standalone
programs on Windows, Mac, and Linux computers. An interim release, Flash CS5.5
added the ability to develop apps for iOS (iPhones and iPads) and Android devices.
Of course, all those features are covered in this book, along with the latest batch
of enhancements. Flash CS6 comes quickly on the heels of the incremental release
CS5.5 and refines many of the features added then. The development of mobile
apps heads the list:
• App development for multiple devices. It’s easier than ever to develop an
application that works on desktops (Windows, Mac, and Linux) and mobile
devices like smartphones and tablets. Flash enhancements make it easier to
share files and scale projects for a variety of screen sizes.
• Built-in iPhone and iPad App Packager. The much-publicized squabble between Apple and Adobe is at least partially resolved. Using Flash, you can build
apps for all of Apple’s iDevices.
• Built-in Android app packager. Use your Flash skills to build apps for Android
smartphones and tablets. Test your apps immediately on devices connected
by USB cables.
• The Simulator is a new tool used when you’re debugging mobile apps. It gives
you the ability to test mobile features, such as touchscreen gestures, on your
desktop computer.
• Bundle AIR runtime with apps. If you’re publishing apps, now you can include
the AIR runtime with your apps, saving your audience the extra step of downloading the runtime.
• Templates and code snippets for mobile devices. Adobe has added to the
library of templates and code snippets, making it easier to develop apps for
iPhones, iPads, and Android mobile devices. You’ll find snippets that show how
to interact with touchscreen gestures such as swipes and pinches. Templates
show how to use built-in accelerometers and geo-location features.
• Pin IK bones. Pinning locks IK bones to a specific position on the stage, making
it much easier to create poses and control your models.
• Copying layers. Flash preserves structure and other details when copying layers between files and projects.

4

Flash CS6: The Missing Manual

www.it-ebooks.info

• Symbol rasterization. The cache as bitmap feature converts vector art to
bitmaps, increasing mobile device performance, CPU efficiency, and improving
battery life.

Animation
ABCs

• Auto-save and file recovery. Like your favorite word processor, Flash now
has a feature that automatically saves your documents. Should disaster strike,
you’re less likely to lose your work.
• Incremental compilation. Flash is smarter when compiling (publishing) your
document for testing. As a result, there’s a shorter wait when you repeatedly
make changes and test your work.
• Conversion to HTML and JavaScript. Some web animation features that were
almost exclusively the domain of Flash are now possible with HTML (hypertext
markup language), JavaScript, and jQuery. Flash CS6 has the ability to export
part or all of an animation for use in HTML or JavaScript projects.

Animation ABCs
Animators used to draw each and every frame by hand. Sure, they developed some
shortcuts, but that’s still hundreds or thousands of images depending on the length
of the animation. Major animation houses employed whole armies of graphic artists, each charged with producing hundreds of drawings that represented a mere
fraction of the finished work. What we chuckled at for a scant few minutes took
weeks and dozens of tired, cramped hands to produce. One mistake, one spilled
drop of coffee, and these patient-as-Job types would have to grab fresh paper and
start all over again. When everything was done, the animation would have to be put
together—much like one of those flip books where you flip pages real fast to see a
story play out—while it was being filmed by special cameras.
With Flash on your computer, you have the equivalent of a design studio at your
fingertips. You provide the inspiration, and Flash can help you generate pro-quality
animations and full-blown interactive applications.
Up to Speed

An Animation by Any Other Name
You may occasionally hear Flash animations referred to (by
books, websites, and even Flash’s own documentation) as
movies . Perhaps that’s technically accurate, but it sure can
be confusing.
QuickTime’s .mov files are also called movies, and some people
refer to video clips as movies; but to Flash, these are two very
different animals. In addition, Flash lets you create and work
with movie clips, which are something else entirely. And movie,

with its connotations of quietly sitting in a theater balcony
eating popcorn, doesn’t convey one of the most important
features Flash offers: interactivity.
Here’s the most accurate way to describe what you create using
Flash: a website, program, or app with a really cool, animated
interface. Unfortunately, that description is a bit long and
unwieldy, so in this book, what you create using Flash is called
an animation or an app.

Introduction

www.it-ebooks.info

5

Flash in a
Nutshell

It’s pretty incredible, when you think about it. A few hundred bucks and a few hours
spent working with Flash, and you’ve got an animation that, just a few years ago,
you’d have had to pay a swarm of professionals union scale to produce. Sweet!
Naturally, if you’re new to animation, it will go easier if you learn the basic terms,
tricks, and techniques used by Flash animators.

Flash in a Nutshell
Say you work for a company that does custom auto refinishing. First assignment:
Design an intro page for the company’s new website. You have the following idea
for an animation:
The first thing you want your audience to see is a beat-up jalopy limping along a
city street toward the center of the screen, where it stops and morphs into a shiny,
like-new car as your company’s jingle plays in the background. A voice-over informs
your audience that your company has been in business for 20 years and offers the
best prices in town.
Across the top of the screen, you’d like to display the company logo, as well as a
navigation bar with buttons—labeled Location, Services, Prices, and Contact—that
your audience can click to get more information about your company. But you also
want each part of the car to be a clickable hotspot. That way, when someone clicks
one of the car’s tires, he’s whisked off to a page describing custom wheels and
hubcaps; when he clicks the car’s body, he sees prices for dent repair and repainting; and so on.
Here’s how you might go about creating this animation in Flash:
• Using Flash’s drawing tools, you draw the artwork for every keyframe of the
animation—that is, every important image. For example, you’ll need to create
a keyframe showing the beat-up junker and a second keyframe showing the
gleaming, expertly refurbished result. (Chapter 2 shows you how to draw artwork
in Flash; Chapter 3 tells you everything you need to know about keyframes.)
• Within each keyframe, you might choose to separate your artwork into different
layers. Like the see-through plastic cels that professional animators used in the
old days, layers let you create images separately and then stack them on top of
one another to make a single composite image. For example, you might choose
to put the car on one layer, your company logo on a second layer, and your
city-street background on a third layer. That way, you can edit and animate each
layer independently, but when the animation plays, all three elements appear
to be on one seamless layer. (Chapter 4 shows you how to work with layers.)
• Through a process called tweening, you tell Flash to fill in each and every frame
between the keyframes to create the illusion of the junker turning slowly into
a brand-new car. Flash carefully analyzes all the differences between the keyframes and does its best to build the interim frames, which you can then tweak

6

Flash CS6: The Missing Manual

www.it-ebooks.info

or—if Flash gets it all wrong—redraw yourself. (Chapter 3 introduces tweens,
and Chapter 8 gives you the lowdown on advanced techniques.)

The Very
Basics

• As you go along, you might decide to save a few of the elements you create
(for example, your company logo) so you can reuse them later. There’s no sense
in reinventing the wheel, and in addition to saving you time, reusing elements
actually helps keep your animation files as small and efficient as possible. (See
Chapter 7 for details on creating and managing reusable elements.)
• Add the background music and voice-over audio clips, which you’ve created in
other programs (Chapter 11).
• Create the navigation bar buttons, hotspots, and other ways for your audience
to interact with your animation (Chapters 12–18).
• Test your animation (Chapter 19) and tweak it to perfection.
• Finally, when your animation is just the way you want it, you’re ready to publish
it. Without leaving the comfort of Flash, you can convert the editable .fla file
you’ve been working with into a noneditable .swf file and either embed it into
an HTML file or create a standalone projector file that your audience can run
without having to use a browser. Chapter 20 tells you everything you need to
know about publishing.
The scenario described above is pretty simple, but it covers the basic steps you need
to take when creating any Flash animation.

The Very Basics
You’ll find very little jargon or nerd terminology in this book. You will, however, encounter a few terms and concepts that you’ll use frequently in your computing life:
• Clicking. This book gives you three kinds of instructions that require you to
use your computer’s mouse or trackpad. To click means to point the arrow cursor at something on the screen and then—without moving the cursor at all—to
press and release the left clicker button on the mouse (or laptop trackpad). To
double-click, of course, means to click twice in rapid succession, again without
moving the cursor at all. And to drag means to move the cursor while pressing
the left button continuously.
• Keyboard shortcuts. Every time you take your hand off the keyboard to move
the mouse, you lose time and potentially disrupt your creative flow. That’s why
many experienced computer fans use keystroke combinations instead of menu
commands wherever possible. Ctrl+B (⌘-B), for example, is a keyboard shortcut
for boldface type in Flash (and most other programs).
When you see a shortcut like Ctrl+S (⌘-S) (which saves changes to the current
document), it’s telling you to hold down the Ctrl or ⌘ key, and, while it’s down,
type the letter S, and then release both keys.

Introduction

www.it-ebooks.info

7

About This
Book

• Choice is good. Flash frequently gives you several ways to trigger a particular
command—by choosing a menu command, or by clicking a toolbar button, or
by pressing a key combination, for example. Some people prefer the speed of
keyboard shortcuts; others like the satisfaction of a visual command array available in menus or toolbars. This book lists all the alternatives, but by no means
are you expected to memorize all of them.

About This Book
Despite the many improvements in software over the years, one feature has grown
consistently worse: documentation. With the purchase of most software programs
these days, you don’t get a single page of printed instructions. To learn about the
hundreds of features in a program, you’re expected to use online electronic help.
But even if you’re comfortable reading a help screen in one window as you try
to work in another, something is still missing. At times, the terse electronic help
screens assume you already understand the discussion at hand and hurriedly skip
over important topics that require an in-depth presentation. In addition, you don’t
always get an objective evaluation of the program’s features. (Engineers often add
technically sophisticated features to a program because they can, not because you
need them.) You shouldn’t have to waste your time learning features that don’t help
you get your work done.
The purpose of this book, then, is to serve as the manual that should have been in the
box. In this book’s pages, you’ll find step-by-step instructions for using every Flash
feature, including those you may not have quite understood, let alone mastered,
such as working with video or drawing objects with ActionScript. In addition, you’ll
find clear evaluations of each feature that help you determine which ones are useful
to you, as well as how and when to use them.
Note This book periodically recommends other books, covering topics that might interest Flash designers
and developers. Careful readers may notice that not every one of these titles is published by Missing Manual
parent company O’Reilly Media. While we’re happy to mention other Missing Manuals and books in the O’Reilly
family, if there’s a great book out there that doesn’t happen to be published by O’Reilly, we’ll still let you know
about it.

Flash CS6: The Missing Manual is designed for readers of every skill level, except the
super-advanced programmer. If Flash is the first image creation or animation program
you’ve ever used, you’ll be able to dive right in using the explanations and examples
in this book. If you come from an animation or multimedia background, you’ll find
this book a useful reference for unique Flash topics such as the motion tweens
and the Motion Editor. The primary discussions are written for advanced-beginner
or intermediate computer users. But if you’re a first-timer, special sidebar articles
called Up to Speed provide the introductory information you need to understand
the topic at hand. If you’re an advanced user, on the other hand, keep your eye out
for similar shaded boxes called Power Users’ Clinic. They offer more technical tips,
8

Flash CS6: The Missing Manual

www.it-ebooks.info

tricks, and shortcuts for the experienced Flash fan. The Design Time boxes explain
the art of effective multimedia design.

About This
Book

The ActionScript programming language is a broad, complex subject. This book isn’t
an exhaustive reference manual, but it gives you a great introduction to ActionScript
programming, providing working examples and clear explanations of ActionScript
principles.

Macintosh and Windows
Flash Professional CS6 works almost precisely the same in its Macintosh and Windows
versions. You’ll find the same buttons in almost every dialog box. Occasionally, they’ll
be dressed up differently. In this book, the illustrations have been given even-handed
treatment, rotating between Windows 7 and Mac OS X.
Shortcut keys are probably the area where the Mac and Windows versions differ the
most. Often where Windows uses the Ctrl key, Macs use the ⌘ key. You’ll find some
other relatively minor differences, too.
Whenever this book refers to a key combination, you’ll see the Windows keystroke
listed first (with + symbols, as is customary in Windows documentation); the
­Macintosh keystroke follows in parentheses (with - symbols, in time-honored Mac
fashion). In other words, you might read, “The keyboard shortcut for saving a file
is Ctrl+S (⌘-S).”

About the Outline
Flash CS6: The Missing Manual is divided into five parts, each containing several
chapters:
• Part 1, Creating a Flash Animation guides you through the creation of your
very first Flash animation, from the first glimmer of an idea to drawing images,
animating those images, and testing your work.
• Part 2, Advanced Drawing and Animation is the designer’s feast. Here you’ll
see how to manipulate your drawings by rotating, skewing, stacking, and aligning them; how to add color, special effects, and multimedia files like audio and
video clips; how to slash file size by turning bits and pieces of your drawings
into special elements called symbols; and how to create composite drawings
using layers. Text is an increasingly important part of Flash animations and
applications, so this section introduces important text topics. In Part 3, you’ll
learn how ActionScript works with text. In this section, you’ll learn about the
Motion Editor and how to use the IK Bones feature (Chapter 9).
• Part 3, Adding Interactivity shows you how to add ActionScript 3.0 actions to
your animations, creating on-the-fly special effects and giving your audience the
power to control your animations. An entire chapter is devoted to predesigned
components, like buttons, checkboxes, sliders, and scrolling lists. Powerful but
easy to use, these components give your animation professional functions and
style. This section includes lots of examples and ActionScript code. You can

Introduction

www.it-ebooks.info

9

About the
Online
Resources

copy and modify some of the practical examples for your own projects. You’ll
see how to loop frames and how to let your audience choose which section of
an animation to play, and how to customize the prebuilt interactive components
that come with Flash. You’ll find specific chapters on using ActionScript with
text and using ActionScript to draw.
• Part 4, Debugging and Delivering Your Animation focuses on testing, debugging, and optimizing your animation. You’ll also find out how to publish
your animation so that your audience can see and enjoy it, and how to export
an editable version of your animation so that you can rework it using another
graphics, video editing, or web development program. The last three chapters
focus on Adobe AIR, a system for creating standalone apps using Flash. You’ll
learn how to deliver these apps to Windows, Mac, and Linux desktops, as well
as iPhones, iPads, and Android mobile devices.
• Part 5 has two Appendixes: Appendix A: Installation and Help, explains how
to install Flash and where to turn for help. Appendix B: Flash Professional CS6,
Menu by Menu, provides a menu-by-menu description of the commands you’ll
find in Flash CS6.

About→These→Arrows
Throughout this book, you’ll find instructions like, “Open your Program Files→Adobe→
Adobe Flash CS6 folder.” That’s Missing Manual shorthand for much longer sentences
like “Double-click your Program Files folder to open it. Inside, you’ll find a folder
called Adobe; double-click to open it. Inside that folder is a folder called Adobe Flash
CS6; open it, too.” This arrow shorthand also simplifies the business of choosing
menu commands, as you can see in Figure I-3.

Figure I-3

When you see
instructions like “Choose
Text→Style→Italic,”
think, “Click to pull down
the Text menu, and then
move your mouse down
to the Style command.
When its submenu opens,
choose the Italic option.”

About the Online Resources
As the owner of a Missing Manual, you’ve got more than just a book to read. Online, you’ll find example files so you can get some hands-on experience, as well as
tips, articles, and maybe even a video or two. You can also communicate with the

10

Flash CS6: The Missing Manual

www.it-ebooks.info

­ issing Manual team and tell us what you love (or hate) about the book. Head over
M
to www.missingmanuals.com, or go directly to one of the following sections.

Safari®Books
Online

Missing CD
This book doesn’t have a CD pasted inside the back cover, but you’re not missing
out on anything. Go to www.missingmanuals.com/cds/flashcs6tmm to download.
And so you don’t wear down your fingers typing long web addresses, the Missing
CD page also offers a list of clickable links to the websites mentioned in this book.

Registration
If you register this book at www.oreilly.com, you’ll be eligible for special offers—like
discounts on future editions of Flash CS6: The Missing Manual. If you buy an ebook
from oreilly.com and register your purchase, you get free lifetime updates for that
edition of the ebook; we’ll notify you by email when updates become available.
Registering takes only a few clicks. Type www.oreilly.com/register into your browser
to hop directly to the registration page.

Feedback
Got questions? Need more information? Fancy yourself a book reviewer? On our
Feedback page, you can get expert answers to questions that come to you while reading, share your thoughts on this Missing Manual, and find groups for folks who share
your interest in Flash. To have your say, go to www.missingmanuals.com/feedback.

Errata
To keep this book as up to date and accurate as possible, each time we print more
copies, we’ll make any confirmed corrections you suggest in both the print book and
the ebook. We note such changes on the book’s website so you can mark important
corrections into your own copy of the book, if you like. And if you bought the ebook
from us and registered your purchase, you’ll get an email notifying you that you can
download an updated version of that edition of the ebook. Go to http://tinyurl.com/
flashcs6-mm to report an error and view existing corrections.

Safari®Books Online
is an on-demand digital library that lets you easily search over 7,500
technology and creative reference books and videos to find the
answers you need quickly.
With a subscription, you can read any page and watch any video from our library
online. Read books on your cellphone and mobile devices. Access new titles before
they’re available for print, and get exclusive access to manuscripts in development
and post feedback for the authors. Copy and paste code samples, organize your
favorites, download chapters, bookmark key sections, create notes, print out pages,
and benefit from tons of other time-saving features.

Introduction

www.it-ebooks.info

11

Safari®Books
Online

12

O’Reilly Media has uploaded this book to the Safari Books Online service. To have
full digital access to this book and others on similar topics from O’Reilly and other
publishers, sign up for free at http://my.safaribooksonline.com.

Flash CS6: The Missing Manual

www.it-ebooks.info

Part

Creating a Flash
Animation
Chapter 1:

Getting Around Flash
Chapter 2:

Creating Simple Drawings
Chapter 3:

Animate Your Art

www.it-ebooks.info

1

www.it-ebooks.info

chapter

Getting Around Flash

1

A

s mentioned in this book’s introduction, Flash performs several feats of audiovisual magic. You use it to create animations, to display video on a website,
to create handheld apps, or to build a complete web-based application. So
it’s not surprising that the Flash workspace is crammed full of tools, panels, and
windows (Figure 1-1). But don’t be intimidated—you don’t have to conquer these
tools all at once. This chapter introduces you to Flash’s main work areas and oftenused toolbars and panels, so you can start creating Flash projects right away. You’ll
experiment with Flash’s stage and timeline, and see how Flash lets you animate
graphics so that they move along a path and change shape.
Tip To get further acquainted with Flash, you can check out the built-in help screens by selecting Help→Flash
Help. Once the help panel opens, click Using Flash Professional. It’s on the left side of the somewhat busy window.
You can read more about Flash’s help system in Appendix A.

Starting Flash
You start Flash just as you would any other program—which means you can do it in
a few different ways, depending on whether you have a PC or a Mac. Installing the
program puts Flash CS6 and its related files in the folder with your other programs,
and you can start it by double-clicking its icon. Here’s where it’s usually installed:
• Windows. Go to C:\Program Files\Adobe\Adobe Flash CS6\Flash.exe. You can
create a shortcut or drag the file to the taskbar for quicker starting.

15

www.it-ebooks.info

Starting
Flash

• Mac. Go to Macintosh HD\Applications\Adobe Flash CS6\Adobe Flash CS6. You
can make an alias or drag the file to the Dock for quicker starting.

Figure 1-1

The Flash Professional
workspace is divided
into three main areas:
the stage, the timeline,
and the Panels dock.
This entire window, together with the timeline,
toolbars, and panels, is
sometimes called the
Flash desktop, the Flash
interface, or the Flash
authoring environment.

Here are some other Windows ways to start the program:
• From the Vista or Windows 7 Start menu, choose All Programs→Adobe Flash
Professional CS6.
• For Windows XP, go to Start→All Programs→Adobe→Adobe Flash Professional
CS6.
• If you’re a keyboard enthusiast, press the Windows key and begin to type flash.
As you type, Windows searches for a match and displays a list with programs
at the top. Most likely, the Flash program is at the top of the list and already
selected, so just press Enter. Otherwise, use your mouse or arrow keys to select
and start the program.
Here are some Mac launching options:
• Even if you haven’t added the Flash icon to the Dock, you can still find it in
the Dock’s Applications folder. Click and hold the Applications folder icon and
choose Adobe Flash CS6→Adobe Flash CS6.
• Want to hunt down Flash in the Finder? Most of the time, it’s installed in
­Macintosh HD→Applications→Adobe Flash CS6→Adobe Flash CS6.

16

Flash CS6: The Missing Manual

www.it-ebooks.info

• If you’d rather type than hunt, use Spotlight. Press ⌘-space and then begin to
type flash. As you type, Spotlight displays a list of programs and files that match.
Most likely, the Flash program is at the top of the list and already selected, so
just press Return. Otherwise, use the mouse or arrow keys to select and start
the program.

Starting
Flash

When you first start Flash, up pops the Welcome screen, shown in Figure 1-2. This
screen puts all your options—like starting a new document or returning to a work
in progress—in one handy place. For good measure, Adobe includes some links to
help references and resources on its website.

Figure 1-2

This Welcome screen
appears the first time
you launch Flash—and
every subsequent time,
too, unless you turn on
the “Don’t show again”
checkbox (pull down the
bottom of the window if
you don’t see it). If you
ever miss the convenience
of seeing all your
recent Flash documents,
built-in templates, and
other options in one
place, then you can turn
it back on by c­ hoosing
Edit→Preferences
(Windows) or
Flash→Preferences (Mac).
On the General panel,
choose Welcome Screen
from the On Launch
­pop-up menu.

Note

If Flash seems to take forever to open—or if the Flash desktop ignores your mouse clicks or responds
sluggishly—you may not have enough memory installed on your computer. See page 767 for more advice.

Chapter 1: Getting Around Flash

www.it-ebooks.info

17

Starting
Flash

When you choose one of the options, the Welcome screen disappears and your
document takes its place. Here are your choices:
• Create from Template. Clicking one of the little icons under this option lets
you create a Flash document using a predesigned form called a template. A
template helps you create an animation more quickly, since a Flash developer
has already done part of the work for you. You can find out more about templates in Chapter 7.
• Open a Recent Item. As you create new documents, Flash adds them to this list.
Clicking one of the filenames listed here tells Flash to open that file. Clicking the
folder icon lets you browse for and open any other Flash file on your computer.
Tip The options for creating new Flash documents and opening recent documents also appear on the File
menu, as shown in Figure 1-3.

Figure 1-3

Several of the options
on each menu include
keystroke shortcuts
that let you perform an
action without having to
mouse all the way up to
the menu. For example,
instead of selecting
File→Save As, you can
press Ctrl+Shift+S to
tell Flash to save your
Flash document. On the
Mac, the keystroke is
Shift-⌘-S.

• Create New. Clicking one of the options listed here lets you create a brand-new
Flash file. Most of the time, you want to choose the first option, ActionScript 3.0,

18

Flash CS6: The Missing Manual

www.it-ebooks.info

which is a garden-variety animation file. ActionScript is the underlying programming language for Flash animations. The current version of ActionScript
is 3.0, and it’s the version used for the projects in this book. You can use the
ActionScript 2.0 option if you need to work with a Flash project that was created
several years ago. For details on the file formats for different Flash projects,
see the box below.

Starting
Flash

Note Old programming pros—you know who you are—may have reasons to prefer ActionScript 2.0. For
example, you might choose this option if you’re continuing work on a project created using ActionScript 2.0, or
if you’re working with a team using ActionScript 2.0.

Frequently Asked Question

Understanding Flash File Formats
Why are there so many different options under Create New on
the Welcome screen? What are they all for?

has the programming options and support for making
iOS apps.

There seem to be a bewildering number of options when you
create a new Flash document. As explained above, if you’re
just learning Flash, you probably want to use the first option:
ActionScript 3.0. The other options are for special Flash projects
targeted to specific devices, like iPhones, iPads, or Android
devices. Some options are for specific programming needs, like
creating an ActionScript class. The details are in the appropriate
sections of this book, but here’s a quick rundown:

• Flash Lite 4 is similar to the iPhone format but works for
several other handheld devices.

• Use AIR to create desktop applications using the Adobe
Integrated Runtime tools (page 705). Instead of using
Flash Player, these applications use AIR.
• Use AIR for Android if you’re creating apps for Android
handhelds like the Droid Razr or Samsung Galaxy.

• You can also create an ActionScript File (a file containing
nothing but ActionScript, for use with a Flash animation);
a Flash JavaScript File (used to create custom tools, panels,
commands, and other features that extend Flash); or
a Flash Project (useful if you’re planning a complex,
multifile, multideveloper Flash production and need
version control).
• The last two options, ActionScript 3.0 Class and ActionScript
3.0 Interface, help programmers create reusable objects
that can be used in multiple Flash projects.

• Creating an iPhone or iPad app? Use the Air for iOS option.
Flash creates a document that’s just the right size and

• Extend. Clicking the Flash Exchange link under this option tells Flash to open
your web browser and load the Flash Exchange website. There,you can download Flash components, sound files, and other goodies that you can add to
your Flash animations. Some are free, some are fee-based, and all of them are
created by Flashionados just like you.
• Learn. As you might guess, these links lead to materials Adobe designed to
help you get up and running. Click an option, and your web browser opens to a
page on the Adobe website. The first few topics introduce basic Flash concepts
like symbols, instances, and timelines. Farther down the list, you find specific
topics for building applications for mobile devices or websites (AIR). At the

Chapter 1: Getting Around Flash

www.it-ebooks.info

19

A Tour of
the Flash
Workspace

bottom of the Welcome screen, “Getting Started” covers the very, very basics.
“New Features” explains (and celebrates) some of Flash CS6’s new bells and
whistles. “Developers” leads to an online magazine with articles and videos with
an ActionScript programming slant. “Designers” leads to a similar resource for
the Flash graphics and design community.

A Tour of the Flash Workspace
The best way to master the Flash CS6 Professional workspace is to divide and
conquer. First, focus on the three main work areas: the stage, the timeline, and the
Panels dock. Then you can gradually learn how to use all the tools in those areas.
One big source of confusion for Flash newbies is that the workspace is so easy to
customize. You can open bunches of panels, windows, and toolbars. You can move
the timeline above the stage, or you can have it floating in a window all its own.
Once you’re a seasoned Flash veteran, you’ll have strong opinions about how you
want to set up your workspace so the tools you use most are at hand. If you’re just
learning Flash with the help of this book, though, it’s probably best if you set up
your workspace so that it matches the pictures in these pages.
Fortunately, there’s an easy way to do that. Adobe, in its wisdom, created the Workspace Switcher—a tool that lets you rearrange the entire workspace with the click of
a menu. The thinking is that an ideal workspace for a cartoon animator is different
from the ideal workspace for, say, a rich internet application (RIA) developer. The
Workspace Switcher is a menu in the upper-right corner of the Flash window, next
to the search box. The menu displays the name of the currently selected workspace;
when you first start Flash, it probably says Essentials. That’s a great workspace that
displays some of the most frequently used tools. In fact, it’s the workspace used
throughout most of this book.
Here’s a quick little exercise that shows you how to switch among the different
workspaces and how to reset a workspace after you’ve mangled it by dragging
panels out of place and opening new windows.
1. Start Flash.
Flash opens, displaying the Welcome screen. Unless you’ve made changes, the
Essentials workspace is used. See Figure 1-4, top.
2. From the Workspace menu near the upper-right corner of the Flash window,
choose Classic.
The Classic arrangement harkens back to earlier versions of Flash, when the
timeline resided above the stage (Figure 1-4, bottom). If you wish, go ahead
and check out some of the other layouts.
3. Choose the Essentials workspace again.

20

Flash CS6: The Missing Manual

www.it-ebooks.info

Back where you began, the Essentials workspace shows the timeline at the
bottom. The stage takes up most of the main window. On the right, the Panels
dock holds toolbars and panels. Now’s the time to cause a little havoc.

A Tour of
the Flash
Workspace

Figure 1-4

Top: The Essentials workspace is the one used
throughout this book.
Bottom: The Classic
workspace shows the
timeline above the stage,
a look familiar to Flash
Pro veterans.

Chapter 1: Getting Around Flash

www.it-ebooks.info

21

A Tour of
the Flash
Workspace

4. In the Panels dock, click the Properties tab and drag it to a new location
on the screen.
Panels can float, or they can dock to one of the edges of the window. For this
experiment, it doesn’t matter what you choose to do.
5. Drag the Color and Swatches toolbars to new locations.
The Color toolbar has an icon that looks like an artist’s palette at the top. Like
the larger panels, toolbars can either dock or float. You can drag them anywhere
on your monitor, and you can expand and collapse them by clicking the doubletriangle button in their top-right corners.
6. Go to Window→Other Panels→History.
Flash has dozens of windows. Only a few are available now, because you haven’t
even created a document yet.
Tip

As you work on a project, the History panel keeps track of all your commands, operations, and changes.
It’s a great tool for undoing mistakes. For more details, see page 34.

7. From the Workspace menu, choose Reset Essentials.
The workspace changes back to the original Essentials layout, even though you
did your best to mess it up.
Anytime you want your workspace to match the one used throughout most of
this book, do the “Essentials two-step”: Choose Essentials from the Workspace
Switcher (if you’re not already there), and then choose Reset Essentials. As shown
in Figure 1-4, when you use the Essentials workspace, the Flash window is divvied
up into three main work areas: the stage (upper left), the timeline (lower left), and
the panels dock (right). Before exploring each of these areas in detail, here are a
few words about Flash’s menu bar.

Menu Bar
Like most computer programs, Flash gives you menus to interact with your documents. In traditional fashion, Windows menus appear at the top of the program
window, while Mac menus are always at the very top of the screen. The commands
on these menus list every way you can interact with your Flash file, from creating a
new file—as shown on page 18—to editing it, saving it, and controlling how it a
­ ppears
on your screen.
Some of the menu names—File, Edit, View, Window, and Help—are familiar to anyone
who’s used a PC or a Mac. Using these menu choices, you can perform basic tasks
like opening, saving, and printing your Flash files; cutting and pasting artwork or
text; viewing your project in different ways; choosing which toolbars to view; getting help; and more.

22

Flash CS6: The Missing Manual

www.it-ebooks.info

To view a menu, simply click the menu’s name to open it, and then click a menu
option. If you prefer, you can also drag down to the option you want. Let go of the
mouse button to activate the option. Figure 1-3 shows you what the File menu looks
like. Most of the time, you see the same menus at the top of the screen, but occasionally they change. For example, when you use the Debugger to troubleshoot
ActionScript programs, Flash hides some of the menus not related to debugging.

A Tour of
the Flash
Workspace

Tip You’ll learn about specific commands and menu options in their related chapters. For a quick reference
to all the menu options, see Appendix B.

The Stage
As the name implies, the stage is usually the center of attention. It’s your virtual
canvas. Here’s where you draw the pictures, display text, and make objects move
across the screen. The stage is also your playback arena; when you run a completed animation—to see if it needs tweaking—the animation appears on the stage.
­Figure 1-5 shows a project with an animation under construction.

Stage

Work area (backstage)

Figure 1-5

The stage is where you
draw the pictures that
will eventually become
your animation. The work
area (light gray) gives
you a handy place to put
graphic elements while
you figure out how you
want to ­arrange them on
the stage. Here a text box
is being dragged from the
work area back to center
stage.

The work area is the technical name for the gray area surrounding the stage, although many Flashionados call it the backstage. This work area serves as a prep
zone where you can place graphic elements before you move them to the stage,
and as a temporary holding pen for elements you want to move off the stage briefly
as you reposition things. For example, let’s say you draw three circles and one box
containing text on your stage. If you decide you need to rearrange these elements,
you can temporarily drag one of the circles off the stage.
Note

The stage always starts out with a white background, which becomes the background color for your
animation. Changing it to any color imaginable is easy, as you’ll learn in the next chapter.
Chapter 1: Getting Around Flash

www.it-ebooks.info

23

A Tour of
the Flash
Workspace

You’ll almost always change the starting size and shape of the stage depending on
where people will see your finished animation—in other words, your target platform.
If your target platform is a smartphone, for example, you’re going to want a smaller
stage. If, on the other hand, you’re creating an animation for a ballpark’s JumboTron,
you’re going to want a giant stage. You’ll get to try your hand at modifying the size
and background color of the stage later in this chapter.

The Timeline
When you go to the theater, the stage changes over time—actors come and go,
songs are sung, scenery changes, and the lights shine and fade. In Flash, you’re the
director, and you get to control what appears on the stage at any given moment.
The timeline is the tool used to specify what’s seen or heard at a particular moment.
The concept is pretty simple, and if you’ve ever used video editing software, it will
be familiar. Flash animations (or movies) are organized into chunks of time called
frames. Each little box in the timeline represents a frame or a point in time. You use
the playhead, shown in Figure 1-6, to select a specific frame. So when the playhead is
positioned at Frame 10, the stage shows what the audience sees at that point in time.

Figure 1-6

The playhead is a red box that appears in the timeline; here
the playhead is set to Frame 10. You can drag the playhead
to any point in the timeline to select a single frame. The
Flash stage shows exactly what’s in your animation at that
point in time.

Playhead

Keyframes

The timeline is laid out from left to right, starting with Frame 1. Simply put, you build
Flash animations by choosing a frame with the playhead and then arranging the
objects on the stage the way you want them. The timeline uses a special tool called
a keyframe (see Figure 1-6) to remember exactly what’s on stage at that moment.
You’ll learn more about the keyframes and other timeline tools in Chapter 3. Most
simple animations play from Frame 1 through to the end of the movie, but Flash
gives you ways to start and stop the animation and control how fast it runs—that is,
how many frames per second (fps) are displayed. Using some ActionScript magic,
you can control the order in which the frames are displayed. You’ll learn how to do
that on page 522.

24

Flash CS6: The Missing Manual

www.it-ebooks.info

Tip

The first time you run Flash, the timeline appears automatically, but occasionally you want to hide the
timeline—perhaps to reduce screen clutter while you concentrate on your artwork. You can show and hide the
timeline by selecting Window→Timeline or pressing Ctrl+Alt+T (or for the Mac, Option-⌘-T).

Panels and
Toolbars

Panels and Toolbars
If you followed the little exercise on page 20, you know you can put panels and
toolbars almost anywhere onscreen. However, if you use the Essentials workspace,
you start off with a few frequently used panels and toolbars docked neatly on the
right side of the program window.
It’s easy to get confused by the Flash nomenclature. Flash has toolbars, panels,
palettes, and windows. Sometimes collapsed panels look like toolbars and open up
when clicked—like the frequently used Tools panel. Toolbars and panels pack the
most commonly used options together in a nice compact space, so you don’t have to
do a hunt-and-peck through the main menu every time you want to do something.
Panels are great, but they take up precious real estate. As you work, you can hide
certain tools to get a better view of your artwork. (You can always get them back
by choosing their names from the Window menu.)
Toolbars and panels are such an integral part of working with Flash that it’s helpful
to learn some of their tricks early on:
• Move a panel. Just click and drag the tab or top of the panel to a new location.
Panels can float anywhere on your monitor, or dock on an edge of the Flash
program window (as in the Essentials workspace). For more details on docking
and floating, see the box on page 26.
• Expand or collapse a panel. Click the double-triangle button at the top of a
panel to expand or collapse it. Collapsed panels look like toolbars, showing a
few icons that hint at the tools’ purposes. Expanded panels take up more real
estate, but they also give you more details and often have word labels for the
tools and settings.
• Show or hide a panel. Use the Window menu to show and hide individual
panels. Checkmarks appear next to the panels that are shown.
• Close a floating panel. In Windows, click the small X in the panel’s upper-right
corner. On the Mac, click the X in the upper-left corner.
• Show or hide all panels. The F4 key works like a toggle, hiding or showing all
the panels and toolbars. Use it when you want to quickly reduce screen clutter
and focus on your artwork.
• Separate or combine tabbed panels. Click and drag the name on a tab to
separate it from a group of tabbed panels. To add a tab to a group, just drag
it into place.

Chapter 1: Getting Around Flash

www.it-ebooks.info

25

Panels and
Toolbars

• Reset the panel workspace. Choose Reset  from the Workspace Switcher. Instead of , you see the name of the current
workspace—something like Essentials or Classic. You can also do a reset using
the menus; choose Window→Workspace→Reset .

Up to Speed

Docked vs. Floating
A docked toolbar or panel appears attached to some part of
the workspace window, while a floating toolbar or panel is one
you can reposition by dragging.

(Figure 1-7), especially as you begin to move the panel.
The actual visual effect is different on Mac and Windows
computers, but the mechanics work the same.

Whether you want to display toolbars and panels as docked or
floating is a matter of personal choice. If you constantly need
to click something on a toolbar—which means it needs to be
in full view at all times—docked works best. But if you usually
just need a toolbar or a panel for a brief time and want to be
able to move it around on the screen (so it doesn’t cover up
something else), then floating is the ticket.

2. Drag the panel away from the edge of the workspace
window and release the mouse button. Flash displays
the panel where you dropped it. You can reposition it
anywhere you like simply by dragging it again.

To turn a docked panel into a floating panel:
1. Click any blank spot on the panel’s top bar and hold
down the mouse button. You may notice a color change

To dock a floating panel, simply reverse the procedure: Drag
the floating panel to the edge of the workspace window and
let go of the mouse button. You see a line or a shadow when
the panel is ready to dock. When you let go, Flash docks the
panel automatically.

Figure 1-7

Top: To conserve space
on Flash’s jam-packed
desktop, only one
toolbar—the Edit bar—­
appears automatically.
It’s positioned directly
above the stage. To display the other two, select
Window→Toolbars→Main
(to display the Main toolbar, Windows only) and
Window→Toolbars→
Controller (to display the
Controller window).
Bottom: The checkmarks
on the menu show when
a toolbar is turned on.
Choose the toolbar’s
name again to remove
the checkmark and hide
the toolbar.

26

Flash CS6: The Missing Manual

www.it-ebooks.info

Note

When you reposition a floating toolbar, Flash remembers where you put it. If, later on, you hide the
toolbar—or exit Flash and run it again—your toolbars appear exactly as you left them. If this isn’t what you want,
use the Workspace Switcher to choose a new workspace layout or to reset the current workspace.

Panels and
Toolbars

Toolbars
Strictly speaking, Flash has only three toolbars: Main, Controller, and Edit. (Everything else is a panel, even if it looks suspiciously like a toolbar.) Figure 1-7 shows all
three toolbars.
• Main (Windows only). The Main toolbar gives you one-click basic operations,
like opening an existing Flash file, creating a new file, and cutting and pasting
sections of your drawing.
• Controller. If you’ve ever used a DVD player or an iPod, you’ll recognize the Stop,
Rewind, and Play buttons on the Controller toolbar, which lets you control how
you want Flash to run your finished animation. (Not surprisingly, the Controller
options appear grayed out—meaning you can’t select them—if you haven’t yet
constructed an animation.) With Flash Professional CS6, the Controller is a little
obsolete, because now the same buttons appear below the timeline.
• Edit bar. Using the options here, you can change your view of the stage, zooming in and out, as well as edit scenes (named groups of frames) and symbols
(reusable drawings).
Note

The Edit bar is a little different from the other toolbars in that it remains fixed to the stage. You can’t
reposition it.

Tools Panel
The Tools panel is unique. For designers, it’s probably the most used of all the panels
and toolbars. In the Essentials workspace, the Tools panel appears along the right
side of the Flash program window. There are no text labels, just a series of icons.
However, if you need a hint, just hold your mouse over one of the tools, and a tooltip
shows the name of the tool. So, for example, mouse over the arrow at the top of the
Tools panel, and the tooltip says “Selection tool (V).” The letter in parentheses is
the shortcut key for that tool. Press the letter V while you’re working in Flash, and
your cursor changes to the Selection tool.
Most animations start with a single drawing. And to draw something in Flash, you
need drawing tools: pens, pencils, brushes, colors, erasers, and so on. The Tools
panel shown in Figure 1-8 is where you find Flash’s drawing tools. Chapter 2 shows
you how to use these tools to create a simple drawing; this section gives you a quick
overview of the six sections of the Tools panel, each of which focuses on a slightly
different kind of drawing tool or optional feature.

Chapter 1: Getting Around Flash

www.it-ebooks.info

27

Panels and
Toolbars

Selection and drawing tools
At the top of the Tools panel are the tools you need to create and modify a Flash
drawing. For example, you might use the Pen tool to start a sketch, the Paint Bucket
or Ink Bottle to apply color, and the Eraser to clean up mistakes.

Figure 1-8

Selection tools

The Tools panel groups tools by different drawing chores. Selection and Transform tools are at the
top, followed by Drawing tools. Next are the IK Bones tool and the Color tools. The View tools are
for zooming and panning. The Color tools include two swatches, one for strokes and one for fills.
At the bottom you find the Options buttons, which change depending on the drawing tool you’ve
selected. If you like, you can drag the docked Tools panel away from the edge of the workspace and
turn it into a floating panel.

Drawing and
painting tools

Color and IK Bones

Zooming and panning

Stroke and fill

Tool options

View tools
At times, you’ll find yourself drawing a picture so enormous you can’t see it all on
the stage at one time. Or perhaps you’ll find yourself drawing something you want
to take a super-close look at so you can modify it pixel by pixel. In either of these
situations, you can use the tools Flash displays in the View section of the Tools panel
to zoom in, zoom out, and pan around the stage. (You’ll get to try your hand at using
these tools later in this chapter; see page 35.)

28

Flash CS6: The Missing Manual

www.it-ebooks.info

Note

The term pixel is short for “picture element.” Images on a computer screen are made up of lots of
tiny dots emitting different colors. Each dot is a pixel.

Panels and
Toolbars

Color tools
When you’re creating in Flash, you’re drawing one of two things: a stroke, which is
a plain line or outline, or a fill, which is the area within an outline. You can use these
tools to choose a color from the Color palette before you click one of the drawing
icons to begin drawing (or afterward to change the colors, as discussed in Chapter 2).
Flash applies that color to the stage as you draw.
Options tools
Which icons appear in the Options section at any given time depends on which tool
you’ve selected. For example, when you select the Zoom tool from the View section
of the Tools panel, the Options section displays an Enlarge icon and a Reduce icon
that you can use to change the way the Zoom tool works (Figure 1-9).

Figure 1-9

Zoom tool

On the Tools panel, when you click each tool, the Options section shows you buttons that let you modify that
particular tool. In the Tools panel’s View section, for example, when you click the Zoom tool, the O­ ptions
section changes to show you only zooming options: Enlarge (with the + sign) and Reduce (with the – sign).

Zoom in option
Zoom out option

Properties Panel
In many ways, the Properties panel is Command Central as you work with your
animation, because it gathers all the pertinent details for the objects you work with
and displays them in one place. Select an object, and the Properties panel displays
all of its properties and settings. It’s not just an information provider; you also use
the Properties panel to change settings and tweak the elements in your animation.
When there’s fine-tuning to be done, select an object and adjust the settings in
the Properties panel. (You can learn more in the “Test Drive” section on page 35.)
The Properties panel usually appears when you open a new document. Initially, it
shows information about your Flash document, like the stage dimensions and the
animation’s frame rate. Whenever you select an individual object in your animation,
the Properties panel shows that object’s details. For example, if you select a text
field, the Properties panel lists the typeface, font size, and text color. You also see
Chapter 1: Getting Around Flash

www.it-ebooks.info

29

Panels and
Toolbars

information on the paragraph settings, like the margins and line spacing. Because
the Properties panel crams so many details into one place, you’ll find yourself using
the collapse and expand buttons to show and hide some of the information in its
subpanels, as shown in Figure 1-10.

Figure 1-10

The Properties panel shows only those properties associated
with the object you’ve selected on the stage. Here, because a
text field is selected, the Properties panel gives you options
you can use to change the typeface, font size, font color, and
paragraph settings. Click the triangular expand and collapse
buttons to show and hide details in the Properties panel.

Subpanel open

Subpanel closed

Note

If you don’t see the Properties panel, you can display it by selecting Window→Properties or by
pressing Ctrl+F3 (⌘-F3 on a Mac).
Properties subpanels
On the Properties panel, you see different subpanels depending on the object you’ve
selected. Some objects have a lot of settings, and subpanels are Flash’s way of giving
you access to all of them. Fortunately, the various panels and tools work consistently.
For example, many objects have settings that determine their onscreen positions and
define their width and height dimensions. These common settings usually appear
at the top of the Properties panel, and you set them the same way for most kinds
of objects. If you want to change colors or add special effects like filters or blends,
you’ll find that the tools work the same way throughout Flash.

Library Panel
The Library panel (Figure 1-11) is a place to store objects you want to use more
than once. Let’s say, for example, that you create a picture-perfect bubble, sun,
or snowflake in one frame of your animation. (You’ll learn more about frames on
page 91.) Now, if you want that bubble, sun, or snowflake to appear in 15 additional
frames, you could draw it again and again, but it really makes more sense to store
a copy in the current project library and then just drag it to where it’s needed on
those other 15 frames. This trick saves time and ensures consistency to boot. The
Library panel has quite a few other important tricks, and you’ll learn more about
30

Flash CS6: The Missing Manual

www.it-ebooks.info

it on page 248. To show the Library panel, click Window→Library, or press Ctrl+L
(Windows) or ­⌘-L (Mac).

Panels and
Toolbars

Tip In the upper-right corner of most panels is an Options menu button. When you click this button, a menu
of options appears—different options for each panel. For example, the Color Swatch panel lets you add and delete
color swatches. You’ll find many indispensable tools and commands on the Options menus, so it’s worth checking
them out. You’ll learn about different options throughout this book.

Figure 1-11

Storing simple images as reusable symbols in the Library panel does more than just save
you time: It saves you file size, too. (You’ll learn a lot more about symbols and file size in
Chapter 7.) Using the Library panel you see here, you can preview symbols, add them to
the stage, and easily add symbols you created in one Flash document to another.

Other Flash Panels
As you can see from the examples on the preceding pages, each Flash panel performs
specific functions, and most of them deserve several pages to describe them fully, as
you’ll find throughout this book. For now, Table 1-1 gives a thumbnail description and
notes the page where the panel is described in detail. If you’re eager to get started
actually using Flash, jump to page 35 to start the Flash CS6 Test Drive.
Table 1-1 Flash Panels and their uses (in order as they appear on the Window menu)
Panel Name

Keyboard
Shortcut

Purpose

Timeline

Windows: Ctrl+Alt+K
Mac: Option-⌘-T

Technically, the timeline is just another panel.
You can move, hide, expand, and collapse the
timeline just as you would any other panel.
See page 91 for more.

Motion Editor

none

A powerful tool used to create and control
animation effects. See page 311 for more.

Chapter 1: Getting Around Flash

www.it-ebooks.info

31

Panels and
Toolbars

32

Panel Name

Keyboard
Shortcut

Purpose

Tools

Windows: Ctrl+F2
Mac: ⌘-F2

Perhaps the most frequently used panel of
all—it holds drawing, selecting, and coloring
tools. The Tools panel also includes specialized tools like the IK Bones tools and the 3D
Rotation tool. See page 60 for more.

Properties

Windows: Ctrl+F3
Mac: ⌘-F3

Everything that appears on the stage has
properties that define its appearance or characteristics. Even the stage has properties, like
width, height, and background color. You can
review and edit an object’s properties in the
Properties panel. See page 29 for more.

Library

Windows: Ctrl+L
Mac: ⌘-L

Holds graphics, symbols, and entire movies that you want to reuse. See page 248 for
more.

Common
Libraries

none

When you want to share buttons, classes, or
sounds among several different Flash documents, use the common libraries. That way,
they’ll be available to all your projects. See the
tip on page 274 for more.

Motion Presets

none

Serves up dozens of predesigned animations.
See page 295 for more.

Actions

Windows: F9
Mac: Option-F9

You use this panel to write ActionScript code.
The Actions panel provides a window for
code, a reference tool for the programming
language, and a visual display for the objectoriented nature of the code. See page 415 for
more.

Code Snippets

none

Contains predesigned chunks of code—someone else sweated the details so you don’t
have to. Specific bits of code perform timeline
tricks, load or unload graphics, handle audiovisual tasks, and program buttons. See the
box on page 445 for more.

Behaviors

Windows: Shift+F3
Mac: Shift-F3

The earlier version of ActionScript (version
2.0) uses this panel to provide predesigned
bits of code.

Compiler Errors

Windows: Alt-F2
Mac: Option-F2

Here’s where you troubleshoot ActionScript
code. Messages explain the location of an
error and provide hints as to what went
wrong. See page 665 for more.

Debug Panels

none

Additional panels to help you find errors in
your ActionScript programs. See page 662 for
more.

Flash CS6: The Missing Manual

www.it-ebooks.info

Panel Name

Keyboard
Shortcut

Purpose

Movie Explorer

Windows: Alt+F3
Mac: Option-F3

Helps you examine the elements in your Flash
animation, including separate scenes if you’ve
created them. The display uses a tree structure to show the relationship of the elements.

Output

Windows: F2
Mac: F2

Another place to debug ActionScript programs. The Output panel is used to display
text messages at certain points as a program
runs. See page 657 for more.

Align

Windows: Ctrl+K
Mac: ⌘-K

Lets you align and arrange graphic elements
on the stage. See page 78 for more.

Color

Windows: Shift+F9
Mac: Shift-⌘-F9

Lets you select and apply colors to graphic
elements. See page 198 for more.

Info

Windows: Ctrl+I
Mac: ⌘-I

Provides details about objects, like their location and dimensions. The Info panel also keeps
track of the cursor location and the color
immediately under the cursor. See page 104
for more.

Swatches

Windows: Ctrl+F9
Mac: ⌘-F9

Colors and gradients that you can apply to
graphic elements. You can create your own
swatches for colors you want to reuse. See
page 203 for more.

Transform

Windows: Ctrl+T
Mac: ⌘-T

Lets you change the size, shape, and position
of graphic elements on the stage. You can
even use the Transform panel to reposition or
rotate objects in 3-D space. See page 174 for
more.

Components

Windows: Ctrl+F7
Mac: ⌘-F7

Holds predesigned components you can use
in your Flash projects. You’ll find user interface
components like buttons and checkboxes,
components that can be used to create data
tables, and components used to control movie
and sound players. See page 543 for more.

Component
Inspector

Windows: Shift+F7
Mac: Shift-F7

Provides compatibility with older animations.
(Flash CS6 displays component properties in
the Properties panel. Earlier versions of Flash
used the Component Inspector. See the box
on page 560 for more.)

Accessibility
(under Other
Panels)

Windows: Alt+Shift+F11
Mac: Shift-⌘-F11

Tools that help you ensure that vision- and
hearing-impaired folks can enjoy the animations you create using Flash. See the box on
page 34.

Chapter 1: Getting Around Flash

www.it-ebooks.info

Panels and
Toolbars

33

Panels and
Toolbars

Panel Name

Keyboard
Shortcut

History (under
Other Panels)

Windows: Ctrl+F10
Mac: ⌘-F10

Lets you backtrack or undo specific steps in
your work. Flash keeps track of every little
thing you do to a file, starting with the time
you created it (or the last time you opened it).
You can also use this panel to save a series of
commands you want to reuse later.

Scene (under
Other Panels)

Windows: Shift+F2
Mac: Shift-F2

Helps you organize and manage your scenes.
(You can break long Flash animations into
separate scenes, as described on page 529.)

Strings (under
Other Panels)

Windows: Ctrl+F11
Mac: ⌘-F11

Need to create an animation or application
that works in different languages? Using the
Strings panel, you can create and manage
multi-language versions of the text. (This
book doesn’t cover multi-language Flash.)

Web Services
(under Other
Panels)

Windows:
Ctrl+Shift+F10
Mac: Shift-⌘-F10

Used only with ActionScript 2.0 projects that
connect to the Internet. (This book doesn’t
cover ActionScript 2.0.)

Purpose

Word to the Wise

Why Accessibility Matters
The term accessibility refers to how easy it is for folks with
physical or developmental challenges (like low or no vision)
to understand or interact with your animation.
As you can imagine, a Flash animation—which often includes
audio in addition to video and still images—isn’t going to be
experienced the same way by someone who’s blind or deaf as
it is by someone who isn’t impaired. But there is help. One of
the features that conscientious Flashionados build into their
animations is alternative information for those who can’t see
or hear. Often, sight-and hearing- impaired folks use assistive
devices to “report back” on what they otherwise can’t access,
so Flash animators build content into their animations that
these assistive devices can access and translate.

and ­useable to the public. But if you’re a private individual
planning to incorporate your animation into a website, you
shouldn’t ignore the issue of accessibility just because nobody’s looking over your shoulder. If you ignore accessibility,
you eliminate a whole audience who might otherwise benefit
from your content.
For more information on accessibility, check out these websites:
• www.adobe.com/accessibility/products/flash/
• www.Section508.gov
• www.paciellogroup.com
• www.WebAIM.org
• www.w3.org/wai

Thanks to U.S. legislation referred to as Section 508, local,
state, and federal websites absolutely have to be accessible

34

Flash CS6: The Missing Manual

www.it-ebooks.info

The Flash CS6
Test Drive

The Flash CS6 Test Drive
For the tutorials in this section, you need a Flash animation to practice on. There’s
one ready and waiting for you on the Missing CD page at www.missingmanuals.
com/cds/flashcs6mm. The file is named 01-1_First_Animation.fla.
Note In case you’re wondering, the number 01 at the beginning stands for Chapter 1, and the -1 indicates it’s
the first exercise in the chapter. Other Missing CD files for this book are named the same way. You can download
all the exercise files in a single ZIP file or you can grab them chapter by chapter. The Missing CD also includes
links to all the web-based resources mentioned in this book.

Open a Flash File
Get the file 01-1_First_Animation.fla and save it on your computer. You may want
to create a FlashMM folder in your My Documents or Documents folder to hold your
Missing Manual exercises. Launch Flash, and then choose File→Open. When the Open
dialog box appears, navigate to the file you just downloaded, and then click Open.
When you open a document, the Welcome screen disappears. Flash shows you the
animation on the stage, surrounded by the usual timeline, toolbars, and panels. If
you’re using the Essentials workspace, it should look like Figure 1-12.

Figure 1-12

After you open the exercise in Flash, your screen
should look like this. At
the bottom, the timeline
shows two layers—one
named background and
the other, wheel. The
stage shows (surprise,
surprise) a background
and a wheel. To the right,
the Properties panel
displays the properties for
the document.

Chapter 1: Getting Around Flash

www.it-ebooks.info

35

The Flash CS6
Test Drive

Explore the Properties Panel
The Properties panel appears docked to the right side of the stage when you open
a new document. As shown in Figure 1-13, it shows the Property settings for objects.
Initially, it shows the properties for the Flash document itself. Click another object,
such as the wheel, and you see its properties. Why are properties so important?
They give you an extremely accurate description of objects. If you need to precisely
define a color or the dimensions of an object, the Properties panel is the tool to use.
It not only reports the details, but it also gives you the tools to make changes, as
shown in this little exercise:
1. At the top of the Tools panel, click the Selection tool (solid arrow).
As an alternative, press V, the keyboard shortcut for the Selection tool.
2. Click the white part of the stage.
The Properties panel shows the properties for your Flash document. At the top,
you see the word “Document,” and underneath, you see the filename.

Figure 1-13

Left: When you first
open a document, the
Properties panel shows
property settings for the
document.
Right: Select the wheel in
the document, and you
see its properties. Click
the triangle buttons to
expand and collapse the
subpanels.

Subpanel open

Subpanel closed

3. Click the triangle button to open the Properties subpanel.
The button works like a toggle to open and close the subpanel. The subpanel
displays three settings: FPS (frames per second), Size, and Stage.
4. Click the white rectangle next to Stage.
A panel opens with color swatches.
36

Flash CS6: The Missing Manual

www.it-ebooks.info

The Flash CS6
Test Drive

5. Click a color swatch—any color will do.
The background color of the stage changes to the color you chose.
6. Click the wheel.
Information about the wheel fills the Properties panel. The wheel is a special
type of object called a Movie Clip symbol. You’ll learn much more about Movie
Clips and other reusable symbols in Chapter 7.
Note

You may notice that you can’t select anything else in this document. That’s because the other objects
are in the background layer, which is locked. (For more details on locking layers, see page 148.)

Resize the Stage
In Flash, the size of your stage is the actual finished size of your animation, so setting
its exact dimensions is one of the first things you do when you create an animation,
as you’ll see in the next chapter. But you can resize the stage at any time.
Here’s how to change the size of your stage:
1. With the Selection tool, click on a blank area of the stage (to make sure
nothing on the stage is selected).
Alternatively, you can click the Selection tool and then choose Edit→Deselect All.
2. In the Properties panel, open the Properties subpanel, and then click the
Edit button.
The Document Settings window appears, as shown in Figure 1-14. At the top of
the window are boxes labeled Dimensions. That’s where you’re going to work
your magic.

Figure 1-14

The Document Settings dialog
box puts several related settings
in one place. At the top are the
document’s dimensions. In the
lower-left corner are settings
for the stage’s background color
and the frame rate. Click “Ruler
units” to choose among Inches,
Points, Centimeters, Millimeters,
and Pixels.

Chapter 1: Getting Around Flash

www.it-ebooks.info

37

The Flash CS6
Test Drive

3. Click in the width box (which currently reads “550 px”), and then type 600.
You can change both the width and the height. The changes won’t take place
until you click OK. So if you have second thoughts and don’t want to make any
changes, then just click Cancel.
Tip

If you want to change the stage back to its original dimensions after you’ve clicked OK, you can do that
by choosing Edit→Undo or pressing Ctrl+Z (⌘-Z on a Mac). Undo works like it does in most programs, undoing
your last action, and you can press it multiple times to work your way back through your recent actions.

4. Click OK when you’re done.
The stage resizes according to your instructions.

Zoom In and Out
When your Flash project gets big or complicated, you may want to focus on just a
portion of the stage. If you’ve used other graphics programs—from Windows Paint
to iPhoto or Photoshop—there’s not much mystery to the process. In the Tools panel,
click the Zoom tool, which looks like a magnifying glass (Figure 1-15). Initially, the
Zoom tool shows a + sign, meaning it’s all set to zoom in. Click any spot you want
to zoom in on, and you get a closer view. As an alternative, you can click and drag
over an area to zoom in with more precision. As you drag, a rectangle appears to
mark the area of interest.

Figure 1-15

Choose the Zoom tool
and then click the stage
to zoom in on your Flash
document. Hold the Alt
(Option) key down to
zoom out. Once you’re
zoomed in, you can move
around using either the
scrollbars or the Hand
tool (H).
Hand tool
Zoom tool

Scrollbars

38

Flash CS6: The Missing Manual

www.it-ebooks.info

Using the Zoom tool, you can get so close that you see individual pixels in your
artwork. Very handy for some operations. Once you’re zoomed in, you can use the
scroll bars at the right and bottom of the stage to reposition the stage in the viewing area. Even easier, choose the Hand tool (H) and then click and drag the stage
within the viewing area.

The Flash CS6
Test Drive

Want to zoom out? Hold down the Alt (Option) key as you use the Zoom tool. Each
time you click, you see more and more of the stage. Directly above the stage is the
Edit bar. (If you don’t see it, select Window→Toolbars→Edit Bar.) A menu on the Edit
bar sets the Magnification or Zoom property as a percentage, as shown in Figure 1-16.

Figure 1-16

The Magnification menu in the Edit
bar gives you a quick readout on the
Zoom factor. Click the menu to choose
from several presets, including “Fit
in Window,” which shows the entire
stage, or Show All, which zooms in or
out to show all the objects drawn on
the stage.

Zoom menu

Make It Move
If you’ve followed along in the exercises up to this point, you deserve a taste of
the Flash magic to come. Enough studying panels and tools—Flash is an animation
program. It’s time to make something move, or more precisely, to make something
bounce. With the help of a little feature called Motion Presets, it’s easier than you
think:
1. In the Magnification menu, choose “Fit in Window.”
This gives you a view of the entire stage.
2. With the Selection tool (V), drag the wheel to the top of the stage.
All the parts of the wheel (tire, spokes, hub) move as a single unit because
they’re grouped within a Flash symbol, called a Movie Clip.
3. Choose Window→Motion Presets.
A floating panel appears, as shown in Figure 1-17. Motion Presets are covered in
detail on page 295, but for this exercise, you just need a couple of basic steps.
4. Click the triangle next to Default Presets.
The Default Presets folder opens, showing many predesigned motions.

Chapter 1: Getting Around Flash

www.it-ebooks.info

39

The Flash CS6
Test Drive

5. Click the words “bounce-smoosh.”
At the top of the panel, the preview window gives you an idea of how the
bounce-smoosh preset works.
6. Make sure the wheel is selected on the stage and that “bounce-smoosh”
is selected in the Motion Presets panel, and then click the Apply button.
A green line appears hanging from the bottom of the wheel. This line is called
the motion path, and it shows you how the wheel will move over the course of
the animation. In the timeline, the wheel layer turns to blue to indicate that it’s
now a motion tween.
Note

Tween is an animation term that comes from all those in-between frames that animators have to
draw to create a smooth animated motion.

Figure 1-17

Motion Presets panel

The Motion Presets window has two folders. The one called Default Presets (shown
open here) holds presets designed by
Adobe. The other folder holds presets that
you design and save. The “tail” hanging
down from the wheel is the motion path.

Motion
Path

7. Close the Motion Presets panel.
That’s all it takes to animate the wheel, so you might as well close the Motion
Presets window. You can always bring it back later if you want to try out some
of the other presets on the wheel.

40

Flash CS6: The Missing Manual

www.it-ebooks.info

Play an Animation
Naturally, after you’ve animated an object in Flash, you want to see the results. You’ll
be checking your work frequently, so Adobe makes it easy to play an animation. Just
press Enter (Return), and your animation bounces and smooshes as advertised. In
the timeline, notice how the playhead moves along frame by frame as your animation plays. You can see your animation at all the different stages by dragging the
playhead up and down the timeline—a process sometimes called scrubbing.

The Flash CS6
Test Drive

New in Flash CS6, the animation controller is fixed to the bottom of the timeline
(Figure 1-18). That’s the perfect place because it’s always available.

Figure 1-18

If you’ve ever used a DVD player or an iPod, the
animation play icons at the bottom of the timeline look
comfortingly familiar. You can move one frame at a time
or jump to the beginning or end of an animation.

Go to first frame
Go to last frame
Step back one frame
Step forward one frame
Stop/Play

Save a File
Saving your work frequently is important in any program, and Flash is no exception.
You don’t want to have to go back and recreate that perfect animated sequence
because the power went out. The minute you finish a sizable chunk of work, save your

Chapter 1: Getting Around Flash

www.it-ebooks.info

41

The Flash CS6
Test Drive

Flash file by pressing Ctrl+S (⌘-S). The Save command also appears on the menu
bar: File→Save. Both maneuvers save the animation with the current name. So, if
after following the exercises in this chapter, you use the Save command, you end up
with a single Flash document using the original filename: 01-1_First_Animation.fla.
If you want to save the file under a different name, use Save As or Ctrl+Shift+S
(Shift-⌘-S). A standard window opens where you can choose a folder and give your
document a name. When you use Save As, you end up with two documents, the
original and one saved with the new name. The newly named document is the one
that remains open in the Flash workspace.
If you close a document (File→Close) after you’ve made changes, Flash automatically
asks if you want to save it. You’re given three options. Choose Save to save your
work and close the document. Choose Don’t Save to close the document without
saving your work. Choose Cancel if you don’t want to save and don’t want to close
the document.
Note
Flash Professional CS6 provides a new life-saving feature for files. When you create a new document
you can turn on Auto-Save. This feature saves your document periodically even if you forget. You even get to
choose the period. Initially, the Auto-Save period is set to every 10 minutes. To change that, click the number and
type a new value.

Up to Speed

Don’t Be Afraid to Play
This first chapter introduced some important basics to help you
get started working in Flash. Here’s the most valuable Flash tip
of all: Don’t be afraid to play. This book is full of exercises that
carefully show you how to build animations, but that doesn’t
mean you shouldn’t head off the beaten path from time to
time. The more you experiment and say, “What happens if
I try this?” the faster you’ll learn. It’s true of all computer
programs, but it’s especially true with a graphics program

42

like Flash. So download some of the animations from www.
missingmanuals.com/cds/flashcs6mm . Open them in Flash,
and then disassemble them. Alter the artwork. Mess with the
tweens. Add new parts. You won’t break anything. You can
always make copies or download the originals again. For a
start, why not go back and check out how some of the other
motion tweens work with that wheel?

Flash CS6: The Missing Manual

www.it-ebooks.info

chapter

Creating Simple
Drawings

2

O

ver the years, Flash has acquired many new features, but at heart it’s still an
animation tool. The best way to learn Flash is to jump in and start drawing.
So that’s exactly what you’ll do in this chapter. It starts with tips for planning your animation and then moves on to specific tools like the Pen, the Pencil,
the shape tools, the Line tool, and the Brush. You’ll draw a simple picture and see
how to use Flash to draw in different styles, from cartoons to mechanical drawings.
Once you’ve created some drawings, you’ll learn more about moving and arranging
objects on the stage.
In the next chapter, you’ll add a few more drawings and string them together to
create a simple animation.

Plan Before You Draw
If you’re just creating a simple banner ad, you probably already have a concept in
mind and are itching to start drawing and animating. On the other hand, if you’re
creating a new feature for the Cartoon Network, then you need to think like a movie
director. If you’re creating a tablet or smartphone app or a rich Internet application
(RIA), then you need to think like a graphic user interface (GUI) designer. Whatever
you’re producing, it pays to plan. In the case of an ad, what do you want your audience to do? What sales message will motivate it? If your goal is to entertain, then
you need to think about how to tickle people’s funny bones or how to move them
emotionally. If the story is complicated, then you need to break it down into scenes
and use the entire storyteller’s toolkit to be effective. To learn some of the tricks
of the storytelling trade, try the techniques animators and graphic novelists use. If

43

www.it-ebooks.info

Plan Before
You Draw

you’re designing an application, whether it’s for a handheld device or a full-size web
page, you need to think about the needs of the app’s users. What do they want to
do? What tools do they expect to use?
Drawing a single picture is relatively easy. But creating an effective animation—one
that gets your message across, entertains people, or persuades them to take an
action—takes a bit more up-front work. And not just because you have to generate
dozens or even hundreds of pictures: You also have to decide how to order them,
how to make them flow together, when (or if) to add text and audio, and so on. With
its myriad controls, windows, and panels, Flash gives you all the tools you need to
create a complex, professional animation, but the creativity comes from you. You
can avoid pitfalls and wasted time by planning before you draw.

Creating a Storyboard
Say you want to produce a short animation to promote your company’s great new
gourmet coffee called Lotta Caffeina. You decide your animation would be perfect
as a banner ad. Now, maybe you’re not exactly the best artist since Leonardo da
Vinci, so you want to keep it simple. Still, you need to get your point across—BUY
OUR COFFEE!
Before you even turn on your computer (much less fire up Flash), pull out a sketch
pad and a pencil and think about what you want your animation to look like.
For your very first drawing, you might imagine a closeup of a silly-looking face on a
pillow, belonging to a guy obviously deep in slumber, eyes scrunched tight, mouth
slack. Next to him is a basic bedside table, empty except for what appears to be a
jangling alarm clock.
OK, now you’ve made a start. After you pat yourself on the back—and perhaps refuel
your creativity with a grande-sized cup of your own product—it’s time to plan and
execute the frame-by-frame action. You do this by whipping out six quick penciland-paper sketches. When you finish, your sketch pad may look something like this:
• The first sketch shows your initial idea—Mr. Comatose and his jangling alarm
clock.
• Sketch #2 is identical to the first, except for the conversation balloon on the left
side of the frame, where capped text indicates that someone is yelling to your
unconscious hero (who remains dead to the world).
• In sketch #3, a disembodied hand appears at the left side of the drawing, placing
a cup bearing the Lotta Caffeina logo on the bedside table next to Mr. Comatose.
• Sketch #4 is almost identical to the second, except that the disembodied hand
is now gone, and Mr. Comatose’s nose has come to attention as he gets a whiff
of the potent brew.
• Sketch #5 shows a single eye open. Mr. Comatose’s mouth has lost its slackness.

44

Flash CS6: The Missing Manual

www.it-ebooks.info

• The last sketch shows a closeup of the man sipping from the cup, his eyes wide
and sparkling, a smile on his lips, while a “thought bubble” tells viewers, “Now,
that’s worth getting up for!”

Plan Before
You Draw

Design Time

Tips from the Trenches
Starting out on a learning curve as steep as Flash’s can be
daunting. Sometimes it’s helpful to hear what the pros
think—to get advice from folks who’ve been there, done that,
and want you to know that you can, too.
Here are the top 10 recommendations from Flash experts:
1. Analyze other people’s animations. As you begin to
explore Flash content on other websites, think about it
critically. Don’t just focus on whether the result is dazzling
or colorful, but also consider whether it’s effective. Does it
do what it was designed to do: Help you keep track of the
baseball pool? Provide advice and recipes for Thai cuisine?
Get you to buy something? Did it work? If not, why not?
What detracts from the overall effect? Keep a notebook
so you can apply what you learn to your own efforts.
2. Don’t sell yourself short. Don’t think you can’t create
great animations just because you’re not a professional
artist with a background in design. You’ll find that Flash
helps you through lots of tough spots (like correcting your
shaky lines), and frankly, you’re probably not shooting
for a Picasso- or Tarantino-level result anyway. You get
better at everything with practice; Flash is no exception.
3. Start with a storyboard. When you’re working with
anything but the simplest design (anything more than a
couple of frames), create a storyboard (page 44). It can
be as rough or as detailed as you want; some folks just
jot notes to themselves. Every minute you spend planning
saves you hours of hair-pulling.
4. Practice, practice, practice. There are many programs
out there that you can sit down and nail in 20 minutes.
Flash isn’t one of them. And while reading is a great way
to begin learning Flash, no amount of book learning is a
substitute for rolling up your sleeves and producing an
animation or two. (That’s why this book includes handson examples.)

the online resources outlined in Appendix A to join a
Flash community where you can ask questions, get help,
and share ideas.
6. Don’t throw anything away. You might be tempted to
discard your mistakes. But if the “mistake” is interesting
or useful, save it; you may be able to use it later for a
different project. (While you’re at it, write down a few
quick notes about how you achieved the result so you
can recreate it if you want to.)
7. Spread yourself thin. Many Flash pros have several
projects of various types going at once. They can switch
around when they get stuck on one. Keeping a lot of balls
in the air can be an excellent way to help you think about
things from different angles, which will help develop your
skills. Often the best way to solve a problem is to give
yourself a break and not think about it for a while. The next
time you tackle the problem, the solution is right there.
8. Always test your work in a live environment. Don’t rely
on Flash’s testing environment. If you’re creating a
Flash animation to display on a smartphone, test it on
a smartphone before you go live. If you’re targeting a
website, upload your animation to a web server and test
it in a browser, or better yet, several different browsers,
like Internet Explorer, Firefox, Safari, and Chrome.
9. Solicit (and incorporate) viewer feedback. When you
finish an animation, ask for feedback. Choose people you
know will take the time to look at your work carefully and
give you an honest evaluation.
10. Never, ever sacrifice content for the sake of coolness. The
purpose of tools like Flash is to help you get your message
across, not to see how many special effects you can cram
into a 5-second spot. Pay more attention to whether you’re
creating an effective animation than to whether you’re
adding enough colors, shapes, or audio clips.

5. Join an online Flash community. Real-time help from
knowledgeable Flashionados is a beautiful thing. Use

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

45

Plan Before
You Draw

In the animation world, your series of quick sketches is called a storyboard.
Figure 2-1 shows a basic storyboard.

Figure 2-1

1

2

3

4

5

6

Spending time up front sketching
a storyboard lets you set up your
basic idea from start to finish. Don’t
worry about how sophisticated (or
unsophisticated) it looks; nobody
but you will see this rough working
model.

Five Questions for a Better Result
Creating your Flash animation will go more smoothly if you can answer these five
basic questions:
• What do you want to accomplish with this Flash creation? Give yourself a
mission statement, just as if you were in one of those tedious business meetings.
You want something like “Generate 1,000 hits for the Lotta Caffeina website” or
“Create a 22-minute animation set on the planet Galactrix” or “Sell an iPhone
app to movie lovers.”
• Who’s your audience? Different types of people require different approaches.
For example, kids love all the snazzy effects you can throw at them; adults aren’t
nearly as impressed by animation for animation’s sake. The better sense you
have of the people most likely to view your Flash creation, the better you can
target your message and visual effects specifically to them.
• What third-party content (if any) do you want to include? Content is the stuff
that makes up your Flash animation: the images, text, video, and audio clips.
Perhaps you want your animation to include only your own drawings, like the
ones you’ll learn how to create in this chapter. But if you want to add images
or audio or video clips from another source, then you need to figure out where
you’re going to get them and how to get permission to use them. (Virtually
anything you didn’t create—a music clip, for example, or a short scene from a
TV show or movie—is protected by copyright. Someone somewhere owns it,

46

Flash CS6: The Missing Manual

www.it-ebooks.info

so you need to track down that someone, ask permission, and—depending on
the content—pay a fee to use it. Chapter 11 lists several royalty-free, dirt-cheap
sources of third-party content.)

Preparing to
Draw

• How many frames is it going to take to put your idea together, and how do
you want them to be ordered? For a simple banner ad, you’re looking at anywhere from a handful of frames to around 50. A tutorial or product demonstration, on the other hand, can easily require 100, 200, or more frames. Whether
you use storyboarding or just jot down a few notes to yourself, getting a feel
for how many frames you’ll need helps you estimate the time it’s going to take
to put your animation together.
Tip

Try to get your message across as succinctly as possible. Fewer frames (and therefore images) typically
mean a smaller file size, which is important if you plan to put your Flash animation up on the Web. (Folks surfing
with dial-up or on a smartphone often have trouble viewing large files.)

• How will you distribute it? In other words, what’s your target platform? If you
plan to put your animation up on a website, then you need to keep file size to
a minimum so people with slow connections can see it; if you plan to make it
available to hearing-impaired folks, then you need to include an alternative way
to communicate the audio portion; if you’re creating an animation you know will
be played on a 100-inch monitor, then you need to draw large, bold graphics.
Your target platform—the computer (or device) and audience most likely to view
your project—always affects the way you develop your animation.
Note Page 762 provides advice for designing a single animation that works with several different target
devices such as web pages, smartphones, and tablets.

Preparing to Draw
Even if you’re familiar with animation software (but especially if you aren’t), you need
to know a few quick things before you roll up your sleeves and dive into Flash—sort
of like the quick where’s-the-turn-signal once-over you do when you jump into a
rental car for the first time.
In this section, you’ll find out how to get around the stage and how to customize
your Flash document’s properties. You’ll also learn a couple of basic Flash terms
you need to understand before you use the drawing tools (which you’ll see how to
do on page 65).
But first you need to open a new Flash document page so you can follow along at
home. To do so, launch Flash. Unless you’ve turned it off (page 17), the first thing
you see is Flash’s Welcome screen. Under Create New, choose ActionScript 3.0. If
you’ve turned off the Welcome screen, you can create a new file using the Flash
main menu. Here’s how:
Chapter 2: Creating Simple Drawings

www.it-ebooks.info

47

Preparing to
Draw

1. From the main menu, choose File→New.
The New Document window opens. If the window doesn’t show the General
tab, as in Figure 2-2, then click that tab to make it active.

Figure 2-2

In every case but one
(Flash Project), selecting a
document type and then
clicking OK tells Flash
to create a crisp, new
document for you. (Flash
projects are really nothing
more than lists of other
files with version control
added so that multiple
designers can work on
the same Flash project
without overwriting one
another’s changes.)

2. In the Type list, select the type of new file you want to create, and then
click OK.
(If you’re not sure what file type you want, choose ActionScript 3.0; see the box
on page 19 for the reason why.) The New Document window disappears, and
Flash displays a brand-new blank document. You can tell it’s a new document
by the name Flash gives it—for example, Untitled-1.

Setting Document Properties
The stage, as you may recall from Chapter 1, is your electronic canvas: It’s where
you draw your lines and shapes and add your text. Figure 1-1 shows what the stage
looks like the first time you create a new document in Flash. There’s certainly nothing wrong with it, but you may want to change the size or color. Or, as described
on page 50, you might want to make other changes to the stage to help you draw.
For example, you can tell Flash to display guidelines that help you align objects and
draw accurately. These guides show while you’re creating, but your audience won’t
see them in the final animation. This section shows you how.
Changing the size of the stage
The size of your stage is also the size of your finished animation. The standard
550 x 400 pixel Flash stage, which worked well in the past, is pretty small by today’s
web standards. You may want to bump it up to 800 x 600 or even larger, depending

48

Flash CS6: The Missing Manual

www.it-ebooks.info

on your target audience. If you’re creating something for a smartphone or a tablet,
you need to shrink the stage accordingly. In the case of the Lotta Caffeina banner
ad, you want a wide, short stage (typically somewhere around 729 x 90).

Preparing to
Draw

The best way to ensure that your finished animation is the right size is to start with
the right size stage out of the gate. Figure 2-3 shows how to change the stage dimensions using the Document Settings dialog box. There are several ways to open
this box, which contains settings related to the stage and your animation:
• Press Ctrl+J (⌘-J).
• Right-click the stage. From the shortcut menu that appears, choose Document
Properties.
• In the menu bar, choose Modify→Document.
• Press Ctrl+Shift+A (Shift-⌘-A) to make sure nothing is selected—that way, the
Properties panel shows the document settings. If necessary, open the Properties
subpanel. (Yep, there’s a Properties subpanel in the Properties panel.) Click Edit.

Figure 2-3

You use the Document
Settings window to set
the size and color of your
stage (which will also be
the size and background
color of your finished
animation). When you type
the dimensions, you can
type the units of measurement (px, or even pixels,
for example). But it’s not
necessary: The value in the
Ruler units menu tells Flash
which unit of measurement
you’re using.

Once the Document Settings window is open, you can type new height and width
numbers in the Dimensions box. The Match radio buttons let you automatically set
the stage size. By selecting Default, you can change the stage size by typing new
values. Choose Contents, and Flash automatically sizes the stage to fit the elements
on it—a nice snug fit, no more, no less. If you know you’re going to be printing your
work, choose the Printer option, and the stage will fit nicely on a single sheet of paper.
In the center of the Document Settings box, there’s a menu where you set the units
used to measure the stage. These units are used for rulers, guidelines, and grids—all
of which are covered later in this chapter. Out of the box, Ruler units is set to pixels,
which is good for animations that your audience will view on a computer screen or
a handheld device. In other cases, you may prefer points, inches, or metric units.

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

49

Preparing to
Draw

This dialog box is also where you change the stage color by clicking the Background
color box and selecting a new color, as shown in Figure 2-4. (You’ll learn more about
frame rates in Chapter 15, but for now, just note that this is one of the places where
you can change that setting. For now, leave it at 24.00 frames per second.)
Tip If you save your work frequently, you’re less likely to have to recreate animations that get lost due to
lightning strikes or wild dog attacks. If you need help remembering to save, click the Auto-Save checkbox in the
Document Settings window (Figure 2-3) and type a time period. Flash starts you off with a 10-minute interval,
which works well for many Flash designers.

Figure 2-4

Changing the color of the stage
is an easy way to change the
way your drawing looks. It can
also make constructing your
drawing easier. For example, if
you’re working with light-colored
shapes, a nice dark background
will help you see what you’re doing—even if you end up changing
the stage back to a lighter color
when your design is finished.

Note

Because the background color changes the way foreground objects appear, you may want to experiment with the color of the stage, beginning with one color and changing it as you add objects to the stage until
you get the effect you want. (You can change the color of the stage at any time, even after you’ve completed
your drawing.) When you’re working on your animation, it may be easier to change the stage background color
in the Properties panel. Go to Properties→Properties→Stage, and then choose a color from the color picker.

Adding Measurement Guides
Even professional artists can’t always draw a straight line or estimate 3 inches correctly. Fortunately, with Flash, they don’t have to, and neither do you. Flash has
several tools that help you spot precisely where your objects are on the stage and

50

Flash CS6: The Missing Manual

www.it-ebooks.info

how much space they take up: rulers, a grid, and guides. You can see an example
of these tools as they appear on the stage in Figure 2-5.

Preparing to
Draw

Figure 2-5

Grids, guides, and rulers
are Flash’s answers
to graph paper and a
T square. To change the
unit of measurement for
the ruler, press Ctrl+J
(⌘-J) to open the Document Settings box. From
the “Ruler units” menu,
select whatever measurement unit you want. You
can also change the unit
of measurement for the
guides and the grid. To do
so, right-click (Controlclick) the stage, and then
choose Guides→Edit
Guides or Grid→Edit Grid.

You can fine-tune your ruler, grid, and guides using the View menu or the shortcut
menu that pops up when you right-click (or, on a Mac, Control-click) the stage. Here’s
what each tool does and how to display each of them:
• Rulers. This tool displays a ruled edge along the left and top of the stage to help
you determine the location and position of your objects. To turn on rulers, rightclick (or Control-click) the stage. Then, from the shortcut menu, choose Rulers.
• Grid. This tool divides the stage into evenly sized rectangles, which is great for
helping you to position objects with precision. To turn on the grid, right-click
(Control-click) the stage. Then, from the shortcut menu, choose Grid→Show
Grid. You can fine-tune the grid to your taste; right-click the stage, and choose
Edit Grid. Among your options: You can set the width and height of the grid
rectangles; you can have the grid appear over or under graphics on the stage;
and you can have lines and shapes automatically “snap to” the grid as you draw.
• Guides. If you want a tool that helps with straight-edge alignment—like the
grid—but if you want more control over where the straight edges appear on
the stage, then you want guides. To add guides, you first have to turn on rulers
(see the first item in this list). Then, right-click (Control-click) the stage and,
from the shortcut menu, choose Guides→Show Guides. A checkmark appears
next to Show Guides to indicate that they’re turned on, but you don’t actually

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

51

Preparing to
Draw

see any guide lines until you drag them onto the stage. You can drag as many
guides as you want down from the top ruler or over from the left ruler. To add
a guide, click a ruler (don’t let go of the mouse) and then drag your cursor to
the stage. Release the button when you get to the spot where you want your
guide to appear.
Tip Grids and guides would be helpful enough if all they did was help you eyeball stuff, but Flash takes them
one step further. If you turn on snapping and then drag, say, a circle around the stage, Flash helps you to align
the circle precisely with either a grid or a guide mark. When the circle is close to a grid or guide line, it snaps into
position. To turn on snapping, simply right-click (Control-click) the stage, and then choose Snapping→“Snap to
Guides” (or Snapping→“Snap to Grid”). For more on the joys of snapping, see page 190.

Frequently Asked Question

Taking Advantage of Templates
How can some template designers I’ve never even met possibly
know what kind of drawings I want to put in my animation, or
how long I want my animation to be, or what kinds of sounds I
want to add? They can’t—so how on earth can Flash templates
save me time?

the Sample Files templates offer great examples for common
or complicated tasks.

The predesigned templates that come with Flash can save you
time on the grunt work associated with several commonplace
kinds of animations. For example, the Interactive Advertising
Bureau (www.iab.net) recommends certain dimensions for
certain types of web ads, including pop-up windows and
banner ads. When you open a template for a pop-up ad, for
example, the stage is already preset to the dimensions for a
standard-sized pop-up in a standard-sized browser window.
You don’t have to research the issue, and you don’t have to
customize the stage yourself.

• Advertising. Pop-up, skyscraper (skinny vertical), banner
(skinny horizontal), and full-page ads.

Or say you want to create a slideshow in Flash, complete with
buttons that let folks click forward and backward through your
pictures. Putting an interactive animation like this together
from scratch would require a fair bit of work, but if you use a
photo album template, all you have to do is add your images
and captions. The template takes care of the rest.
Over the years, different templates have come and gone in
Flash. One of the complaints in Flash Professional CS4 was that
many templates, like the ones for photo albums, mysteriously
disappeared. Well, they’re back in Flash Professional CS6, along
with other truly useful templates. Now you’ll find more timesaving templates for lots of different projects. In particular,

52

To see the templates Flash has, select File→New to display the
New Document window, and then click the Templates tab. Here
are the main categories:

• AIR for Android. These templates set the stage to the
correct dimensions for Android devices, as well as get you
started with techniques for using Android’s accelerometer
and swipe gestures.
• Animation. Predesigned buttons, masks, and animated
effects like candle glow, rain, and snow.
• Banners. Standard-sized ads for the tops and sides of
web pages.
• Media Playback. Photo albums and standard-sized
documents for TV displays.
• Presentations. Predesigned presentation documents—
think PowerPoint meets Flash.
• Sample Files. Perhaps the most interesting templates
of them all. These templates show you how to tackle
specific Flash projects, from creating menus to making a
stick figure walk naturally. You can learn a lot by opening
these templates and dissecting the elements to see how
they work.

Flash CS6: The Missing Manual

www.it-ebooks.info

To lock the guides so you don’t accidentally move them as you’re drawing,
right-click (Control-click) the stage and choose Guides→Lock Guides. When
Lock Guides is set, you can’t move any existing guides, but you can still add
new ones. To remove a guide, make sure Lock→Guides is turned off, and then
just drag the doomed guide back to the ruler. Poof, it’s gone.

Drawing a
Shape

Drawing a Shape
Flash graphics are made up of two primary elements: strokes and fills. Strokes may
vary in thickness, but they look like lines. A stroke may be a single straight line, a
curved line, or a complex series of connected lines. Strokes can also be dotted or
dashed lines. Fills are colored shapes or surface areas. A fill may take on a common
shape, such as a rectangle or an oval, or a fill may be a complex shape, such as a
cartoon character’s head. When you’re drawing, you can create strokes and fills
independently or together. For example, using the Rectangle tool, you can create a
rectangle that has a stroke outline and a fill that colors the surface. Here’s how to do it:
1. With a new Flash document open, click the Rectangle tool in the Tools panel,
or just press the shortcut key, R.
When a tool is selected, the button in the Tools panel has a distinctive pushedin look. The Properties panel changes to display Rectangle Tool properties, as
shown in Figure 2-6. A subpanel displays fill and stroke properties.

Figure 2-6

When you choose the Rectangle tool (R), the label at the top of
the Properties panel says “Rectangle Tool,” and the panel displays
properties related to a rectangle, such as the color of the stroke and
fill. Here the color for the rectangle’s stroke is being changed.

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

53

Drawing a
Shape

2. Click the color swatch next to the pencil.
When you click the color swatch, a panel filled with different colors appears,
and the cursor changes into an eyedropper—your signal that it’s time to pick a
color. The colors in the leftmost column are standard hues and shades of gray.
3. In the upper-left corner, click the black swatch.
The color picker panel closes, and the color for the rectangle’s stroke is set to
black.
4. Click the color swatch next to the Paint Bucket, and choose blue from the
color picker panel.
The color for the rectangle’s fill is set to blue.
Tip

Sometimes as you work in the Properties panel, you may wonder what property a particular color swatch,
text box, slider, or menu controls. If you move your cursor over the mystery setting, a tooltip appears with its
name, such as “Stroke color,” “Fill color,” or “Stroke height.”

5. In the “Fill and Stroke” subpanel, drag the slider next to the word “Stroke”
until the number in the “Stroke height” box is about 3 or 4.
As you drag the slider, the number in the box to the right changes to show
the stroke height (you may prefer to think of it as thickness). The Stroke slider
goes from 0.10 pixels to 200 pixels, a huge range that makes the slider a little
touchy. If you have trouble getting the number you want, you can just type a
number in the text box.
6. Click a spot on the stage and then, holding down the mouse button, drag
to create a rectangle.
As you drag, you see an outline that indicates the size and shape of the object
you’re drawing. As long as you hold the mouse button down, you can continue
to change the size and shape.
7. Release the mouse button.
The finished rectangle appears on the stage, as shown in Figure 2-7. The stroke
is black and about 3 or 4 pixels thick. It forms the outline for the rectangle. The
fill is blue and appears inside the stroke.
As advertised, your rectangle is made up of two graphic elements, a stroke and a
fill. You could have just as easily made a rectangle that was only a stroke outline or
a solid fill. When you’re drawing a shape, you can eliminate the stroke or the fill by
choosing a “no color” option in the color picker. The no color option appears in the
upper-right corner of the color picker as a white box with a red diagonal line drawn
through it, as shown in Figure 2-6.
Flash gives you several tools to draw shapes. You’ll find them all in the Tools panel
(Figure 2-10). Just click the Rectangle tool and continue to hold the mouse button

54

Flash CS6: The Missing Manual

www.it-ebooks.info

down. A fly-out menu shows Rectangle tools, Oval tools, and the PolyStar tool. You’ll
learn all the ins and outs of these tools throughout this book, but if you want to
experiment, go right ahead. Just like the Rectangle tool, the other shape tools can
create both strokes and fills. Other drawing tools create either strokes or fills. For
example, the Line (L), Pencil (Y), and Pen (P) tools create strokes, while the Brush
(B) and the Deco (U) tools create fills.

Stroke color

Blue fill

Stroke height
Fill color

Black 3.9 pixel stroke

Choosing
a Drawing
Mode

Figure 2-7

Here’s how Flash depicts
a rectangle with a black
stroke and a blue fill.
You draw it with the
Rectangle tool (selected
in the Tools panel); the
rectangle’s properties
appear in the Properties
panel.

Rectangle tool
selected

Choosing a Drawing Mode
If you’re new to Flash, here’s a tip that will save you hours of frustration. Write these
words on a sticky note on your monitor: Flash has two drawing modes—merge
mode and object mode. When drawings don’t behave as expected, I’m suffering
from mode confusion.
Lines and shapes drawn in merge mode behave differently from those drawn in
object mode. This phenomenon becomes apparent when you try to move drawings
around the screen or arrange them in front of or behind other graphics. You use a
simple toggle button or shortcut key to change from one mode to the other. Keep in
mind that you can use both drawing modes in a single Flash document, and there’s
Chapter 2: Creating Simple Drawings

www.it-ebooks.info

55

Choosing
a Drawing
Mode

a good chance you’ll want to work that way. You can even have graphics drawn in
merge mode in the same layer and frame as graphics drawn in object mode. Both
types of graphics retain their native characteristics and eccentricities unless you
purposely convert them to the other format.
Note Want to check out the differences between the two modes? The Missing CD (www.missingmanuals.
com/cds/flashcs6mm) has two example files. 02-1_Merge_Drawing_Mode.fla shows an oval and a rectangle
drawn in merge drawing mode. 02-2_Object_Drawing_Mode.fla shows a similar oval and rectangle drawn in
object mode.

Merge Drawing Mode
Originally, Flash offered only merge mode. It’s unlike drawing tools you find in most
programs, but merge mode works great for web and smartphone animations because
it keeps file sizes small and animations fast. Flash assumes you want to use the merge
drawing mode unless you tell it otherwise. Graphics drawn in merge mode are called
shapes. In this mode, if one shape overlaps another shape, Flash erases the hidden
portion of the bottom shape underneath—a fact you discover when you move the
overlapping shape, as shown in Figure 2-8 (bottom). Many Flash veterans love merge
mode, because they can draw quickly, using overlapping shapes like cookie cutters.
Out of the box, Flash assumes you want to work in merge drawing mode, so you don’t
have to do anything special to activate it the first time you use Flash. But if you (or
someone you share your copy of Flash with) have activated object drawing mode,
then you need to toggle it back to merge mode. In the following steps, you’ll learn
how to make sure you’re in merge mode and discover some of its idiosyncrasies.
1. In the Tools panel, click the Rectangle tool (or press the R key).
When the Rectangle tool is selected, the Options section at the bottom of the
Tools panel displays the Object Drawing icon (Figure 2-9, left). If the icon (a
circle in a square) appears pressed down, then you’re in object drawing mode
and need to switch back to merge drawing mode.
2. If necessary, click the Object Drawing button (or press J) to deselect object
mode.
When the Object Drawing button is deselected, you’re in merge mode.
3. Draw a rectangle on the stage.
You can set the stroke and fill however you want before you draw the rectangle.
4. Select the Oval tool (O) and then change the fill and stroke color. Set the
stroke height to about 3 or 4 pixels.
If you need a refresher on setting the stroke and fill properties, see page 53.

56

Flash CS6: The Missing Manual

www.it-ebooks.info

5. Draw an oval that partially overlaps the rectangle, as shown at the top of
­Figure 2-8.

Choosing
a Drawing
Mode

The oval is drawn on top of the rectangle. In general, Flash places the most
recently drawn graphic on top of previous graphics; however, there are some
gotchas when you mix and match merge and object graphics.
6. With the Selection tool (V), click the middle of the oval.
The fill portion of the oval displays a dotted highlight. When you see a dotted
highlight like this, it’s a signal that the graphic was drawn in merge mode. And,
sure enough, the Properties panel identifies the selection as a Shape.

Figure 2-8

Top: Say you’re in merge mode and
you draw a rectangle and then an oval
that overlaps it. At first, it looks and
behaves like any old graphic element.
Bottom: That changes when you
select the shape and it sports a dotted
pattern, as shown on the oval. Drag the
selected oval away, and you’ll see that
Flash has erased the overlapped portion of the rectangle. Notice that Flash
repositioned the oval’s fill but left the
outline in place. That’s typical in merge
drawing mode, where Flash treats
shapes not as complete objects, but as
a collection of disparate elements.

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

57

Choosing
a Drawing
Mode

7. Drag the oval away from the rectangle.
As you drag, the fill moves away from the rectangle, leaving the empty stage
beneath. When shapes drawn in merge mode overlap, the bottom shape is
erased. Notice that the stroke portion of the oval remains behind. A single
click on the fill selects only the fill portion of the oval. If you want to select the
fill and the stroke, then double-click the fill. There are more tips on using the
Selection tool on page 61.
When to use merge drawing mode
As shown in Figure 2-8 (bottom), when you overlap objects in merge drawing mode,
Flash erases the hidden portions of the objects underneath. You’ll probably want to
use merge mode if you fall into one of the following three categories:

• You want to be able to select portions of objects or create a deliberate “cutout”
effect by overlapping objects and letting Flash do the cutting for you.
• You plan to create no more than one shape or object per timeline layer, so
overlapping isn’t an issue. For more details on layers, see page 135.
• You’re familiar (and comfortable) with an older (really older) version of Flash.
Merge was the only drawing mode before Flash 8.

Object Drawing Mode
The object drawing mode tells Flash to think of shapes the way most humans naturally think of them: as individual, coherent objects. Overlapping shapes in object
mode doesn’t erase anything, and when you select a shape, you select the entire
shape—not just the fill, or line, or portion of the shape you selected. If you’ve used
Adobe Illustrator or the drawing tools in Microsoft Office, this drawing mode will
seem familiar. To get a feeling for object mode characteristics, repeat the steps that
begin on page 56. In step 2, toggle object drawing mode on by making sure the
Object Drawing button is depressed, as shown at left in Figure 2-9. As you draw,
your shapes look similar to the ones drawn in merge mode. However, when you
select the oval in step 6, you won’t notice the dotted selection pattern. Instead, you
see a rectangular outline around the oval, as shown at bottom right in Figure 2-9.
That’s the object mode’s way to show that an object is selected. The words “Drawing object” at the top of the Properties panel are another clue that you selected an
object mode graphic.
Tip

The selection box for graphics drawn in object mode is rectangular. That makes it a little difficult to spot
when the selected object is a rectangle or a straight line. In those cases, if you need to double-check, look for the
words “Drawing object” in the Properties panel.
When to use object drawing mode
If you want to overlap objects and move them around with impunity—without putting
them on separate layers—simply activate object drawing mode. Bingo—Flash lets you
stack and overlap your objects on a single layer as easily as a deck of playing cards.
58

Flash CS6: The Missing Manual

www.it-ebooks.info

• Choose object mode if you want to work with entire objects (as opposed to
portions of them).

Choosing
a Drawing
Mode

• Choose object mode if you’re used to working in programs like Adobe Illustrator
and want a familiar graphics editing environment.

Figure 2-9

Left: To activate Flash’s object
drawing mode, first click the
Pencil, Pen, Line, Brush, or any
of the shape tools, and then
click the Object Drawing icon
that appears in the Options
section of the Tools panel.
Top right: After you’ve activated the object drawing mode,
you draw your lines, fills, and
shapes as normal—with one
difference. When you select (V)
an object, it’s all or nothing:
Flash highlights the entire
selection with a selection box
(like around the oval selected
here).
Bottom right: Unlike the shapes
you create using the merge
drawing mode, the shapes you
create in object mode retain
their integrity—even when you
overlap them and move them
around.

Object Drawing Mode

Merge drawing mode, is unlike most other programs’ drawing tools, while the object
drawing mode will seem familiar if you’re coming from other programs, like Adobe
Illustrator. Even if this is your first adventure with a computer-based drawing program, you may find the object drawing mode easier to learn and use. Each exercise
in this book will clearly explain which drawing mode is used.

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

59

Choosing
a Drawing
Mode

Tip

You can mix and match modes in a single document. For example, you can use object drawing mode for
some shapes and merge drawing mode for others. The drawing mode button on the Tools panel is a toggle, so
the mode you choose remains in effect until you change it. Flash even remembers the setting from one document
to another. So if you decide to use only object drawing mode, you can set it once and forget it.

Figure 2-10

Each tool in the Tools panel (except the PolyStar tool) has a
single-letter shortcut key. Just press the key to activate that
tool. Some tools, such as the Brush tool and the Spray Brush
tool, share the same shortcut key, so pressing the key toggles
between the two tools. Learning the shortcuts for the tools
you use most often lets you work much faster.

Select - V
Subselect - A

Lasso - L
Text - T
Line - N
Pencil - Y
Deco - U

Eyedropper - I
Eraser - E
Pan - H
Zoom - Space

Using Merge Mode and Object Mode Together
You can use merge mode shapes and object mode graphics together in the same
Flash document. Here are a few tips that will make life with mixed graphics a little
easier:
• Merge mode shapes always appear underneath object mode graphics if they’re
on the same timeline layer. To make merge mode shapes appear on top of object
graphics, place them on a separate timeline layer, as described on page 135.

60

Flash CS6: The Missing Manual

www.it-ebooks.info

• If you’ve already created a drawing object using the object mode, you can
convert it to a shape by selecting it and then choosing Modify→Break Apart.

Choosing
a Drawing
Mode

• If you’ve already created a shape in merge drawing mode and want to convert
it to a drawing object, select the shape and then choose Modify→Combine
Objects→Union. The entire selection becomes an object.

Selecting Objects on the Stage
Once you draw a line or a shape on your stage, you need to select it to do anything
else to it—for example, if you want to change its color, make it bigger, move it, or
delete it.
As you can see in Figure 2-11, the Tools panel has three tools that let you select an
object on the stage—Selection, Subselection, and Lasso. How these tools behave
depends on whether you’ve created your drawings in merge or object drawing mode
(see the previous section).

Figure 2-11

Selection
Sub-selection

Lasso

Selecting an object on the stage to work with should be
easy—and most of the time, it is; all you have to do is
click the Selection tool and then either click your object
or click near it and drag a selection box around it. But if
your stage is crowded and you’re trying to pick out just
one little tiny angle of a line or a portion of a drawing to
manipulate, you may need to use either the Subselection
tool or the Lasso tool.

Selection tool (shortcut key: V)
This tool lets you select entire shapes, strokes, and fills, as well as symbols and
bitmaps. (If you’ve created objects in merge mode, the Selection tool also lets you
select rectangular portions of those objects.) After you’ve made your selection, you
can then work with it—move the object around the stage by dragging, for example.

• Using the Selection tool in merge mode. To select a symbol, a bitmap, or one
element of a shape (just the fill portion of a rectangle, for example), simply click
the symbol, bitmap, or element. To show that an object is selected, Flash covers
the selected merge mode graphic with a dotted pattern. To select both the fill
and stroke of a merge mode graphic, double-click the fill. In merge mode, a

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

61

Choosing
a Drawing
Mode

single click on the stroke portion of a shape selects one line segment. Doubleclicking selects the entire stroke.
To select a rectangular portion of a shape you’ve drawn in merge mode, click
near (but not on) the shape and drag your cursor to create a selection box
around just the portion you want to select. To select an entire shape, create a
selection box around the whole shape, or double-click the shape.
• Using the Selection tool in object mode. To select an object created in object
mode, click it. A rectangular outline appears around the selected object.
Subselection tool (shortcut key: A)
The Subselection tool lets you reposition the individual points that define and control
your strokes and fills. These points are called anchor points, and the connecting
lines are called segments.

• Using the Subselection tool in merge mode. To select a stroke or a fill created
in merge mode, click the Subselection tool, and then click the stroke or edge
of the fill you want to move or change. Flash automatically redisplays that line
as a bunch of individual anchor points and segments. As you move your cursor
over the selection, the arrow cursor displays either a black or a white box. To
move the entire stroke or fill, click and drag when a black move box appears
on the cursor. To change the shape of an object, click and drag when a white
edit box appears on the cursor. (See page 164 for details on editing graphics
with anchor points.)
• Using the Subselection tool in object mode. The Subselection tool works in a
similar way on objects drawn in object mode. You can use it to move or change
the shape of an object. Move the cursor over the stroke or edge of an object,
and you see the black move box or the white edit box.
Tip You can’t select an object’s fill with the Subselection tool; however, you can “open up” an object graphic
and edit it as if it were a merge shape. Double-click the object with the Selection (V) tool. When you do, other
graphics on the stage fade, and the drawing object opens in edit mode. At this point, it behaves like a merge
shape. When you’re finished editing, close the graphic by clicking the left-pointing arrow in the upper-left corner
of the work window.

Lasso tool
The Lasso tool is the one to use when you want to select a weirdly shaped portion of
an object—say, you want to create a hand-shaped hotspot in the middle of a square
bitmap—or when you need to select a weirdly shaped object that’s super-close to
another object.

• Using the Lasso tool in merge mode. To select a nonrectangular portion of
an object drawn in merge mode, first click the Lasso tool; then click near (or
on) the object and drag your cursor (as if you were drawing with a pencil) to
create a nonrectangular shape.

62

Flash CS6: The Missing Manual

www.it-ebooks.info

• Using the Lasso tool in object mode. To select an entire object drawn in object
mode, select the Lasso tool, click near the object, and then drag your cursor
over the edge of the object. In object mode, dragging over a portion of the
object selects the whole object.

Choosing
a Drawing
Mode

Tip If you need to deselect an object after you’ve selected it (say, you changed your mind and don’t want
to change the object’s color after all), you have several choices. You can press Esc, you can press Ctrl+Shift+A
(Shift-⌘-A), you can click an empty spot on the stage, or you can select Edit→Deselect All.

Special note to Photoshop fans Ctrl+D (⌘-D on the Mac) works differently in Flash than it does in other Adobe
programs. In Photoshop or Photoshop Elements, Ctrl+D (⌘-D) is the keyboard shortcut that deselects an object.
In Flash, the same keystroke creates a duplicate of the selected object.

Essential Drawing Terms
In Flash, a cigar isn’t just a cigar. A circle isn’t even just a circle. As explained earlier,
every drawing you create using Flash’s drawing and painting tools is composed of
strokes and fills. As shown in Figure 2-12, you create strokes and fills with a variety
of drawing tools:

Line stroke

Pen stroke

Pencil stroke

Brush fill

Paint bucket

Figure 2-12

Here you see examples
of strokes and fills. The
strokes appear dark,
while the fills show
as light. Flash doesn’t
automatically create fills
when you create shapes
with the Line, Pencil, and
Brush tools, so as you see
in the triangle shapes, the
center remains the same
color as the stage. Later
you’ll see how to manually create a fill or change
a fill color with the Paint
Bucket tool (page 87).

Rectangle
shape

Oval
shape

Star
shape

Polygon Triangle
shape shapes

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

63

Choosing
a Drawing
Mode

• Strokes. A stroke in Flash looks just like the stroke you make when you write
your name on a piece of paper. It can either be a plain line or the outline of a
shape. Strokes can be dotted or dashed lines. You draw strokes in Flash using the
Pen, Pencil, and Line tools. When you use one of the shape tools (for example,
to create a square or polygon), Flash includes a stroke outline free of charge.
Tip You can quickly add a stroke to outline a shape that doesn’t have a stroke. Choose the Ink Bottle tool (S),
and then click the shape. If you don’t see the Ink Bottle on the Tools panel, click the Paint Bucket and continue
to hold down the mouse button. The Ink Bottle appears on a pop-out menu.

• Fills. Flash recognizes two kinds of fills: the marks you make with the Brush
tool, and the interior of a shape (in other words, everything inside the strokes
that form the outline of a shape).
In a lot of cases, your shapes comprise both strokes and fills. You can create filland stroke-containing shapes in one fell swoop using Flash’s shape tools—Oval,
Rectangle, and PolyStar. If you draw a shape by hand using the Pen, Pencil, or Line
tools, then you need to manually add a fill if you want one using the Paint Bucket
tool. That process is described on page 87.
Why the emphasis on the technical terms “stroke” and “fill” when all you want to
do is draw a smiley face? For one very important reason: Flash treats strokes and
fills differently. You use different tools to create them and different tools to modify
them. If you don’t know the difference between a stroke and a fill, you won’t be
able to do a whole lot with the drawing and painting tools described in this chapter.
Design Time

To Thine Own Self Be True
When asked about her artistic process, a celebrated 20th
century painter said that in order to create, she had to toss
aside everything she knew about matching colors, standard
techniques, and even the way she held her pencil and her
paintbrush. As a right-handed person with a strongly analytical mind, she discovered her ability to create only after
she started drawing with her left hand. She learned to ignore
what everyone else told her about how she should be working.

exclusively, that doesn’t mean you should do the same. Experiment and find what works best for you!
To help get your juices flowing, the stick figure you see in this
chapter shows several ways you can use Flash’s painting and
drawing tools. Each of these tools has its pros and cons, so try
them all out for yourself. After all, the Flash police aren’t going
to arrest you if you sketch a beard and moustache on your stick
figure using the Brush tool instead of the Pencil.

There’s a moral to this story: Just because one person finds the
Pencil or Brush the easiest tool to use and sticks to it almost

64

Flash CS6: The Missing Manual

www.it-ebooks.info

Creating Original Artwork

Creating
Original
Artwork

Before you can create an animation, you have to have something to animate. You
start with one drawing and then create a bunch more (often by altering the first
drawing slightly). For example, if you want to create an animation showing a raccoon
marching in place, you need to draw a picture of a raccoon standing still; another
picture of the same raccoon lifting its left foot; and still more pictures showing
the raccoon putting its left foot down, lifting its right foot, and so on. Put them all
together using Flash’s timeline (Chapter 3), and you’ve got yourself an animation.
Note You’re not limited to using your own drawings. Flash lets you import, or pull in, existing drawings
and photos—and even sound and video clips. Page 351 shows you how to import files.

This section shows you how to use basic Flash tools to create a simple stick person
drawing. You’ll see the Line, Pencil, Pen, Brush, and shape tools (Oval, Rectangle,
and PolyStar) in action and learn the differences among them (some are better for
creating certain effects than others). You’ll also find out how to add color to a Flash
drawing and how to erase your mistakes.

Drawing and Painting with Tools
One of the true beauties of creating digital artwork—besides not having to clean up
a mess of paint spatters and pencil shavings—is that you don’t have to track down
your art supplies—the one pen that feels good in your hand, the right kind of paper,
the sable brush that smells like paint thinner. Instead, all you need to do is display
Flash’s Tools panel.
In this section, you’ll see Flash’s drawing and painting tools in action: the Line, Pen,
Pencil, Brush, and shape tools. You’ll have a chance to use the Selection, Subselection,
and Lasso tools. And finally, you’ll get a quickie introduction to color—specifically,
how to change the colors of strokes and fills.
Line tool
You use the Line tool in Flash to draw nice, straight lines—perfect all by themselves
or for creating fancy shapes like exploding suns and spiky fur.

Make sure you’re in object drawing mode, and then follow these steps to start drawing your stick figure using the Line tool:
1. In the Tools panel, click the Line tool, as shown in Figure 2-13.
Flash highlights the Line tool in the Tools panel to let you know you’ve successfully selected it. When you move your cursor over the stage, you see it’s
turned into crosshairs.
2. Click anywhere on the stage and drag to create a short horizontal line. To
end your line, let go of the mouse.
Your line (technically called a stroke) appears on the stage.

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

65

Creating
Original
Artwork

3. Click above the horizontal line, and drag down to create a vertical line.
The result is a cross. Next, you’ll add legs by drawing diagonal lines.
4. Click the bottom of the vertical line and drag down and to the left; then
click the bottom of the vertical line again and drag down and to the right.
Figure 2-13 shows the result. It doesn’t look like much yet, but it’s actually the
basis for a stick figure you’ll create as you experiment with Flash’s drawing and
painting tools in the following sections.

Stroke Stroke
color
style

Stroke
height

Figure 2-13

The Line tool is the
easiest, quickest way
to create straight lines
in Flash (like the four
straight lines you see
here). If you’d like to
customize the way your
lines look, head to the
Properties panel. There
you find options that let
you make a line thicker,
change it to a different
color—even turn it into
a dashed or dotted line,
instead of a plain solid
line. (If you don’t see the
Properties panel, choose
Window→Properties to
display it.)

Pencil tool
The Pencil tool lets you draw free-form strokes on the stage, similar to the way you
draw using a regular pencil on a regular sheet of paper. Unlike the Line tool, the
Pencil tool doesn’t make you stick to the straight and narrow, so it lends itself to
curving lines and fine details, like hands and faces. Here’s how to use the Pencil tool:

1. In the Tools panel, click the Pencil tool.
Flash outlines the Pencil tool to let you know you’ve successfully selected it,
and Pencil-related options appear in the Options section at the bottom of the

66

Flash CS6: The Missing Manual

www.it-ebooks.info

Tools panel. When you move your cursor over the stage, you see it’s turned
into a miniature pencil.

Creating
Original
Artwork

2. In the Options section at the bottom of the Tools panel, click the Pencil
Mode button.
A fly-out menu appears.
3. In the fly-out menu, turn on the checkbox next to Smooth.
The Smooth option gently corrects any jiggles you make as you draw with the
pencil—essential when you’re trying to draw small lines, like this stick figure’s
face and hands.
4. Click the stage and drag to draw a little face, hands, and feet similar to the
ones in Figure 2-14.
While you’re on the Options section, there are other ways you can modify how
the Pencil tool works: The Straighten option emphasizes the corners you draw
with the Pencil (for example, turning squarish circles into squares or roundish
squares into circles—definitely not what you want when you’re trying to draw
the feet you see in Figure 2-14), and the Ink option leaves your Pencil strokes
just as they are, jiggles and all.
Up to Speed

Mouse vs. Graphics Tablet
If you expect to do a lot of Flash work, do yourself a favor: Ditch
your mouse and get yourself a graphics tablet (sometimes
referred to as a digitizing tablet, graphics pad, or drawing
tablet). A graphics tablet is basically an electronic sketch board
with a stylus that doubles as a pen, pencil, and brush. Today’s
graphics tablets connect through the Universal Serial Bus (USB)
port, typically located at the front or back of your computer,
so they’re a snap to connect and remove.
With a graphics tablet, drawing and painting feels a whole lot
more natural. Your results will look a lot better, too.

When you use a graphics tablet, Flash recognizes and records
subtle changes, like when you change the pressure or slant of
the stylus—something you don’t get with a plain old mouse. (In
fact, if you install your graphics tablet correctly, Flash displays
extra icons on the Tools panel that relate only to graphics
tablets. For example, you can adjust how the tablet behaves
when more or less pressure is applied.)
Expect to spend anywhere from $100 to $500 on a good
graphics tablet.

Here are some tips for drawing with the Pencil tool:
• If the object you’re drawing with the Pencil is small, press Ctrl+= (⌘-=) to get
a better view. You can use the Hand tool (H) to position the stage where you
want it. When you’re ready to zoom out, press Ctrl+hyphen (⌘-hyphen). For
more tips on changing the view, zoom over to page 38.
• Don’t do the same work twice. For example, in Figure 2-14, a hand and shoe
were drawn once, then duplicated (Ctrl+D or ⌘-D). While still selected, they
were flipped horizontally using Modify→Transform→Flip Horizontal.

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

67

Creating
Original
Artwork

• You can also straighten or smooth a line you’ve already drawn. To do so, select
the line you want to modify using any selection tool—the Lasso tool (page 62)
works great. When a line is selected, buttons for the Straighten and Smooth
commands also appear in the Options section of the Tools panel. You can click
multiple times to increase the effect.

Pencil tool

Figure 2-14

Don’t be surprised if
your results look a bit
shakier than you might
expect. If you’ve got
an extra hundred bucks
lying around, you can
buy a graphics tablet (see
the box on the previous
page) to make drawing
in Flash a bit easier,
but most people start
out using a computer
mouse to draw—and it’s
a lot harder than it looks.
Fortunately, Flash has
Pencil options you can
use to help you control
your drawing results.

Pencil mode

Pen tool
If you want to create a complex shape consisting of a lot of perfect arcs and a lot
of perfectly straight lines, then the Pen tool is your best choice.

To create straight lines with the Pen tool, click the stage to create anchor points,
which Flash automatically connects using perfectly straight segments. The more
times you click, the more segments Flash creates—and the more precisely you can

68

Flash CS6: The Missing Manual

www.it-ebooks.info

modify the shape you draw, since you can change each point and segment individually (see Chapter 5). When you want to stop creating anchor points, double-click
the mouse or press the Esc key.

Creating
Original
Artwork

If you drag the Pen tool (instead of just clicking), the Pen lets you create perfectly
curved arcs.
Note

Working with the Pen tool is a lot (a whole lot) less intuitive than working with the other Flash
drawing tools. Because you can easily whip out a triangle with the Line tool or a perfect circle with the Oval tool,
save the Pen tool for when you’re trying to draw a more complex shape—like a baby grand piano—and need
more control and precision than you can get freehanding it with the Pencil or Brush.

As you can see in the Tools panel in Figure 2-15, the Pen tool icon looks like the nib
of an old-fashioned fountain pen.

Figure 2-15

Pen tool
Anchor
point

After you select the Pen
tool, click the stage once,
move your mouse a couple
of inches, and then click
again. Each time you click,
Flash creates an anchor
point. As soon as you
have two or more anchor
points, Flash automatically connects them with
straight-line segments.

Segment

To draw a straight line with the Pen tool:
1. Select the Pen tool.
Your cursor changes into a miniature pen nib.
2. Click the stage, move your cursor an inch or so to the right, and then click
again.
Two anchor points appear, connected by a straight segment.

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

69

Creating
Original
Artwork

3. Move the cursor again, stopping where you want to anchor the line, and
then change direction again.
Figure 2-15 shows the results of several clicks. Flash keeps connecting each
anchor point every time you click the stage. To break a line and start a new
one, double-click where you want the first line to end.
To draw a curve with the Pen tool:
1. Select the Pen tool.
Your cursor changes into a miniature pen nib.
2. Click the stage once, and then move your cursor an inch or so to the right.
A single anchor point appears.
Note Flash lets you change the way it displays anchor points, as well as the way your cursor appears, when
you’re using the Pen tool. You can even tell Flash to preview line segments for you, much as it previews curves.
To change any of these preferences, select Edit→Preferences (Flash→Preferences for the Mac). Then, in the
Preferences window, select the Drawing category. The Pen tool preferences appear at the top of the Preferences
window.

3. Click again, but this time, without letting go of the mouse button, drag the
cursor around.
As you drag, the anchor point you create sprouts two control lines, and your
cursor turns into an arrow. As you can see in Figure 2-16, something different
is happening. Flash displays a preview curve and a control line that lets you
adjust the angle of the curve. Drag the end of the control line, and the shape
of the curve changes.
4. Release the mouse button.
When you let go of the mouse button, Flash draws the curve on the stage. The
control lines disappear when you choose another tool. Using the Pen tool, you
can create both straight lines and curves, as shown in Figure 2-17.
5. Continue drawing connected lines by clicking other points on the stage.
Click, move, and click to draw straight lines. Click, move, and drag to create
curves. Adjust the curves using the handles on the end of the curve control
lines. If you’ve never used tools like these before, don’t worry; you’ll get better
with a little practice.
6. Create a closed loop shape by clicking the first point you created in step 2.
When the cursor is over a point that closes the loop, you see a small circle to
the right of the Pen tool cursor.

70

Flash CS6: The Missing Manual

www.it-ebooks.info

Tip

If you want to adjust a curve after the fact, choose the Subselection tool and then click an anchor point
adjacent to the curve. The control lines appear, and you can change the shape of the curve by dragging the control
points.

Creating
Original
Artwork

Figure 2-16

Anchor point
Curve control handle
Curved line preview
Anchor point

To create a curve using the Pen, click
the stage to begin the curve. Then move
your cursor an inch or so, click again,
and then drag. While you’re dragging,
Flash displays a temporary line with two
small handles. These control lines don’t
show in your document; you use them
to shape your curve. Drag the handles
on the ends of the control lines. As
you adjust the control lines, the curve
changes shape.

Straight line

7. Once you feel comfortable drawing straight lines and curved lines, use
curves to create a cartoon head, similar to the one in Figure 2-17. Then use
straight lines to make a hat for your creation.
Drawing curves can be a bit tough until you get the hang of controlling the shape of
the curves as you draw. One of the great things about the Pen tool is that you can
make adjustments after the fact. Here are some tips for working with the Pen tool:
• You can change the path of a line or the shape of an object by moving anchor
points with the Subselection tool (A).
• To change the arc of a curve, click an adjacent anchor point with the Subselection tool. The anchor point sprouts control lines, and you can adjust the curve
by dragging the points on the end of the control lines.
• Use the Convert Anchor Point tool (C) to turn hard angles into curves and vice
versa.
• Use the Add Anchor Point tool (=) to—you guessed it—add anchor points to a
line segment. The Delete Anchor Point tool (-) removes anchor points but leaves
a line segment between the remaining anchor points.

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

71

Creating
Original
Artwork

Once you get used to the Pen tool’s drawing system, you’ll find that you can draw
very precise shapes. (Plus, all your practice with the Pen tool will pay off if you ever
use Adobe Illustrator or similar programs that use the same Bezier curves to draw
complex shapes.)

Figure 2-17

Straight lines from pen tool
Pen tool
No fill color

Here’s an example of two
finished shapes drawn
with the Pen tool. The
head shape is made from
curves that create a closed
loop. The fill color was created with the Paint Bucket
tool, as described on page
88. The hat is made of
connected straight lines
with the stroke thickness
set to 5 pixels.

Curved lines from pen tool
Fill color from paint bucket
Paint bucket

Brush tool
You use the Brush tool to create free-form drawings, much like the Pencil tool described on page 66. The differences between the two include the following:

• You can change the shape and size of the Brush tool. You can choose a brush
tip that’s fat, skinny, round, rectangular, or even slanted.
• The Brush tool creates fills, while the Pencil tool creates strokes. This distinction
becomes important when it comes time to change the color of your drawings
(see page 84).
Note

The Brush tool really shows its stuff when you use it with a graphics tablet, as described in the box
on page 67. That’s because the Brush tool makes great use of the tablet’s ability to sense pressure. Press hard
for thick, bold lines. Lessen the pressure for thin, delicate lines. With practice, you can create great calligraphic
effects.

72

Flash CS6: The Missing Manual

www.it-ebooks.info

To use the Brush tool:
1. On the Tools panel, click the Brush tool (the little paintbrush icon).

Creating
Original
Artwork

Flash displays your Brush options—including Brush Mode, Brush Size, and Brush
Shape—in the Options section of the Tools panel. If you have a graphics tablet,
you also see Brush Pressure and Use Tilt buttons.
2. From the Brush Size drop-down menu (Figure 2-18), select the third- or
fourth-smallest brush size.
The larger brushes let you paint great, sweeping strokes on the stage. But in
this example, you’ll be drawing hairs on your fellow’s head, so a modest brush
size is more appropriate. Your cursor changes to reflect your choice (you can
see this change if you mouse over the stage).

Figure 2-18

The options for controlling the brush size, shape, and mode appear at the bottom of
the Tools panel after you choose the Brush tool. To make a size adjustment, click the
Brush Size button and then select the size you want from the pop-up menu.
Brush Size menu

Brush Mode
Brush Size
Brush Shape

Tip Whenever you make a mistake, or simply want to wipe out the very last thing you did in Flash, Press
Ctrl+Z (⌘-Z) or select Edit→Undo.

3. From the Brush Shape drop-down menu, choose the round brush shape.
Each brush shape gives you a dramatically different look. To draw hair, as in
this example, you may choose round because it most closely approximates the
results you get with a real brush. Once again, your cursor changes to reflect
your choice.
4. Click the Brush Mode button and then, from the pop-up menu that appears,
choose Paint Normal.
Brush modes change the way the Brush tool paints over or under strokes and
fills already in your drawing. Figure 2-19 shows the different effects. Here you

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

73

Creating
Original
Artwork

choose Paint Normal to draw hair that shows over the head shape and the hat.
Later, you’ll see how to tuck that hair under the hat.

Brush tool

Figure 2-19

Here you get an idea of
how the different brush
modes work. The hair was
brushed into this picture
using the five different
brush modes.

Brush mode Brush
button
size

Brush
shape

Here’s a rundown of all the brush modes you can choose from:
• Paint Normal. Flash uses this mode unless you tell it otherwise. If you brush
over an existing object on the stage using Paint Normal, your brush stroke
appears on top of the shape.
• Paint Fill. When you brush over an existing object on the stage using Paint
Fill, your brush stroke appears on top of the fill portion of the object, behind
the stroke, and on the stage.
• Paint Behind. When you brush over an existing object on the stage using
Paint Behind, your brush stroke always appears behind the object.
• Paint Selection. When you brush over an existing object on the stage using
Paint Selection, your brush stroke appears only on the parts of the shape
that are both filled and that you’ve previously selected.
• Paint Inside. If you brush over an existing object on the stage using Paint
Inside and begin inside the stroke outline, your brush stroke appears only
inside the lines of an object (even if you color outside the lines). If you begin

74

Flash CS6: The Missing Manual

www.it-ebooks.info

outside the lines, then your brush stroke appears only outside (even if you
try to color inside them).

Creating
Original
Artwork

5. Click the stage just about where your stick person’s hair should be and drag
your mouse upward; release the mouse button when the hair is the length
you want it.
Your paintbrush stroke appears on the stage.
6. Repeat to create additional locks of hair.
You should see a result similar to the one shown in Figure 2-19.
Arranging drawn objects forward and backward
When you draw in object mode, each part of your drawing (the head, the hat, the
hair) is an object, and you can place it in front of or behind the other objects. Imagine that the head, hat, and hair are each cardboard cutouts that you’re placing on
your desktop. You set them down so that the head is at the bottom, the hair cutout
covers the top of the head, and the hat covers part of the hair. Perfect! Flash works
the same way. When you draw objects, Flash places each new object in front of the
last. But what if you don’t draw them in the proper order? Suppose, in the cartoon
face example, that you drew the hair on top of the hat? Flash can help. Follow these
steps to move the hat to the front.
Note If you don’t have a drawing handy for this exercise, you can download 02-3_Arrange_Objects.fla
from the Missing CD page at www.missingmanuals.com/cds/flashcs6mm.

1. With the Selection tool, click the hat’s outline.
Before you can rearrange the stacking order, you need to select an object to
move.
2. Go to Modify→Arrange→“Bring to Front” or press Shift+Ctrl+up arrow
(Windows) or Shift-Option-up arrow (Mac) to move the hat to the front.
The hat moves in front of both the head shape and the hair, as shown in
­Figure 2-20. You can still move the hat, hair, or head around the stage with the
Selection tool. They stay in the same stacking order (head on bottom, hair in
middle, hat on top) until you make another change using the Modify→Arrange
commands.
There are four commands that help you arrange the stacking order of the objects
you’ve drawn:
• Bring to Front. Moves the selected object to the very front of the stack.
• Bring Forward. Moves the selected object forward one level in the stack.
• Send to Back. Moves the selected object to the very back of the stack.
• Send Backward. Moves the selected object back one level in the stack.

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

75

Creating
Original
Artwork

As an alternative to using menu commands, you can select an object and then use
Ctrl+up arrow or Ctrl+down arrow (⌘-up arrow or ⌘-down arrow) to move the
selected object forward or backward. Add the Shift key (Shift+Ctrl+up arrow or
Shift+Ctrl+down arrow for PCs; Shift-⌘-up arrow or Shift-⌘-down arrow for Macs)
to move all the way to the front or all the way to the back.

Hat selected and brought to front

Figure 2-20

Use the Modify→Arrange
commands to position
parts of your drawing in
front of or behind other
objects. Here the hat is
brought to the front so
that it partially covers the
head and the hair. You
can find a copy of this
02-3_Arrange_Objects.
fla on the Missing CD page
(www.missingmanuals.
com/cds/flashcs6mm).

Tip Remember, shapes drawn in merge drawing mode always appear behind objects drawn in object drawing mode. If you want to rearrange mixed graphics, then you need to use the timeline layers, as explained in
Chapter 4.

Shape tools: Oval, Rectangle, and PolyStar
Flash gives you quick ways to create basic shapes: the Oval tool, which lets you
draw everything from a narrow cigar shape to a perfect circle; the Rectangle tool,
which lets you draw rectangles, from long and skinny to perfectly square; and the
PolyStar tool, which you can use to create multisided polygons (the standard fivesided polygon, angled correctly, creates a not-too-horrible side view of a house)
and star shapes.

You can see the Oval, Rectangle, and PolyStar tools in Figure 2-21; Figure 2-22 shows
you how to configure the PolyStar tool.

76

Flash CS6: The Missing Manual

www.it-ebooks.info

Tip

You can always create a circle, a square, or a star using one of the other drawing tools, like the Pencil
or the Line tool. But most people find the shape tools quicker and easier.

Creating
Original
Artwork

Figure 2-21

The Oval, Rectangle, and
PolyStar tools are all
tucked under the same
button on the Tools panel.
The icon and related
tooltip for the last-used
shape appear on the
button. The small triangle
in the lower-right corner
of the button is your
clue that there are more
options. To see the other
shape options, click and
hold down the button.
A small menu appears
showing all the options.

Figure 2-22

One of the shape tools is
called PolyStar because
it creates polygons and
stars. After choosing
PolyStar on the Tools
panel, click the Options
button in the Properties
panel. Then, in the Tool
Settings box, choose
either “polygon” or “star”
from the drop-down
menu.

Choose star
or polygon

Options button
opens tool Settings

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

77

Creating
Original
Artwork

To create a shape:
1. Click the shape tool you want (choose from Oval, Rectangle, or PolyStar,
as shown in Figure 2-21).
Your cursor changes into a cross.
2. Click the stage where you want to start your shape, and then drag your cursor to form the shape. When you’re satisfied with the way your shape looks,
release your mouse button.
Flash displays your shape on the stage.

Power Users’ Clinic

Rectangle and Oval Primitives
Flash has two special shapes: the rectangle and oval primitives.
What makes these guys so primitive, and where and how
should you use them? When you draw a rectangle or an oval
using the standard tools, Flash just considers them shapes. You
see one as having corners and the other curves, but to Flash
they’re pretty much the same. When you draw them in merge
mode, you can chop standard ovals and rectangles into little
irregularly shaped pieces.
Primitives behave like graphics drawn in object mode. And
as with the shapes drawn in object mode, you can adjust the
width and height of the objects by typing measurements in the
Properties panel. When they’re in the hands of an ActionScript
programmer, these primitives can really jump through hoops.

object-drawn nature, primitives have some special features
that you also find in merge-mode graphics. For example, using
the Properties panel, you can add rounded or beveled corners
to your rectangle primitives. With the Oval primitive, you can
create pie slices by defining the arc angles. You can perform
these feats with merge-mode shapes and primitives, but not
with object-mode shapes.
Draw a rectangle, and then select it. Look in the Properties
panel. If you drew it in object mode, then the Properties
panel lists it as a drawing object. Otherwise, it describes it
as a shape. Now draw a rectangle using the Rectangle Primitive tool. Sure enough, the Properties panel describes it as a
rectangle primitive.

Primitives are different in that you can’t erase part of a primitive or break it into parts. It’s all or nothing. In spite of their

Tip

To create a perfectly round circle or a perfectly square square, simply hold down the Shift key while you
drag to create your shape. If you want to create beveled or rounded corners, then before you release the mouse
button, press the up or down arrow keys.

Aligning Objects with the Align Tools
Sometimes dragging stuff around the stage and eyeballing the result works just
fine. Other times, you want to position your graphic elements with pinpoint precision. Using the Align panel, you can align graphic elements based on their edges
(top, bottom, right, left) or by their centers. And you can base this alignment on
the objects themselves (for example, you can line up the tops of all your objects)
or relative to the stage (useful if you want to position, say, several Freddy Flash

78

Flash CS6: The Missing Manual

www.it-ebooks.info

heads precisely at the bottom of the stage, as shown in Figure 2-23). You can even
distribute individual objects evenly with respect to one another.

Creating
Original
Artwork

To display the Align panel, select Window→Align or press Ctrl+K (Windows) or ­⌘-K
(Mac).

Figure 2-23

The Align panel gives
you the opportunity to
align a single object (or
whole groups of selected
objects) along the left
side, right side, top, or
bottom of the stage,
and more. First select
Modify→Align→To
Stage. Select the objects
you want to align, and
then click the alignment
icon from the Align panel.

Erasing Mistakes with the Eraser Tool
Only in the digital realm does an eraser work so effectively. Try erasing a goof on
paper or canvas, and you not only have shredded eraser everywhere, but you’re
also left with ghostly streaks of paint, lead, or charcoal.
Not so in Flash. Using the Eraser tool (Figure 2-24), you can effectively wipe anything
off the stage, from a little speck to your entire drawing.
Note Using the Eraser tool is similar to selecting Edit→Undo only in the sense that they both remove
objects from your drawing. The difference: Edit→Undo tells Flash to work sequentially backward to undo your
last actions or changes, the most recent one first. The Eraser tool, on the other hand, lets you wipe stuff off the
stage regardless of the order in which you added it.

To use the Eraser tool:
1. In the Tools section of the Tools panel, click the Eraser tool to select it.
Your cursor changes to the size and shape of eraser Flash assumes you want. To
make your eraser larger or smaller, head to the Options section at the bottom of

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

79

Creating
Original
Artwork

the Tools panel and, from the Eraser Shape pop-up menu (Figure 2-25), select
the eraser size and shape you want. (You want a nice fat eraser if you have a
lot to erase, or a skinny one if you’re just touching up the edges of a drawing.)

Figure 2-24

Here the Eraser tool is rubbing out the PolyStar
shape. Erasing in Flash isn’t useful just for fixing
mistakes; you can create cool effects (like patterns)
by erasing, too. If you happen to start erasing the
wrong thing, no problem; just press Ctrl+Z (⌘-Z).

Figure 2-25

How your Eraser works
depends on which Eraser
mode you’ve selected.
Here you see the effects
of each of the modes on
the fills and strokes of the
same shape.

Erase
Mode button

Erase
shape

Erase
Mode menu

2. On the stage, click where you want to begin erasing, and drag your cursor
back and forth.
Flash erases everything your cursor touches (or not, depending on the Eraser
mode you’ve chosen—see the following section for details).

80

Flash CS6: The Missing Manual

www.it-ebooks.info

Tip

To erase a line or a fill in one fell swoop, click the Faucet option, and then click the line or fill you want
to erase. To erase everything on the stage and the Pasteboard (the area surrounding the stage), double-click the
Eraser icon on the Tools panel.

Creating
Original
Artwork

Configuring the Eraser
Flash has a ton of Eraser modes you can use to control how the Eraser tool works
(and what it erases).
Note

The Eraser tool works only on editable objects. It doesn’t work on closed groups or symbols. To remove
grouped objects and symbols, click them with the Selection tool and then press Delete.

To see them, click the Erase Mode button in the Options area (Figure 2-25), and then,
from the fly-out menu that appears, select one of the following modes:
• Erase Normal. Flash uses this mode unless you tell it otherwise. When you
erase over an existing object on the stage using Erase Normal, Flash erases
everything, fill and stroke included.
• Erase Fill. When you erase over an existing object on the stage using Erase Fill,
only the fill portion of the object disappears.
• Erase Lines. When you erase over an existing object on the stage using Erase
Lines, only the stroke portion of the object disappears.
• Erase Selected Fills. When you erase over an existing object on the stage
using Erase Selected Fills, you erase only those parts of the object that are
both fills and that you’ve previously selected (using one of the selection tools
described on page 61).
Note

Oddly enough, if you configure your eraser to Erase Selected Fills and then rub your virtual eraser
over non-selected fills, Flash pretends to erase them—until you let up on your mouse, when they pop right back
onto the stage.

• Erase Inside. If you erase over an existing object on the stage using Erase Inside,
Flash erases the inside (fill) of the object as long as you begin erasing inside the
stroke outline; if you begin erasing outside the line, it erases only outside the line.
Cutting out an irregular shape from another object
You can cut an irregular shape out of the middle of an object using the Eraser tool.
If you’re going for precision, for example, then you can use an eraser with a small
head to outline the area you’re erasing and then use the Faucet tool to quickly erase
the rest. For example, say you want to draw a donut. Here’s how:

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

81

Copying
and Pasting
Drawn
Objects

1. Select the Oval tool on the Tools panel.
If you don’t see the Oval tool, it’s probably hiding under the Rectangle tool or
the PolyStar tool. Notice the little triangle that indicates that there are more
options on the menu? Make sure you choose the Oval tool and not the Oval
Primitive tool. The Oval Primitive tool has a dot in the center.
2. Drag out a decent-sized oval on the stage.
You’re drawing a donut, so there’s no need to make a perfect circle, but do make
it large enough so that you can cut out a donut hole.
3. On the Tools panel, click the Eraser tool.
When you move the cursor over the stage, you see that it’s changed to a black
dot. That’s the Eraser, and the dot cursor shows how big the eraser head is.
4. In the Options section at the bottom of the Tools panel, choose a small
eraser head.
At the bottom of the Tools panel is the drop-down menu that sets the size and
shape of the Eraser.
5. Using the Eraser, draw a circle within your oval to outline the donut hole.
As you drag, the fill color disappears, and you see the stage color beneath.
(Make sure you complete the circle, or the Faucet will erase the entire fill color
in your donut.)
6. On the Tools panel, click the Faucet, and then click the donut hole.
The rest of the donut hole disappears as the Faucet tool erases all the fill color
from inside the cutout.

Copying and Pasting Drawn Objects
Copying graphic elements and pasting them—into the same frame, into another
frame, or even into another document—is much faster than drawing new objects from
scratch. It’s also the most familiar. If you’ve ever copied text in a word processing
or spreadsheet document and pasted it somewhere else, then you know the drill.
A simple copy-and-paste is the best way to go when you’re experimenting—for
example, when you want to see whether the blue-eyed wallaby you drew for one
animation looks good in another. But if you’re trying to keep your animation’s finished file size as small as possible, or if you plan to include more than one copy of
that wallaby, copying and pasting isn’t the best way to go. Instead, you’ll want to
look into symbols (page 248).
To copy and paste an image:

82

Flash CS6: The Missing Manual

www.it-ebooks.info

1. On the stage, select the image you want to copy.
Page 61 gives you an overview of the selection tools. In Figure 2-26, Freddy
Flash is selected.

Copying
and Pasting
Drawn
Objects

2. Choose Edit→Copy (or press Ctrl+C in Windows, ⌘-C on the Mac). Then select
the keyframe into which you want to paste the image.
You can paste the image in the keyframe you’re in, or you can select another
one. Flash doesn’t restrict you to the document you currently have open; you
can open another document to paste the image into.

Figure 2-26

Copying and pasting is the easiest
way to try out a look. If you’re
copying a complex image, as shown
here, you may want to group the
selected image first by choosing
Modify→Group. (There’s much
more detail on grouping objects on
page 188.) For additional copies,
simply choose Edit→“Paste in Center”
or Edit→“Paste in Place” again.

3. Choose one of the Paste commands. Here are your options:
• Edit→Paste in Center. Tells Flash to paste the image in the center of the
viewing area.
• Edit→Paste in Place. Tells Flash to paste the image in the same spot it
was on the original stage. (If you choose this option to paste an image to
the same stage as the original, then you need to drag the pasted copy off
the original to see it.)
• Edit→Paste Special (Windows only). Displays a Paste Special dialog box
that lets you paste an image as a device-independent bitmap (an uneditable version of your image with a fixed background the size and shape of
the selection box).
Flash pastes your image based on your selection, leaving your original copy intact.

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

83

Adding Color

Note

If all you want to do is make a quick copy of an image on the same stage as the original, then Flash
gives you an easier way than copying and pasting. Select Edit→Duplicate (or press Ctrl+D in Windows, ⌘-D on
the Mac). When you do, Flash pastes a copy of the image just a little below and to the right of your original image,
ready for you to reposition as you see fit. For the fastest duplication method of all, with the Selection tool, just
Alt-drag (Option-drag) the item you want to copy. The original stays put, and you have a duplicate attached to
your cursor. You can then drag the duplicate wherever you want on the stage.

Adding Color
The Colors section of the Tools panel lets you choose the colors for your strokes and
fills. Before you click one of the drawing icons to begin drawing (or afterward, to
change existing colors), you can click either of the Stroke or Fill icons in the Colors
section to bring up a color palette, as shown in Figure 2-27. Choose a color from the
color palette, and Flash applies that color to the objects you draw.

Figure 2-27

Before you begin drawing with the Pen or Pencil tools (both of
which let you create strokes), you can choose the color of the Pen
or Pencil by clicking the Stroke Color icon and then selecting a
color from the palette that appears. If you want to change that
color when you use the Brush tool (which creates fills), then you
need to click the Fill Color icon (and select a color) before you click
the Brush tool and begin to draw.

Changing the Color of a Stroke (Line)
One of the best things about drawing in Flash is how easy it is to change things
around. If you draw a bright orange line using the Pencil tool, for example, you can
change that line an instant later to spruce, chartreuse, or puce (and then back to
orange again) with just a few simple mouse clicks.
Note

In Flash, all lines are made up of strokes. The Flash drawing tools that produce strokes include the
Pencil, the Pen, the Line, and the shape tools (Oval, Rectangle, and PolyStar).

Flash gives you two different ways to change the color of a stroke: the Properties
panel and the Ink Bottle tool.

84

Flash CS6: The Missing Manual

www.it-ebooks.info

Coloring strokes with the Properties panel
Changing the color of a stroke using the Properties panel is best for situations when
you want to change the color of a single stroke or when you want to change more
than just the color of a stroke (for example, you want to change the stroke thickness
or the color of the fill inside the stroke).

Adding Color

To change the color of a stroke using the Properties panel:
1. On the stage, select the stroke you want to change.
A highlight appears around or on the selected stroke.
2. If the Properties panel isn’t open, press Ctrl+F3 (⌘-F3).
The Properties panel shows settings related to the stroke, as shown in
­Figure 2-28.

Figure 2-28

Using the Properties
panel is a quick and easy
way to change the color
of a single stroke. First,
select the stroke you want
to recolor; then, in the
Properties panel, click
the Stroke Color icon.
When you do, the color
picker appears, complete
with any custom color
swatches you’ve added to
it (if any). The instant you
choose a color, the color
picker disappears and the
selected stroke changes
to the new color. Here the
Fill Color icon has a slash
through it, meaning that
no fill color is currently
selected.
Stroke selected

Stroke color picker

3. In the Properties panel, click the Stroke Color icon.
The color picker appears.
4. Click a new color for your selected stroke.
The color picker disappears, and Flash displays your stroke using the new color
you chose.

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

85

Adding Color

Coloring strokes with the Ink Bottle tool
The Ink Bottle tool is great for situations when you want to apply the same color to
a bunch of different strokes in one fell swoop.

To change the color of a stroke (or several strokes) using the Ink Bottle tool:
1. In the Tools panel, click the Ink Bottle or press S.
The Ink Bottle and the Paint Bucket share the same Tools panel button. If the
Ink Bottle isn’t showing, click and hold the Paint Bucket until you see the fly-out
menu, as shown in Figure 2-29, and then select the Ink Bottle tool. Now, as you
mouse over the stage, you notice that your cursor looks like a little ink bottle.

Figure 2-29

Use the Ink Bottle tool to
change the color strokes.
To change the color of
strokes one by one, you
don’t need to select them
first; simply click them
with the Ink Bottle tool.
If you want to change
several strokes at once,
preselect the bunch, and
then click on any one with
the Ink Bottle.

Ink Bottle
menu item

Paint Bucket
and Ink
Bottle tool

2. In the Properties panel, click the Stroke Color swatch (Figure 2-30).
The color picker appears, and as you mouse over the different colors, you notice
that your cursor looks like a tiny eyedropper.
3. Click a color to choose it.
The color picker disappears, and Flash changes the Stroke Color swatch to
match your selection.
4. Click the strokes you want to recolor.
Flash changes the color of the strokes to match the stroke color in the Properties panel.

86

Flash CS6: The Missing Manual

www.it-ebooks.info

Changing the Color of a Fill
If you change your mind about the color of any of the fills you add to the stage, no
problem. Flash gives you several ways to change the color of a fill, including the
Properties panel and the Paint Bucket tool.

Adding Color

Figure 2-30

Clicking the Stroke Color icon displays the color picker. All of Flash’s color pickers
work the same. Here you can change not just the hue, but also the transparency of the color. To do so, click the number in the Alpha box and type in a new
percentage or drag right or left to “scrub” in a new value. Numbers from 0%,
(completely transparent) to 100% (completely opaque) are valid.

Note

The Flash drawing tools that produce fills include the Brush tool and all the shape tools (Oval, Oval
Primitive, Rectangle, Rectangle Primitive, and PolyStar).
Coloring fills with the Properties panel
Using the Properties panel to change the color of a fill is great for situations when
you want to change more than just fill color—for example, you want to change both
the fill color and the color of the stroke outline surrounding the fill.

To change the color of a fill using the Properties panel:
1. On the stage, select the object you want to change.
The selected object is highlighted.
2. If the Properties panel isn’t open, go to Window→Properties to open it.
The Properties panel, similar to the one in Figure 2-31, appears.
3. In the Properties panel, click the Fill Color icon.
The color picker appears.
4. Click to choose a new color for your selected fill.
As soon as you let go of your mouse button, the color picker disappears, and
Flash displays your fill using the color you chose.

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

87

Adding Color

Note

To change the color of a bunch of fills quickly, select the fills you want to recolor, and then select
the Fill Color icon and choose a new color. When you do, Flash automatically displays all your selected fills using
your new color.
Coloring fills with the Paint Bucket tool
The Paint Bucket tool is great for situations when you want to apply the same color
to one or more fills on the stage, either one fill at a time or all at once.

Properties Panel

Custom color picker

Figure 2-31

Select a fill-containing
object (here, the inside of
an oval). In the Properties
panel, click the Fill Color
icon to display the color
picker, and then click
to choose a new color
for your fill. If you don’t
see the exact color you
want, then you can click
the Custom Color icon to
blend your own custom
shade. And while you’re
here in the Properties
panel, you can also
change the stroke outline
of the object, if you like.

To change the color of a fill using the Paint Bucket tool:
1. In the Tools panel, select the Fill Color icon (Figure 2-32).
The color picker appears, and as you mouse over the different colors, you notice
that your cursor looks like a tiny eyedropper.

88

Flash CS6: The Missing Manual

www.it-ebooks.info

2. Click a color to choose it.
The color picker disappears, and Flash redisplays the Fill Color icon using the
color you just selected.

Adding Color

3. On the stage, click the fill(s) you want to recolor.
Flash recolors each fill you click, as shown in Figure 2-32.

Figure 2-32

Click the Fill Color icon to
choose a new color for
your fills. As you move
your cursor around the
color picker, you notice
that the Preview window
displays the color your
cursor happens to be over
at any given time.

Selected
fill color

Hexadecimal
color number

Chapter 2: Creating Simple Drawings

www.it-ebooks.info

89

Adding Color

Note

If you don’t have a completely closed outline around your fill, Flash might not let you apply a fill
color. To tell Flash to ignore small gaps (or medium or even relatively large gaps) surrounding your fill, in the
Options section of the Tools panel (Figure 2-33), click Gap Size. Then, from the pop-up menu that appears, turn
on the checkbox next to Close Small Gaps, Close Medium Gaps, or Close Large Gaps. Then try to modify your fill
again. (You may also want to consider closing the gap yourself using one of Flash’s drawing tools.)

Gap, no fill

No gap

Fill color

Gap size
button

90

Flash CS6: The Missing Manual

www.it-ebooks.info

Figure 2-33

Gap size
menu

After you select a new fill
color, apply it to the fills
on the stage by clicking
the Paint Bucket and
clicking each fill. If you’re
adding a fill for the first
time and you find that
Flash doesn’t add your fill
color, make sure your fill
is perfectly enclosed. If it
isn’t—if there’s a gap in
the outline surrounding
it—Flash may not be
able to tell where your
fill stops and the stage
begins. Fortunately, you
can tell Flash to ignore
the gap and change your
fill color as best it can. To
do so, click the Gap Size
option. On the fly-out
menu that appears,
choose Close Small (or
Medium, or Large) Gaps.

chapter

Animate Your Art

3

I

n the olden days of animation, artists had to create a drawing for each frame of a
movie by hand. Sure, they had their shortcuts, but since most movie frames click
by at 24 frames per second, that’s a labor-intensive endeavor. To keep costs down,
animation production companies had their best, highest-paid artists draw the most
important images, where major changes took place, and then had lesser talents and
beginners draw the in-between images. Those most important images are known
as keyframes. The in-betweeners are called tweens.

This chapter is your introduction to keyframes and tweens from Flash’s point of
view. In this case, you’re the high-paid artist who gets to create the keyframes, while
your computer does the grunt work of drawing all the tweens. You’ll learn about
two types of tweens—the motion tween and the shape tween. But first, you need
to understand the various types of frames you see in Flash’s timeline.
Note

“Tween” is one of those words that makes you smile—it just sounds funny. It’s even funnier when
you realize that it’s used as both a noun and a verb. Not only can you create a tween, but you can also tween a
drawn object, such as a car: “I tweened the car to make it drive down the road.”

Frame-by-Frame Animation
An animation is nothing more than a series of framed images displayed one after
the other to create the illusion of motion. If you want to, you can use Flash to make
your animation the old-fashioned way, by drawing each frame individually. Whether
you animate frame by frame or use computer-generated tweens, you need to be

91

www.it-ebooks.info

Frameby-Frame
Animation

able to decode the timeline symbols to understand how your animation works.
Figure 3-1 shows some of the hieroglyphics you’ll find on the timeline. Here are
some more details:

Playhead
Empty keyframe Static Frames
Keyframe
Not in animation

Figure 3-1

From left to right on this little strip of timeline you see several
frames. Frame 1 is a keyframe with a solid circle. Frame 4 is an empty
keyframe, shown as a hollow circle. The playhead is positioned at
Frame 7, and the entire animation ends at Frame 10. The rectangles
from Frame 11 on are not part of this animation, even though they’re
visible in the timeline.

• Static frames represent a unit of time. If your animation runs at 24 frames per
second, then that unit is one twenty-fourth of a second. You control the timing
in your animation by adding or removing frames. For example, if you want an
image to remain on screen for a longer period of time, then you insert frames
into the timeline. Static frames appear to be empty in the timeline—that is, they
don’t display any special symbol, as keyframes do.
• Keyframes are the important frames—the frames you designate to hold distinct
images. Keyframes mark changes in your animation. For example, if you want to
add text to your animation at a certain point in time, you create a keyframe in
the timeline and then add the text to the stage at that point of the timeline. On
the timeline, keyframes are shown as a solid circle. If there’s no visible content
on the stage, then you see a blank keyframe, as explained next.
• Blank keyframes are keyframes with no visible graphics or text in the frame.
As soon as you add text or graphics to a blank keyframe, it becomes a plain
old keyframe. On the timeline, a blank keyframe is shown as a hollow circle.
• Property keyframes come into play when you create a motion tween, as described on page 103. Motion tweens change the appearance of a graphic or
movie clip symbol. Property keyframes are shaped like small diamonds, and they
mark a change to one of the symbol’s properties. On the timeline, the frames
devoted to a motion tween are tinted light blue.
• Frames not in animation. You can’t move the playhead beyond the last frame
in your animation. Beyond that point, you see rectangles that represent frames
not in your animation. If you want to make your animation run longer, you can
add or insert frames, as explained on page 101.
As you work with your animation, you use the playhead to manage time and build
your animation. Drag the playhead to Frame 15, and you see the contents of the
stage at that moment in time.

92

Flash CS6: The Missing Manual

www.it-ebooks.info

Creating a Frame-by-Frame Animation
Flash lets you animate virtually any visible object you place on the stage. You can
animate cartoon-style drawings, photos, videos, or even text.

Frameby-Frame
Animation

Follow these steps to see how frame-by-frame animation works:
1. Open a blank Flash document by choosing File→New and then selecting
­ActionScript 3.0 and pressing OK.
You have a spanking new Flash document. As the timeline in Figure 3-2 shows,
Flash starts you out in Layer 1, Frame 1, because initially, a Flash document has
only one frame, a keyframe at Layer 1, Frame 1.

Figure 3-2

Timeline tab

Playhead

Frame 1

When you create a new
Flash document, Flash automatically designates Frame
1 as a blank keyframe. You
can tell that Frame 1 contains a blank keyframe by
the hollow circle in Frame
1 and the fact that nothing
appears on the stage when
the playhead is at Frame 1.

Tip

If you don’t see the timeline, then select Window→Timeline or use the shortcut Ctrl+Alt+T
(Option-⌘-T).

The red rectangle over Frame 1 is the playhead. It marks the current frame—the
one displayed on the stage. When you begin a new document, you can’t move
the playhead until you add more frames, as described in step 3.
2. Using Flash’s painting and drawing tools, draw an image on the stage.
Figure 3-3 shows an example drawing of a frog with a tempting fly overhead,
but you can use any drawing or shape for this exercise. As soon as you add a
drawing or any visual content to a keyframe, the hollow circle fills in, becoming
a solid circle. The hollow circle marks an empty keyframe (no content). The
solid circle marks a keyframe with content—in other words, there are graphics
displayed on the stage.

Chapter 3: Animate Your Art

www.it-ebooks.info

93

Frameby-Frame
Animation

Note

If you have an existing image stored on your computer, you can bring it onto the stage. Select
File→Import→“Import to Stage,” and then, in the Import window that appears, type in (or browse to) the name
of the file you want to pull in. When you finish, click Open (Import on a Mac). (Chapter 10 covers importing files
in more detail.)

Drawings in keyframe

Figure 3-3

Flash associates the selected
keyframe with all the images you place on the stage—
whether you draw them
directly on the stage using the
drawing and painting tools,
drag them from the Library,
or import them from previously created files. Here Flash
associates the frog-and-fly
drawing with the keyframe in
Frame 1.

Keyframe with content

3. In the timeline, click the rectangle under the number 20.
Flash highlights the rectangle, as shown in Figure 3-4. Notice that the playhead
doesn’t move, because at this point your animation contains only one frame.
4. Turn the selected frame into a blank keyframe by pressing F7.
Flash moves the playhead to the selected frame (Frame 20 in Figure 3-4), inserts
a keyframe icon, and clears the stage.

94

Flash CS6: The Missing Manual

www.it-ebooks.info

Tip

In Flash, you often have several ways to do the same thing, and that’s true with inserting frames and
keyframes. You can use the menu: Select Insert→Timeline and then choose Frame, Keyframe, or Blank Keyframe.
Or you can right-click (Control-click) a frame in the timeline and choose one of the options from the pop-up menu.

Frameby-Frame
Animation

Up to Speed

To Tween or Not to Tween
The great thing about creating an animation frame by frame
is that it gives you the most control over the finished product.
If you’re looking for a super-realistic effect, for example, you
may not be satisfied with the frames Flash generates when you
tell it to tween (page 103). Instead, you may prefer to lovingly
handcraft every single frame, making slight adjustments to
lots of different objects as you go.
Say, for instance, you’re creating an animation showing an
outdoor barbecue. Over the course of your animation, the sun

will move across the sky, which is going to change the way
your characters’ shadows appear. Bugs are going to fly across
the scene. When one character opens his mouth to speak, the
other characters won’t remain static: Their hair might ripple in
the breeze, they’ll start conversations of their own, and they’ll
drop pieces of steak (which the host’s dog will streak over to
wolf down). You can’t leave realistic, director-level details like
this to Flash; you’ve got to create them yourself.

Figure 3-4

When you click a frame in the timeline, Flash highlights
it, as shown in Frame 20. At this point, the animation
consists of a single frame, and it’s not possible to move
the playhead beyond Frame 1.

Keyframe with content

Selected frame

5. Draw a second image on the stage.
The second keyframe in Figure 3-5 shows the frog drawn again, with a thought
balloon instead of a fly. But if your two images are fairly similar, then you can
avoid having to completely redraw the image for your second keyframe, as
you’ll see in the next step.

Chapter 3: Animate Your Art

www.it-ebooks.info

95

Frameby-Frame
Animation

6. Click further out in the timeline (Frame 40, say), and press F6.
Just as when you inserted the blank keyframe, Flash moves the playhead and
inserts a keyframe icon; but instead of clearing the stage, Flash carries over
the content from the previous keyframe, all ready for you to tweak and edit.
7. Repeat the previous step to create as many keyframes as you want.
To get the hang of frame-by-frame animation, adding two or three keyframes
is plenty. But when you’re building an actual animation, you’ll likely need to add
dozens or even hundreds of keyframes (or even more, depending on the length
and complexity you’re shooting for).

Figure 3-5

Here the playhead is over the second
keyframe, which tells Flash to place
the content on the stage in the second
keyframe (Frame 20). When it detects a
new keyframe, Flash displays only the
new contents, so Frames 2–19 carry forward the content from Frame 1 (the first
keyframe). You can verify this behavior
by dragging the playhead from Frame 20
back to Frame 1.

Adding frames, keyframes, and blank keyframes is a recurring activity as you work
in Flash. As explained in the tip on page 95, you can use menus to do the job, but
it’s faster and easier to remember the three function keys that do the job:
• F5: Insert a frame.
• F6: Insert a keyframe.
• F7: Insert a blank keyframe.

96

Flash CS6: The Missing Manual

www.it-ebooks.info

Note

You can review the sample frog-and-fly frame-by-frame animation. Simply download
03-1_­Frame-by-Frame.fla.

Frameby-Frame
Animation

Gem in the Rough

Make the Timeline Easier to Read
The timeline serves as a kind of indispensable thumbnail sketch
of your animation, showing you at a glance which frames
contain unique content (the keyframes) and which don’t (the
static frames), how many layers your animation contains
(page 135), which sections of your animation contain tweens
(page 103), and so on.
If you find it hard to read the timeline because everything’s
too small, or if you have trouble remembering what graphics are controlled by certain keyframes, there’s a solution.

In the timeline’s upper-right corner, click the Options menu
(Figure 3-6) and experiment with some of the different options. You can make the timeline’s frames larger or smaller, for
example. Using the Preview options, you can set keyframes to
display miniature images of the stage contents. The “Preview
in Context” option shows the entire frame, while the Preview
option zooms in on the visual content, sometimes making it
a little larger.

Figure 3-6

Click the Options menu
button to see the menu
shown here. Use the
Tiny through Large
­options to change the
timeline’s frame size.
Use the ­Preview options
to display thumbnail
images in the keyframes,
as shown here.

Preview in Timeline

Options menu button

Test Your Frame-by-Frame Animation
Sooner or later you’ll want to test your animation. Sometimes you’ll want to take a
quick peek at a few frames to see if the mechanics are in order. Other times you’ll
want to review the entire animation exactly the way your audience will see it. Flash
has options for both situations:
• Press Enter (Return on a Mac) for a quick view of your animation action. The
animation plays out on the same stage where you built it. The playback begins
at the playhead’s position, so you don’t have to watch the entire animation

Chapter 3: Animate Your Art

www.it-ebooks.info

97

Frameby-Frame
Animation

when you want to review only a few frames. If you prefer, you can use the menu
option Control→Play.
This view doesn’t always give you the same view your audience will see. For
example, selected objects still appear selected, ruler guides remain visible, and
objects on the backstage are still visible. If you want a more accurate view of
your finished animation, then use the next viewing option.
Tip

Flash CS6 adds another quick way to view your animation on the stage. Click the Play button below the
timeline to begin playing your animation starting from the playhead’s position. In addition to the other DVD-like
controls, you can use the Loop button to repeat a selected group of frames.

• Press Ctrl+Enter (⌘-Return) to view your animation from beginning to end
for the most accurate preview. Or you can use the menu option Control→Test
Movie→“in Flash Professional.” Your animation opens in a window that uses
Flash Player to display the images. This “display engine” is called a runtime,
and it’s similar to the engine that your audience’s computers use to show your
animation. Your animation starts playing at the first frame and plays all the way
through to the end. When it reaches the last frame, it starts over again. This is
called looping, and you can turn it off in the Flash Player window by choosing
Control→Loop (Figure 3-7) or right-clicking (Control-clicking) the animation.
This viewing method takes a little longer, but it’s the most accurate way to view
your animation. You’re actually seeing what your audience will eventually see,
from beginning to end.

Figure 3-7

The first time you run your animation
in Flash Player, Flash assumes that you
want to run it over and over (and over
and over). Fortunately, you can rid Flash
of this annoying assumption. Right-click
(Control-click) your animation, and then
click Loop to remove the checkmark.
Other useful options include stopping
your animation, rewinding it, and even
stepping through it frame by frame.
Chapter 19 covers animation testing in
depth.

98

Flash CS6: The Missing Manual

www.it-ebooks.info

Editing Your Frame-by-Frame Animation

Editing
Your Frameby-Frame
Animation

It’s rare that your first crack at any given animation will be your last. Typically, you’ll
start with a few keyframes, test the result, add a few frames, delete a few frames,
and so on until you get precisely the look you’re after.
This section shows you how to perform the basic frame-level edits you need to take
your animation from rough sketch to finished production: inserting, copying, pasting,
moving, and deleting frames.

Selecting Frames and Keyframes
Selecting a single frame or keyframe is as easy as zipping down to the timeline and
clicking the frame or keyframe you want to select.
But if you want to select multiple frames, Flash gives you four additional selection
alternatives:
• To select multiple contiguous frames. Drag your mouse over a group of frames
you want to select. The selected frames show a highlight, as shown in Figure 3-8.
Be careful though: If the first frame you click is already selected, you may move
that frame instead of selecting multiples. Alternatively, click the first frame you
want to select, and then Shift-click the last frame.

Selected
frames

Keyframe
with content

Keyframe with
no content

End frame

Figure 3-8

To select a single frame (including a
keyframe), simply click the frame. To select
multiple frames, drag or choose one of Flash’s
other two multiple-frame-selection options.
A frame span comprises a keyframe, an end
frame, and all the frames in between. If you’ve
added multiple layers to your animation, then
make sure you select frames from the correct
layer.

Frame span

Note

Sometimes dragging to select frames can be hazardous to your animation’s health. You can move
frames in the timeline by clicking and dragging. If you’re not careful, you may end up moving frames when you
simply meant to select them.

• To select multiple noncontiguous frames. Ctrl-click (⌘-click) each frame you
want to select.

Chapter 3: Animate Your Art

www.it-ebooks.info

99

Editing
Your Frameby-Frame
Animation

• To select an entire frame span. Double-click any frame in the frame span.
A frame span starts with a keyframe and ends with the end frame marker, as
shown in Figure 3-8.
• To select all the frames on a layer. Click the name of the layer. In the example
in Figure 3-8, clicking Fly automatically selects all the frames in the Fly layer.
No matter which method you use, Flash highlights the frames to let you know you’ve
successfully selected them.

Inserting and Deleting Keyframes and Frames
The smoothness of your finished animation depends on timing, and timing is controlled by the number of keyframes and regular frames you’ve included. This section
shows you how to add and delete both.
Inserting keyframes
Typically, you’ll start with a handful of keyframes and need to insert additional
keyframes to smooth out the animation and make it appear more realistic (less
herky-jerky).

For example, say you’re working on an animation showing a dog wagging its tail.
You’ve got a keyframe showing the tail to the left of the dog, one showing the tail
straight behind the dog, and a final keyframe showing the tail to the right of the
dog. You test the animation and it looks okay, but a little primitive.
Inserting additional keyframes showing the dog’s tail in additional positions (just
a bit to the left of the dog’s rump, a little bit further to the left, a little further, and
then all the way to the left) will make the finished sequence look much more detailed
and realistic.
Note

Technically speaking, you don’t actually insert a keyframe even though the Flash menus call it that.
In most cases, you turn a regular frame into a keyframe. If you actually inserted a new keyframe, you’d be making
your timeline longer and changing the timing of your animation.

To insert a keyframe into an existing animation:
1. In the timeline, select the regular frame you want to turn into a keyframe.
If you want to add a keyframe midway between Frame 1 and Frame 20 on Layer
1, for example, then click in Layer 1 to select Frame 10, as shown in Figure 3-9.
Flash moves the playhead to the frame you selected.
2. Press F6 (or choose Insert→Timeline→Keyframe) to tell Flash to carry over
the content from the previous keyframe so you can edit it. As an alternative, press F7 or (or choose Insert→Timeline→Blank Keyframe) to tell Flash to
clear the stage.
On the stage, Flash either displays the image associated with the previous
keyframe or, if you inserted a blank keyframe, displays nothing at all.
100

Flash CS6: The Missing Manual

www.it-ebooks.info

3. Using the drawing and painting tools, add content for your new keyframe
to the stage.

Editing
Your Frameby-Frame
Animation

If you’ve already created drawings in another program, you can import them,
as described on page 351.

Figure 3-9

Here Frame 10 was converted from a
static frame to a keyframe. The playhead was
moved to Frame 10, and then the F6 key was
pressed. When you convert a static frame to a
keyframe, it doesn’t affect the length of your
animation.

Inserting static frames
Regular frames in Flash act as placeholders; they mark time while the contents of
the previous keyframe are displayed. Without regular frames to stretch it out, your
audience would have only a twenty-fourth of a second to see the image! Insert
additional frames when you want to slow down the action a little. In fact, inserting
frames is sort of like having a director yell, “Hold camera!” with the contents of the
last keyframe remaining onscreen.

To insert a frame into an existing animation:
1. In the timeline, click to select the frame after which you want to add a frame.
Flash moves the playhead to the frame you selected. Make sure the stage shows
the graphics you want to hold onscreen.
2. Choose Insert→Timeline→Frame (or press F5).
Flash inserts a new frame after the frame you selected, bumping up the total
number of frames in your animation by one.

Chapter 3: Animate Your Art

www.it-ebooks.info

101

Editing
Your Frameby-Frame
Animation

If your animation runs at the standard 24 frames per second, then inserting a single
frame doesn’t change the timing all that much. Often you want to insert several
static frames. If you want to insert five static frames, select any five regular frames
and then press F5. (When you insert multiple frames, they’re always inserted at the
beginning point of your selection.)
Clearing a keyframe
As explained on page 93, keyframes mark the points in your animation where you’ve
added unique content to the stage. If you want to remove that unique content, you
clear the keyframe. Once cleared, the frame and the following frame span show the
content from the previous keyframe. Clearing a keyframe doesn’t change the length
of the animation—that is, you aren’t removing any frames.

To clear a keyframe and turn it back into a static frame:
1. Right-click (Control-click) the keyframe you want to clear.
The playhead moves to that keyframe, and the frame is highlighted. A pop-up
menu appears with several frame-related options.
2. Choose Clear Keyframe.
Flash demotes the frame from a keyframe to a plain old static frame. Any special
content the frame had is relegated to the bit bucket.
Tip

Clearing a keyframe means you lose anything you’ve drawn or imported to the stage for that keyframe.
If your immediate reaction after clearing a keyframe is “Oops!” then press Ctrl+Z (⌘-Z) to undo the action. Then
you can save that worthy drawing or graphic to a symbol (page 248) or a separate file (page 699).
Deleting frames
Deleting frames—like inserting them—lets you control the pace of your animation.
But instead of making your animation run longer, the way inserting frames does,
deleting frames shrinks the timeline and makes your animation run shorter.

For example, say you’re working on the animation showing a frog catching a fly.
You’ve created three keyframes: one showing the frog noticing the fly, one showing
the frog actually catching the fly, and one showing the frog enjoying the fly. If you
space out these three keyframes evenly (say, at Frame 1, Frame 15, and Frame 30),
then all three images spend the same amount of time onscreen. That’s perfectly
serviceable—but you can create a much more realistic effect by shortening the number of frames between the second and third keyframes (in other words, by deleting
a bunch of frames between Frame 15 and Frame 30 to speed up the portion of the
animation where the frog’s tongue snags the fly).
To delete frames:
1. In the timeline, select the frame (or frames) you want to delete.
Flash highlights the selected frame(s) and moves the playhead to the last
selected frame.
102

Flash CS6: The Missing Manual

www.it-ebooks.info

2. Right-click (Control-click) the selection, and choose Remove Frames from
the pop-up menu.

Making It
Move with
Motion
Tweens

Flash deletes the selected frames and shortens the timeline by the number of
deleted frames.

Making It Move with Motion Tweens
There are a lot of fun things you can do in Flash, but one that’s sure to put a smile
on your face is the motion tween. Using the motion tween, it’s surprisingly easy to
make the objects in your animation move, change shape, change color, or fade to
nothingness. The first step is to convert the graphics you want to tween to Flash
symbols; then you can change the properties of the symbols at any given point in
time—or more specifically, at any point along the timeline. For example, if you have
a redwood tree and you want to make it grow, you’d change the height (H) property.
Next, in Frame 12 you might set the H property to, say, 100 (pixels), and then set it
to 150 in Frame 24, 200 in Frame 36, and so on. The tree appears to grow before
your audience’s eyes. Want to move a car across the stage? Just change the X and
Y properties, which set the position on the stage, to create the illusion of movement.
(For a rundown on the X/Y coordinate system, see the box below.)
Chapter 1 showed you how to apply the bounce-smoosh motion preset to a wheel
symbol. Motion presets are motion tweens that are predesigned to create certain
effects. In the case of bounce-smoosh, it made the wheel drop from the top of the
stage to the bottom. When it hit ground, it squashed like a cartoon character and
then bounced a couple of times until it came to rest. In the next few exercises, you
will create your own version of the bounce-smoosh tween.
Up to Speed

Use X/Y Coordinates to Set Stage Position
In the computer world, it’s a common practice to use the letters
X and Y to locate a point in two-dimensional space. X marks
the horizontal position, while Y marks the vertical position.
It’s exactly like the graphs you learned about in algebra class.
Every point on the Flash stage has a specific X/Y coordinate, as
shown in Figure 3-10, and the unit of measurement is pixels.
The numbering starts in the upper-left corner, where X = 0
and Y = 0. That’s usually expressed as 0,0 with the X coor-

dinate coming first. So, if your stage is 550 x 400 pixels, the
upper-right corner is 550,0. Dead center is 275,200. Anything
displayed on the stage, whether it’s an image, symbol, or text
block, has a registration point , which looks like a tiny cross (+)
and positions the object on the stage. When you set the X and
Y properties for a line, shape, symbol, or text block, you’re
positioning that registration point. Page 253 has more details
on registration points.

1. Open 03-2_Motion_Tween.fla .
The new document opens, and you see an empty stage.

Chapter 3: Animate Your Art

www.it-ebooks.info

103

Making It
Move with
Motion
Tweens

Note

As always, you can find the sample file on the Missing CD page: www.missingmanuals.com/cds/
flashcs6mm.

Figure 3-10

Choose View→Rulers to
display the handy horizontal and vertical rulers
shown here. The rulers
mark off the X/Y coordinates of the Flash stage.
Want to see the X/Y coordinates for your cursor?
Go to Window→Info. The
cursor position (circled)
shows in the lower-right
corner of the Info panel.

2. In the Panels dock, click the Library tab.
As shown in Figure 3-11, the Library is your warehouse for graphics you want
to reuse. There are three items in this Library. For now, focus your attention on
the Wheel symbol.
3. In the Library, click the word “Wheel.”
The wheel appears in the Library’s preview window. Notice that images in the
Library have different icons next to their names. The gear icon indicates that
the wheel is a movie clip symbol. The icon for StairStep shows three different
shapes, indicating that it’s a graphic icon. You’ll learn about the subtle differences between symbols on page 248.
4. Drag the wheel to the top of the stage.
When you drag a symbol from the Library to the stage, you’re creating an
­instance of the symbol. The original remains safe in the Library, where it can be

104

Flash CS6: The Missing Manual

www.it-ebooks.info

used again. You can change the size, color, and other properties of your wheel
instance without affecting the original.

Library
tab

Preview

Making It
Move with
Motion
Tweens

Figure 3-11

Click the Library tab to see the symbols stored
in your Flash document. Click a symbol’s name
to see it previewed at the top of the panel. In
Flash, symbols can be movie clips, graphics, or
buttons. They have a number of special abilities,
one of which is the ability to work with the
motion tween.

Wheel Movie Clip symbol

5. With the wheel on the stage selected, choose Insert→Motion Tween.
In the timeline, several frames are added to Layer 1, and the background color
for the span changes to blue, the color for a motion tween. The playhead automatically moves to the last frame in the tween.
Note Flash can’t tween an image unless it’s a symbol (page 248). If you try to apply a tween to an object
that’s not a symbol, Flash asks if you want it converted to a symbol.

6. Drag the wheel to the bottom of the stage.
After you drag the wheel to a new position, a dotted line marks the path from
the first position to the last (Figure 3-12). This is the motion path, and each dot
represents a frame in the animation. A small diamond appears in the last frame
of the timeline. The diamond marks the point for a property keyframe, indicating
that one of the wheel’s properties changed.

Chapter 3: Animate Your Art

www.it-ebooks.info

105

Making It
Move with
Motion
Tweens

7. Press Enter (Return).
You see the result of your first motion tween as the wheel moves along the
motion path. You can drag the playhead along the timeline to see the position
of the wheel at any frame—or in other words, at any point in time. Animators
and filmmakers call dragging the playhead manually scrubbing.

Figure 3-12

After you choose Insert→Motion
Tween, Flash adds a blue highlight to
the timeline that denotes a motion
tween. When you move the wheel, a
new property keyframe is created at
the playhead, and a motion path is
displayed to show the wheel’s position
at various points in time.

Motion path

Motion Tween

Property Keyframe

For another way to grasp how the motion tween works, examine your symbol’s properties. Click the Properties tab and then click the wheel on the stage. In the Properties
panel, the Y property (under Position and Size) marks the vertical position of the
wheel on the stage. Drag the playhead to a new position, and then select the wheel
again. The value of the Y property changes to show the wheel’s current position.
The motion tween uses property keyframes, which are similar to standard keyframes
except that they track all the individual properties of an object during a tween. For
example, property keyframes keep track of the wheel symbol’s X and Y coordinates.
You animate the symbol by making adjustments to these properties in different
106

Flash CS6: The Missing Manual

www.it-ebooks.info

frames. It’s a two-step process: Move the playhead to mark the point in time, and then
change the property. When you change the property, Flash automatically creates
a property keyframe in the timeline. In the previous example, Flash automatically
moved the playhead when you created the motion tween. You manually changed
the Y (position) property when you moved the wheel. In the next example, you’ll
change the shape of the wheel by adjusting the W (width) and H (height) properties
in the Properties panel.

Making It
Move with
Motion
Tweens

Tweening a Symbol’s Dimension Properties
The steps on page 103 showed how to animate the beginning of the bounce-smoosh—
the drop. The next step is to add some smoosh. To do so, you need to make the
wheel wider and shorter at the moment of impact. To begin, you want to extend the
tween and the timeline beyond the bottommost point of the bounce.
Note

This exercise continues the exercise begun on page 103.

1. Click the frame that’s four frames beyond the end frame of the tween.
The tween ends where the blue highlight ends.
2. Choose Insert→Timeline→Frame or press F5.
Frames are added to the end of the animation, and the blue highlight of a motion tween extends to the new end point.
3. Drag the playhead to the last frame in the tween.
On the stage, the wheel looks like it did in the previous frame. That won’t last
long as you begin to fiddle with the properties in the next step.
4. Click the Properties tab, and then click the wheel on the stage.
The Properties panel displays the wheel’s properties, as shown in Figure 3-13.
Note that the H and W properties for the perfectly round wheel are 85 pixels—
you’ll use this number later.
Tip

Don’t forget to click the wheel if you want to examine the wheel properties. Otherwise, you may be
looking at the properties for the document, the frame, or even the tween itself.

5. In the Properties panel, under Position and Size, change the W property to
150. Then change the H property to 60.
You can change properties by clicking and typing in a new number, or you can
click and drag to scrub in a new value.
6. Press Enter (Return) to test the animation.
The wheel gradually changes shape from a perfect circle to an oval (Figure 3-14);
however, it begins changing shape at the very beginning of the animation. For

Chapter 3: Animate Your Art

www.it-ebooks.info

107

Making It
Move with
Motion
Tweens

a proper smoosh, it should change shape on impact with the ground. You can
accomplish that with a couple of property tweaks.
7. Drag the playhead back to the first diamond-shaped property keyframe.
Select the wheel and change the W and H properties to 85 by 85 pixels.
The wheel returns to its pristine, perfectly round shape.

Figure 3-13

Select an object on the stage, and you see the W
(width) and H (height) properties in the Properties
panel. Here the wheel X and Y properties (circled) are
set to 85 pixels. When the chain link icon to the left
is broken, you can change the W and H properties
independently; otherwise, changing one dimension
automatically changes the other, keeping an object’s
proportions. Click the chain link to toggle it on or off.

Figure 3-14

Second property keyframe

Keyframe

108

First property keyframe

Flash CS6: The Missing Manual

www.it-ebooks.info

Every animation begins with a
keyframe (round icon). This motion tween also has two property
keyframes (diamond icon) that
hold values for the position
and shape of the wheel. With
the playhead positioned at the
second property keyframe, you
see the wheel smooshed because
the W (width) property is set to
150 and the H (height) property
is set to 60.

8. Press Enter (Return) to test the animation.
Now, when the animation plays, the wheel retains its roundness until it reaches
the bottom of the motion. Then it appears to flatten as it hits the ground.

Making It
Move with
Motion
Tweens

Flash automatically makes the height and width changes occur smoothly and evenly.
Originally, that transition started in Frame 1 and continued through the final frame
of the tween. By making the H and W properties identical in Frame 1 and the first
property keyframe, the height and width remain the same at the beginning, and the
shape change at the end of the animation is faster and more dramatic.
Changing dimensions with the Transform tool
The steps on page 107 show how to change an object’s dimensions using the H and
W properties, which are accurate down to the pixel. But what if you prefer to eyeball
it? In that case, you can change a symbol’s dimensions using the Transform tool.
Just make sure the playhead is at the right frame, and then press Q to choose the
Transform tool. Click the symbol you want to reshape, and it sprouts handles like
the ones shown in Figure 3-15. Drag the handles to modify your symbol, and Flash
stores the dimensions with the property keyframe.

Figure 3-15

Flash doesn’t care if you make dimension changes using the Properties
panel or the Transform tool. Either way, it remembers the H and W values
in a property keyframe.

Not only can you work faster and get the benefit of visual feedback with Transform,
but it’s also the Swiss Army knife of Flash tools. It does a lot more than just change
dimensions. You can use it to skew and rotate an object, too. Go ahead and make
those changes in your motion tween, and the changes are stored in the property
keyframe.

Copying and Pasting Frames
As any school kid can tell you, for every action there’s a reaction. Your wheel needs
to bounce back from its precarious state. In a word, it needs to de-smoosh. Ideally,

Chapter 3: Animate Your Art

www.it-ebooks.info

109

Editing the
Motion Path

you want the next five frames in the animation to be the reverse actions of the last
five frames of the tween. You could do that manually, but why reinvent the wheel?
(Sorry about the pun.) Instead, you can copy the last five frames, paste them back
in at the end of the tween, and then reverse their order. This may sound more complicated than it really is.
Note The next exercise follows from the steps begun on page 103. You can use the same Flash document,
or download 03-3_Copy_Frames.fla from www.missingmanuals.com/cds/flashcs6mm.

Here’s how to copy and paste frames:
1. Ctrl-click (⌘-click) the first property keyframe, and then drag to the last
frame in the timeline.
The selected frames at the end of the tween show a dark blue highlight.
2. Right-click (Control-click) the selected frames, and then choose Copy
Frames from the shortcut menu.
There’s no visual response when you copy frames in the timeline, but rest assured that the selected frames are copied and stored so you can paste them
somewhere else on the timeline.
3. Right-click (Control-click) the first frame after the tween, and then choose
Paste Frames from the shortcut menu (Figure 3-16).
The copied frames are pasted on the end of the timeline. If you press Enter
(Return) to preview your animation now, you see that the squashing frames
are repeated at the end of the animation.
When you paste the frames on the end of the timeline, Flash creates a second motion
tween in Layer 1. You can tell by the solid vertical line followed by a circle keyframe
symbol. If you click any frames in either motion tween, you can see the dark blue
highlight. The unselected tween has a light blue highlight.

Reversing Frames in a Frame Span
Swapping the order of keyframes in a motion tween lets you do cool things like make
a smooshed wheel round again. Simply right-click (Control-click) any frame in the
tween and then choose Reverse Keyframes, as shown in Figure 3-17. In the case of
your bouncing wheel, the keyframes at the beginning and end of the tween trade
places. Preview your animation, and it looks pretty good: The wheel drops down,
smooshes, and then recovers its round shape.

Editing the Motion Path
When it comes to moving objects around the stage, the motion path rules. That
means you need to know how to change the path. As explained back on page 103,

110

Flash CS6: The Missing Manual

www.it-ebooks.info

you make symbols move on the stage using the X and Y position properties. If the
values change from one property keyframe to the next, then the symbol moves.
You set the X and Y properties by moving the playhead to a frame and then moving
the object or changing the X and Y properties in the Properties panel. Either way,
your symbol moves, and it sprouts a motion path, like the one shown in Figure 3-18.

Editing the
Motion Path

Figure 3-16

After you’ve copied
frames from the timeline,
you can right-click any
frame in the timeline
to paste those frames
to a new location. Here
the first frame after
the motion tween was
right-clicked. The Paste
Frames command is near
the center of a lengthy
shortcut menu.

Moving the Motion Path
Suppose you’ve got the perfect motion, and everything’s working just the way you
want. The only problem is that it’s on the wrong place on the stage. You can move
the entire motion path and the symbol that’s being animated in one fell swoop.
Here are the steps:
1. With the Selection tool (solid arrow), click anywhere on the motion path.
The path becomes slightly thicker—that’s its version of a selection highlight.

Chapter 3: Animate Your Art

www.it-ebooks.info

111

Editing the
Motion Path

2. Move the cursor over any point on the path.
The cursor shows the move icon—a cross with four arrows.

Figure 3-17

When you right-click
(­Control-click) a motion
tween, you see a lengthy
shortcut menu. The Reverse
Keyframes command is
near the bottom. Reverse
­Keyframes is a handy
command when you’re
developing repetitive,
pendulum-like motions. Here
reversing the pasted frames
at the end of the animation
makes the smooshed wheel
round again.

3. Click, drag, and then release the mouse button.
The motion path and the symbol move as a single unit. Once you release the
mouse button, the path is in a new location, but everything else about the tween
(the timing and the property changes) is the same.
Moving an entire motion path is easy for you, but Flash is working hard behind the
scenes. It’s changing all the X and Y properties for every property keyframe and
calculating the new values for the tween.

Figure 3-18

Use the Selection tool to select a motion path before you move it to a new location. The cross with four arrows is
Flash’s Move icon.

112

Flash CS6: The Missing Manual

www.it-ebooks.info

Adding Curves to the Motion Path
The shortest distance between two points is a straight line, and that’s exactly what
Flash uses when you first make a symbol move. You’re not stuck with that choice,
though—it’s easy to make the line curve.

Editing the
Motion Path

1. With the Selection tool, move the cursor to an unselected motion path.
If the path is unselected, you see the curve cursor shown in Figure 3-19. The
key here is that the path must not be selected. If it’s selected, Flash shows the
move cursor (the cross with four arrows).

Figure 3-19

Left: Move the Selection cursor near a motion path,
and you see the curve icon appear.
Right: Click and drag to create a curved path.

2. Click, drag, and then release the mouse button.
As you drag, you see a preview of the new curved motion path. When you
release the mouse button, the path is set.
This method for creating curves works well, but it takes some practice to create just
the path you want. You can also combine the curve technique with fixed property
keyframes along the motion path. For example, to create a double curve, start with
a straight path and pull it into a curve, as shown at right in Figure 3-19. Move the
playhead to a frame so that the wheel is centered on the path. Then, drag the wheel
in the opposite direction of the curve. Moving the wheel creates a new property
keyframe on the path and creates a motion path similar to the one in Figure 3-20.

Moving End Points on the Motion Path
If you want to reposition one of the end points without moving the rest of the motion
path, use the Subselection tool (A), which looks like a hollow arrow. Click the motion

Chapter 3: Animate Your Art

www.it-ebooks.info

113

Editing the
Motion Path

path with the Subselection tool, and the path end points appear as hollow squares.
With the Subselection tool, you can click and drag these points to a new location.

Figure 3-20

Moving the tweened symbol (in this case, the wheel) at any point along the motion
path creates a new property keyframe that stores the X and Y position values. This
double curve is formed by three property keyframes—one at each end of the path
and one in the middle.

Copying and Pasting a Motion Path
Here’s one last motion path trick to learn. Suppose you want to create a complex
motion path with lots of curves or lots of sharp angles. You can do that manually,
using the techniques already described in this chapter, but there’s a faster method.
You can draw a line and then paste it into your tween. You can’t draw directly in
the tween, so you need to draw the path in a separate layer or even in a separate
Flash document.
1. Draw a line using either the Pencil, Pen, or Line tool.
The Pencil is best for freehand paths. The Pen works best for paths where you
need precise control. The line must be simple, with a clear starting and ending
point. For example, an X will not work as a motion path, and a line that crosses
over itself may not work as expected.
2. Select the entire path, and then press Ctrl+C (⌘-C).
Flash copies the line to the Clipboard. If you’ve got a long, twisty, curvy line,
then you may have to double-click to select the entire line.
3. Select the path in your tween, and press Ctrl+V (⌘-V).
The new path replaces the old path. It uses the same starting point as the
original, so you may need to move the entire path (as described on page 110)
to position it properly on the stage.

114

Flash CS6: The Missing Manual

www.it-ebooks.info

You can also paste a hand-drawn path into a motion tween that doesn’t yet have a
path. Just select the symbol you want to move, and then press Ctrl+V (⌘-V). There’s
an extra benefit to drawing a path with the Pencil or Pen tool. As shown in Figure
3-21, drawn paths have anchor points within the line. You can use these points to
accurately reshape the line.

Copying
and Pasting
Properties

Figure 3-21

One advantage of drawn lines for motion paths is that they
have anchor points you can use to fine-tune the path. Click the
path with the Subselection tool, and you can reshape the line as
you would any other line drawn with the Pen.

Copying and Pasting Properties
Sometimes you want to copy the properties from one property keyframe to another.
For example, in the exercise on page 107, you used identical W and H properties to
keep the wheel the same size and shape. The first keyframe and the first property
keyframe had the same values. Anytime you want different keyframes to have the
same properties, you can copy and paste property settings, just as you copy and
paste words in a word processor. Follow these steps:
1. Ctrl-click (⌘-click) the property keyframe with the properties you want
to copy.
The selected cell shows a dark blue highlight.
2. Right-click (Control-click) the selected frame.
A shortcut menu appears—the copy and paste properties commands are near
the bottom.
3. Choose Copy Properties from the shortcut menu.
All the properties related to the property keyframe are stored, so you can paste
them into another frame.
4. Ctrl-click (⌘-click) the frame where you want to paste the properties.
A shortcut menu appears (Figure 3-22). You can paste the properties to any
frame; it doesn’t have to be a property keyframe.

Chapter 3: Animate Your Art

www.it-ebooks.info

115

Copying
and Pasting
Properties

5. Choose Paste Properties to paste all the properties to the new property
­keyframe.
If necessary, a new keyframe is created, and all the properties are transferred
to the new keyframe. Your work is done. If you want to paste only some of the
properties, then see the next steps.

Figure 3-22

The quickest way to copy and paste properties is through the use of the shortcut menu.
Select a frame and right-click (Control-click)
to see this menu.

6. Or choose Paste Properties Special to select a few of the properties to paste.
The Paste Properties Special dialog box appears, as shown in Figure 3-23.

Figure 3-23

Using the Paste Properties Special dialog box, you
can pick and choose which properties you want
to paste. This is especially handy if you’re pasting
position properties to align symbols on the stage.

116

Flash CS6: The Missing Manual

www.it-ebooks.info

7. Check the properties you want to copy, and then press OK.
The selected properties are copied to the frame. If necessary, a new keyframe
is added to the timeline.

Shape
Tweening
(Morphing)

Shape Tweening (Morphing)
Shape tweening—sometimes referred to as morphing—lets you create an effect that
makes one object appear as though it’s slowly turning into another object. Often,
shape tweening is one job that can’t be done easily by simply changing properties
with the motion tween, so Flash has a special tween tool for the job.
To make a shape tween, you draw the beginning object and the ending object, and
Flash does all the rest. For example, say you create a keyframe containing a yellow
ball. Then, 24 frames along the timeline, you create another keyframe containing a
green star. You then apply a shape tween to the frame span, and Flash generates
all the incremental frames necessary to show the ball slowly—frame by frame—­
transforming itself into a star when you run the animation.
Tip Shape tweens work only on editable graphics. If you want to tween a symbol (page 103), then you need
to use a motion tween. If you want to tween a group of objects or reshape characters of text, then you need to
ungroup the objects (page 161) or break apart the text (Modify→Break Apart) and then apply the shape tweens
to the individual elements.

Shape tweening lets you change more than just an object’s shape over a series of
frames. Using a shape tween, you can also change an object’s size, color, transparency, position, scale, and rotation.
To create a shape tween:
1. Select the frame where you want your tween to begin (for example, Frame 1).
Flash highlights the selected frame.
2. If the selected frame isn’t a keyframe (if you don’t see a dot in the frame),
then turn it into a keyframe by selecting Insert→Timeline→Keyframe (or
pressing F6).
Flash displays a dot in the frame to let you know it’s a keyframe.
Note

Shape tweens use the standard keyframe (circle icon). They don’t use property keyframes (diamond
icons). Property keyframes are used exclusively with motion tweens (page 103).

3. On the stage, draw the shape you want to begin your tween.
In Figure 3-24, the beginning shape is a ball—a yellow fill with a black stroke.

Chapter 3: Animate Your Art

www.it-ebooks.info

117

Shape
Tweening
(Morphing)

4. Select the frame where you want your tween to end (for example, Frame 24).
Flash highlights the selected frame.
5. Insert an ending point for your tween (and a clean, fresh stage on which to
draw your ending shape) by selecting Insert→Timeline→Blank Keyframe.
The stage clears, the playhead moves to the selected frame, and Flash displays
a hollow dot in the selected frame to let you know it’s a keyframe.

Figure 3-24

You can use any or all of Flash’s drawing
and painting tools to create your first image.
Just make sure you don’t group objects
(Modify→Group) or convert your object into a
symbol (page 250); shape tweening works only
on ungrouped, editable objects in a single layer.

Tip

As explained on page 96, you can carry over your beginning image from the first keyframe and make
changes to it by choosing Insert→Timeline→Keyframe (instead of Insert→Timeline→Blank Keyframe).

6. On the stage, use Flash’s drawing and painting tools to draw the shape you
want to end your tween.
Your ending shape can differ from your first shape in terms of position, color,
transparency, rotation, skew, and size—so feel free to go wild. In Figure 3-25,
the ending shape is a green, five-pointed star.
7. On the timeline, right-click (Control-click) any frame in the middle of the
frame span, and then choose Create Shape Tween from the shortcut menu.
When you right-click, Flash moves the playhead and highlights the frame you
clicked. When you choose Shape Tween, the frame span changes to a nice lime
color and inserts an arrow to let you know that you’ve successfully added a

118

Flash CS6: The Missing Manual

www.it-ebooks.info

shape tween (Figure 3-26). A new tweening section appears in the Properties
panel. (If the Properties panel isn’t showing, choose Window→Properties.)

Shape
Tweening
(Morphing)

Note
If you have Tinted Frames turned off, then Flash doesn’t change the color behind the tweened frames.
To turn on Tinted Frames, click the Options menu (the tiny, striped icon on the far right of the timeline, just above
the frame numbers, as shown in Figure 3-25) and then select the Tinted Frames option. A checkmark indicates
that the option is turned on.

Figure 3-25

Flash grays out all the frames in
a frame span—in other words,
all the frames beginning with
one keyframe up to (but not
including) the next keyframe—so
you can spot them easily. As
you can see here, each frame
span ends with the end frame
symbol, which looks like a hollow
rectangle.

Options
menu

8. If you like, set the Ease and Blend shape tween options (Figure 3-27).
Here’s what the options do:
• Ease tells Flash to speed up (or slow down) the tween. To change the Ease
value, type a number or drag to change the number. If you want your tween
to start out normally but speed up at the end, then set the Ease value to a
negative number. To tell Flash to start your tween normally but slow down
at the end, use a positive number. (Zero means that when you play your
animation, the tween appears to be the same speed throughout.)
• Blend tells Flash how picky you want it to be when it draws its in-between
frames. If you want to preserve the hard angles of your original shape,
click the Blend drop-down box and then select Angular; if you want Flash

Chapter 3: Animate Your Art

www.it-ebooks.info

119

Shape
Tweening
(Morphing)

to smooth out the hard edges so that the tween appears softer, select
Distributive.

Figure 3-26

As soon as you create
a tween, Flash displays
an arrow spanning the
frames that make the
tween. A new Tweening
section appears in the
Properties panel.

Tween arrow

Properties panel

Tweening
section

Figure 3-27

Shape-related tweening options appear in the
Properties panel: namely, Ease (to speed up or
slow down your tween) and Blend (to tell Flash
whether to preserve hard corners and angles
from frame to frame or to smooth them out). To
preview the in-between frames Flash generated
for you, just select any frame in the frame span.
Ease scrubber
Blend type

9. Test your shape by selecting Control→Play.
Flash plays your shape tween on the stage (Figure 3-28).
Want to see the finished example of the ball-morph-to-star shape tween? Go to
www.missingmanuals.com/cds/flashcs6mm and download 03-4_Shape_Tween.fla.

120

Flash CS6: The Missing Manual

www.it-ebooks.info

Shape Hints
Flash does a bang-up job when it comes to tweening simple shapes: circles, squares,
stars, raindrops. But the more complicated the images you want to tween, the harder
Flash has to work to calculate how to generate the in-between images.

Shape
Tweening
(Morphing)

And if you think about it, that difficulty makes sense. Because complex beginning
and ending images like a stylized acorn and tree (Figure 3-29) contain a bunch of
editable lines, shapes, and colors, Flash has to guess at which elements are most important and how you want the morph to progress from the first keyframe to the last.

Figure 3-28

When you run your animation, your beginning image appears to morph into your
ending image, thanks to the in-between
frames Flash generates when you create
your shape tween. Because the pages of a
book can’t show motion, here, onionskin
outlines (page 132) represent the animated tween you’d see on the stage.

3
1

2

Figure 3-29

1. The original acorn drawing: so far, so good.
2. Flash’s first attempt at generating an in-between frame is a little scary.
3. Clearly, the acorn is changing and growing, but that’s about all you can say
for this generated image.

4

5

6

4. You can almost make out the outline of a tree now.
5. This one’s getting there.
6. And finally, at the end of the tween, Flash makes it to your original image.

Sometimes Flash guesses correctly; other times, you need to give it a few hints.
Adding shape hints to your tweens tells Flash how you want it to create each in-

Chapter 3: Animate Your Art

www.it-ebooks.info

121

Shape
Tweening
(Morphing)

between frame. This makes your finished tween appear more realistic—more how
you want it to be.

Figure 3-30

Top: When you add a shape hint, Flash places it at the center of your object. All you have to do is drag it to the edge of your
object.
Bottom: The more shape hints you use (and the more accurately you place them around the edge of your object), the more
closely Flash attempts to preserve your shape as it generates the tween frames. Make sure you place the hints in alphabetical order as you outline your shape. If you find after several tries that Flash doesn’t seem to be taking your hints, your
shapes might be too complex or too dissimilar to tween effectively. In that case, you’ll want to create additional keyframes
or even consider replacing your tween with a frame-by-frame animation.

In short, shape hints give you more (but not complete, by any means) control over
the shape-tweened sections of your animation.
Note

Shape hints are especially valuable when you’re working on an animation that moves at a relatively
slow frame rate—in other words, in situations when each separate frame will be visible to your audience’s naked
eye.

To add shape hints to a shape tween:
1. Select the first frame of your tween.
Flash highlights the selected frame.
2. Choose Modify→Shape→Add Shape Hint, or press Ctrl+Shift+H (Shift-⌘-H).
Flash displays a hint (a red circle containing a letter from A to Z) in the center
of your shape, as shown in Figure 3-30 (top).
3. Drag the hint to the edge of your shape.
Figure 3-30 (bottom) shows the result of dragging several hints to the edge
of your shape.
4. Repeat as many times as necessary, placing hints around the outline of the
object in alphabetical order.
The bigger or more oddly shaped your object, the more hints you need. Placing
a hint at each peak and valley of your object tells Flash to preserve the shape
of your beginning object as much as possible as it morphs toward the shape
of your ending object.

122

Flash CS6: The Missing Manual

www.it-ebooks.info

5. Go to the last frame of the shape tween and adjust the shape hints to match
the final shape.

Shape
Tweening
(Morphing)

When the animation runs, Flash uses the hints in both the beginning and the
ending keyframe to control the shape of the morphing object.

1

3

2

Figure 3-31

1. The original acorn is the same here as it was in Figure 3-29.
2. Using hints, this attempt at generating a first in-between frame is better
than the one in Figure 2-39. It’s not exactly a prize pig, but it’s better.
6

5
4

3. Already you can see the form of the tree taking shape.
4. Here the already-pretty-well-shaped tree looks as thought it’s about to
burst out of the acorn outline.
5. Compared to tweening without hints (see Figure 3-29) this tween appears
much smoother; you don’t see the Flash generated squiggly lines.
6. The final frame of any tween appears the same whether or not you use
hints.

6. Test your animation by clicking Control→Play.
The tweened frames of your animation conform, more or less, to the hints you
provided. Figure 3-31 show you an example.

Using Multiple Layers for Shape Tweens
It’s easier for Flash to morph two simple shapes than one complex shape. So if
shape hints don’t help Flash solve shape tween confusion, then try tweening parts
of your drawing separately. For example, put the cap of an acorn on a layer by
itself, and put the bottom shell in a separate layer. Then you can shape tween the
cap into the leaves of the tree and shape tween the shell into the trunk of the tree,
with results as shown in Figure 3-32. There’s an example of this technique on the
Missing CD page (www.missingmanuals.com/cds/flashcs6mm). The file is called
03-5_Shape_Acorn.fla. You’ll learn more about creating timeline layers in the next
chapter.

Chapter 3: Animate Your Art

www.it-ebooks.info

123

Shape
Tweening
(Morphing)

Classic Tween
You may have noticed that Flash has a third type of tween listed on the Insert menu—
Classic Tween. In the olden days, before Adobe developed the new and improved
motion tween with its control of individual properties, the Classic tween was called
Motion tween, and it was used to tween symbols. The new Motion tween is so much
better and powerful that there aren’t many reasons to use Classic tween on a new
project. Here are the main two reasons you might want to use Classic tween:
• You need to work on a project developed with an earlier version of Flash.
• You’re a Flash veteran and aren’t ready to learn the newfangled motion tween.
In any case, Adobe wisely kept the Classic tween as part of Flash so you can use
it if you need it. This book doesn’t cover the Classic tween, but it was covered in
Chapter 3 of Flash CS4: The Missing Manual. If you want, you can download a PDF
of the chapter at www.missingmanuals.com/cds/flashcs6mm.

Figure 3-32

If you add a shape tween to a layer with more
than one object, the results usually aren’t
pretty. It’s best to place objects on separate
layers. Here the cap of the acorn tweens into
the leaves of the tree, and the shell tweens
into the trunk and branches. Using tweens on
multiple layers gives you more control over
your animation.

124

Flash CS6: The Missing Manual

www.it-ebooks.info

Part

Advanced Drawing and
Animation
Chapter 4:

Organizing Frames and Layers
Chapter 5:

Advanced Drawing and Coloring
Chapter 6:

Choosing and Formatting Text
Chapter 7:

Reusable Flash: Symbols and Templates
Chapter 8:

Advanced Tweens with the Motion Editor
Chapter 9:

Realistic Animation with IK Bones
Chapter 10:

Incorporating Non-Flash Media Files
Chapter 11:

Incorporating Sound and Video

www.it-ebooks.info

2

www.it-ebooks.info

chapter

Organizing Frames
and Layers

4

P

art 1 of this book gets you started launching Flash, creating your own drawings, and transforming them into moving animations. Most animation work,
though, takes place after you’ve got all the frames and layers in place. Like a
film director slaving away in the cutting room, as an animator you spend most of
your time testing, editing, and retesting your movie.

This chapter is your crash course in Flash animation editing. Here you’ll learn how
to reorganize your animation horizontally (over time) by cutting, pasting, and rearranging frames in the timeline. You’ll also see how to reorganize your animation
vertically by shuffling and restacking the layers you’ve added to it.

Working with Frames
When you create an animation, you build it from frames and keyframes. Editing
your document is a simple matter of moving, cutting, and pasting those frames
until they look good and work well. You can perform these operations on individual
frames or on multiple frames by combining them into groups, as you’ll see at the
end of this section.

Copying and Pasting Frames
Copy and Paste are the world’s favorite computer commands for good reason. These
functions let you create a piece of work once (a word, line, shape, drawing, or what
have you) and then quickly recreate it to build something even more complex with
a minimum of effort. Well, Flash lets you cut, copy, and paste not just the content

127

www.it-ebooks.info

Working
with Frames

of your frames but also your frames themselves from one part of your timeline to
another.
Copying and pasting frames is a great way to cut down on your development time.
Here’s how it works. Say you have a series of frames showing a weasel unwrapping a stick of chewing gum. It’s a gag scene, one you want to repeat throughout
your animation for comic effect. Instead of having to insert all the keyframes and
regular frames every time you want to slip in the weasel gag, all you need to do is
copy the weasel frames once and then paste them into your timeline wherever you
want them to go.
Furthermore, copying and pasting isn’t just useful for those times when you want a
carbon copy of a scene. If you want to change something in each pasted scene—the
brand of chewing gum the weasel is unwrapping, for example—you can do that, too,
after you’ve pasted the frames. Copying and pasting frames works almost exactly
like copying and pasting words or drawn objects—with a few twists. Here are some
points to keep in mind:
• As usual, you have to select what you’re going to copy before you set off the
command. See page 99 for a refresher on selecting frames in the timeline.
• If the frames you’re selecting span more than one layer, then make sure you
select all the layers for each frame, as shown in Figure 4-1. (If the frames you’re
selecting are part of a motion tween, then you need to use a different technique,
as explained on page 109. Ctrl-click [⌘-click] to select the first frame, and then
drag to select adjacent frames.)

Figure 4-1

To select multiple frames,
click the first frame of the
series you want to select,
and then Shift-click
the last frame. Flash
automatically selects the
beginning and ending
frames and all the frames
in between. To copy
and paste frames in the
same document, press
the Alt key (Windows)
or the Option key (Mac)
while you drag a copy of
the selected frames to a
new spot.

• Copying and pasting tweened frames varies depending on the type of tween—
motion or shape. While tweened frames are displayed as separate, distinct
images, they’re not; only keyframes contain distinct images. If you want to

128

Flash CS6: The Missing Manual

www.it-ebooks.info

copy and paste an entire shape tween, then you have to select the beginning
and end keyframes. The motion tween is much easier-going when it comes to
copying and pasting frames. You can select any frames from the middle of a
motion tween and paste them (as a tween) into another layer.

Working
with Frames

Note Classic tweens (page 124) work more like shape tweens. You have to select the beginning and ending
keyframes of what you want to copy and paste. You can’t take a chunk of frames from the middle.

• Flash doesn’t limit you to pasting within the same document. After you copy,
you can open any other Flash animation and paste the frames right in.
Note

Although Cut, Copy, and Paste usually travel as a threesome, things work a little differently in Flash.
The Cut Frames command on the Edit→Timeline submenu doesn’t actually cut frames; instead, it cuts the contents
of the selected frame. To get rid of the frame itself, you need to use Edit→Timeline→Remove Frames, as described
in the box on page 131.

The process of copying and pasting frames follows the same basic steps every time:
1. In the timeline, select the frames you want to copy.
You probably want to make sure that the set of frames you choose begins
with a keyframe, as described in the third bullet point above. Either way, Flash
highlights the selected frames and moves the playhead to the last selected
frame. You can select frames on more than one layer, as long as the layers are
adjacent to each other.
2. Press Ctrl+Alt+C (Option-⌘-C).
Flash stores the frames so you can paste them at another spot on the timeline
or even to a different Flash document. Keep in mind, the timeline copy and
paste commands are different from the standard Copy (Ctrl+C or ⌘-C) and
paste (Ctrl+V or ⌘-V).
Tip There are three ways to use the Copy Frames and Paste Frames commands. For most Flash folk, the
shortcut keys shown in these steps are the fastest method. You’ll use the commands often enough that they’ll
become second nature. As an alternative, you can right-click (Control-click) the timeline to see a shortcut menu
with the commands. Probably the least convenient method is the main menu (Edit→Timeline→Copy Frames).

3. Select the keyframe where you want to begin pasting the copied frames.
In other words, select the frame after which you want to add the copied frames.
4. Press Ctrl+Alt+V (Option-⌘-V on the Mac).
Flash pastes the copied frames, replacing the currently selected keyframe with
the first copied frame. If you pasted frames into the middle of a timeline, Flash
repositions your existing frames after the last pasted frame. If your selection
in step 1 included more than one layer, then Flash adds extra layers as needed.
Chapter 4: Organizing Frames and Layers

www.it-ebooks.info

129

Working
with Frames

Moving Frames and Keyframes
The timeline is serial: When you run your animation, Flash displays the content in
Frame 1, followed by the content in Frame 2, followed by the content in Frame 3,
and so on. If you change your mind about the order in which you want frames to
appear, all you need to do is move them.
Simple in theory—but moving frames in Flash isn’t quite as cut and dried as you
might think. As you may recall if you’ve had a chance to read through Chapter 3,
only keyframes can contain actual images; regular frames, technically called static
frames, contain either tweened or “held over” copies of the images placed in the
previous keyframe. So whether you move a frame or a keyframe, you end up with
a keyframe. Here’s how it works:
• Moving a keyframe. When you move a keyframe, what Flash actually moves is
the keyframe’s content and keyframe designation; Flash leaves behind a static
frame in the original keyframe’s place. (And that static frame may or may not
be empty, depending on what precedes it.)
• Moving a static frame. Flash moves the static frame but turns the moved frame
into a keyframe. (If you move a series of regular frames, then Flash turns just
the first moved frame into a keyframe.)
Tip

There’s another way to change the order in which Flash plays frames: by creating an ActionScript action,
as described in Chapter 15. Creating an action lets you tell Flash how to play your frames: backward, for example,
or by rerunning the first 10 frames three times and then moving on. You want to use ActionScript (as opposed to
moving frames) to give your audience the choice of viewing your animation in different ways.

Here are the steps in detail:
1. In the timeline, select the frame(s) you want to move.
Flash highlights the selected frame (or frames) and moves the playhead to the
last selected frame.
2. Drag the selected frame(s) to the frame after which you want to place the
selected frames.
As you drag the selected frames, Flash highlights the frames you’re moving to
help you position them (Figure 4-2). If your selection includes a keyframe, then
Flash clears the selected frames from their original position and then inserts
them in their new location. If your selection doesn’t include a keyframe, then
Flash copies the content and creates a new keyframe at the point of insertion.
Tip

To select multiple frames, drag in the timeline. You have to release the mouse button to complete the
selection. Then you can drag the selected frames to move the whole bunch of highlighted frames to a new location.
If dragging your frames isn’t working, you can always copy and paste the frames you want to move (page 115).
Then use Edit→Timeline→Remove Frames to delete them from their original location (see the box on page 131).

130

Flash CS6: The Missing Manual

www.it-ebooks.info

Tip

It’s worth remembering that the magic Undo command (Ctrl+Z or ⌘-Z) will reverse any of the remove,
cut, or clear commands. Helpful when something unexpected happens.

Working
with Frames

Figure 4-2

Top: Click to select the frame you want
to move, and then let go of your mouse.
Then drag to move the frame.
Middle: As you make the move, Flash
displays a highlighted frame, or a group
of frames if you selected more than one.
Bottom: Here you can tell the frame
moved to Frame 30 because the
keyframe and end frame indicators have
disappeared from their original locations
(Frames 16 and 17) and reappeared in their
new locations (Frames 29 and 30).

Up to Speed

Remove vs. Cut vs. Clear
Flash has three commands you can use to get rid of your frames
(and the content associated with those frames): Remove, Cut,
and Clear. When you’re new to Flash, it may not be immediately
clear which command does what. Here’s what these commands
do to selected frames:
• Edit→Timeline→Remove Frames (Shift+F5). Removing
a frame deletes that frame or group of frames from the
timeline, as if you’d reached into the timeline and yanked
them out. When a keyframe is involved, the result is a little
different. If you attempt to remove a keyframe followed
by a regular frame, Flash deletes the frame immediately
to the right of the keyframe instead (go figure). To be safe,
if you want to remove a keyframe—in other words, if you
want to delete a keyframe from the timeline—then you
first want to clear the keyframe with Shift-F6. That strips

the frame of its keyframe status. Then you can remove
the frame itself.
• Edit→Timeline→Cut Frames (Ctrl+Alt+X or Option-­
⌘-X). Cutting a frame deletes the content on the
stage associated with that frame (in other words, turns
the frame into a blank keyframe). If the immediately
succeeding frame is a regular frame, then Flash turns
that succeeding frame into a keyframe. Flash stores the
contents of the cut frames on the Clipboard, so you can
restore them by choosing Edit→Timeline→Paste Frames.
• Edit→Timeline→Clear Frames (Alt+Delete or OptionDelete). Clearing frames is just like cutting them, but
with one difference: Flash doesn’t store the contents of
the cleared frames (so you can’t restore them).

Chapter 4: Organizing Frames and Layers

www.it-ebooks.info

131

Working
with Frames

Editing Multiple Frames
Imagine you’ve just completed a 250-frame animation showing a character in a
red T-shirt demonstrating your company’s latest product, an electronic egg slicer.
Suddenly, your boss comes in and declares that red is out. (Red is the color your
competitor is using for its egg slicer launch.) You have, your boss declares, until the
end of the day to change all 250 frames.
Now, if you had to change all 250 frames one at a time, you’d never be able to meet
your deadline, and even if you did, you’d probably make a few mistakes along the
way, like accidentally repositioning the T-shirt in a couple of frames or missing a few
frames altogether. But it’s precisely this kind of en masse editing job that Flash’s
multiple-frame editing capability was designed to handle. (By the way, you can
also edit multiple frames using Flash’s Find and Replace commands. See the box
below for more.)
Using a technique called onion skinning, you can see the contents of several frames
at once. There are three modes for onion skinning: Onion Skin, Onion Skin Outlines,
and Edit Multiple Frames. Each is helpful for a different type of task. Use the buttons
at the bottom of the timeline to choose an onion skin mode, as shown in Figure 4-3;
use the onion markers in the timeline to choose which frames are displayed.

Gem in the Rough

Editing Multiple Frames with Find and Replace
Another way to edit the content of multiple frames is to use
Flash’s Find and Replace function. Similar to the Find and Replace you’ve undoubtedly used in word processing programs,
this function lets you search every frame of your animation
for a specific bit of text (or even a certain color or bitmap file)
and either replace the occurrences yourself or tell Flash to
replace them for you using the text (or color or bitmap file)
you tell it to use.

For drop-down menu and select the item you want to find.
Your choices include Text, Font, Color, Symbol, Sound, Video,
and Bitmap.
To change the occurrences yourself, click Find Next or Find
All (and then make your changes on the stage). To tell Flash
to change the occurrences, add a Replace With option (for
example, the color or text you want to insert), and then click
Replace or Replace All.

To use this function, select Edit→“Find and Replace.” Then,
in the “Find and Replace” window that appears, head to the

The Edit Multiple Frames mode makes it easy to deal with that red T-shirt issue,
because you can quickly identify (and change) the frames containing red T-shirts.
Onion skinning is also useful for those times when you want to hand-draw an “inbetween” frame, because you can see both the preceding and succeeding frames
on the stage at the same time.
Note

Technically speaking, when you edit multiple frames in Flash, you’re actually editing multiple
­keyframes. Keyframes are the only frames that contain unique, editable art. (Regular frames just “hold over”
the contents of the previous keyframe, and Flash stores tweened frames not as editable images, but as a bunch
of calculations.)

132

Flash CS6: The Missing Manual

www.it-ebooks.info

Working
with Frames

To edit multiple frames using onion skinning:
1. In the timeline, click the Edit Multiple Frames icon.
Flash displays multiple frames on the stage and adds onion markers to the frame
display (Figure 4-3, bottom). These beginning and ending onion markers tell
Flash which frames you want it to display on the stage.

Selected frame

Figure 4-3

Top: Click the Onion Skin button, and the image for the
selected frame appears bold.
The images on the adjacent
frames appear faded out.
Middle: Click Onion Skin
Outlines, and images on the
unselected frames appear as
outlines.

Onion markers

Bottom: Click the Edit Multiple Frames button, and all
the images within the onion
markers appear 100 percent
opaque.

Onion skin outlines
Onion skin
Edit multiple frames

Chapter 4: Organizing Frames and Layers

www.it-ebooks.info

133

Working
with Frames

2. Click the Modify Markers icon.
Flash displays a pop-up menu.
3. From the pop-up menu, select Marker Range All (Figure 4-4).

Figure 4-4

Here you see the result of
selecting Marker Range
All. The onion markers
surround the entire frame
span (Frame 1 through
Frame 20), and all 20
images appear on the
same stage, ready for you
to edit en masse.

Flash displays onion markers from the beginning of your timeline’s frame span
to the end and shows the contents of each of your frames on the stage. (If you
don’t want to edit all the frames in your animation, you can drag the onion
markers independently to surround whatever subset frames you want.)
4. Edit the frames.
Because you can see and select all the content on a single stage, you can make
your edits more easily than having to hunt and peck individually through every
frame in your animation. In Figure 4-5, four frames are selected with the onion
markers.

Figure 4-5

You can work with multiple images just as easily as single images.
For example, you can select several (or all of them) and apply
whatever edits you like—moving them, coloring them, reshaping
them, and so on.

134

Flash CS6: The Missing Manual

www.it-ebooks.info

The contents are first recolored and then moved in one fell swoop. When the
move is complete, your stage looks like Figure 4-6.

Working
with Multiple
Layers

Figure 4-6

With onion skinning turned on, you can see multiple frames, but you
can edit only the content of the selected frame. Use the Edit Multiple
Frames mode when you want to see and edit several frames at once.

5. Click Edit Multiple Frames again.
Flash returns to regular one-frame-at-a-time editing mode and displays only
the contents of the current frame on the stage.
Note You can’t edit multiple frames on a locked layer (page 148). In fact, when you click Edit Multiple
Frames on a locked layer, Flash doesn’t even show you the content of the frames in the locked layer (not even in
onion skin form).

Working with Multiple Layers
A layer is a named sequence of frames in the timeline. When you work with a single
layer, adding content to frames is easy: You just click a keyframe and use Flash’s
drawing, painting, and text tools to create an image on the stage. But when you work
with multiple layers, you need to keep track of the layers’ order and what objects
are on each layer. For example, suppose you’re creating a composite drawing with
mountains in the background, a car driving by in the foreground, and a separate
layer for your sound clips. You may find adding content a bit trickier, because you
have to be aware of the layer to which you’re adding your content. Fortunately, as
you’ll see in the steps below, the timeline’s Show/Hide icon helps you keep track of
which content you’ve placed on which layer.

Chapter 4: Organizing Frames and Layers

www.it-ebooks.info

135

Working
with Multiple
Layers

To add content to multiple layers:
1. Open the file 04-1_Multiple_Layers.fla .
You can find this file (and all the other example files) on this book’s Missing CD
page at www.missingmanuals.com/cds/flashcs6mm.
2. Click the first keyframe in Layer 1.
Flash highlights the selected frame, as well as the layer name. You also see a
little pencil icon that lets you know this frame is now ready for editing.
3. Use Flash’s drawing and painting tools to draw a fence on the stage.
Your fence doesn’t have to be fancy; a quick “wooden” fence like the one in
Figure 4-7 is fine.

Figure 4-7

You can tell at a glance which layer is active (editable) by looking for the pencil icon next to the
layer’s name. Here, Layer 1 is active.

4. Hide Layer 1 by clicking the Show/Hide button next to Layer 1.
The content on the stage temporarily disappears. Flash replaces the Show/Hide
icon with an X and draws a slash through the pencil icon next to Layer 1 to let
you know this layer is no longer editable.
Note Technically, you don’t have to hide the contents of one layer while you’re working with another; in
fact, in some cases, you want to see the contents of both layers on the stage at the same time (page 138). But for
this example, hiding is the best way to go.

136

Flash CS6: The Missing Manual

www.it-ebooks.info

5. Click the first keyframe in Layer 2.
Flash highlights the selected frame, as well as the layer name (Layer 2). Now
the pencil icon is next to Layer 2.

Working
with Multiple
Layers

6. Use Flash’s drawing and painting tools to draw a few flowers on the stage.
Your workspace should now look like the one in Figure 4-8. You can make
multiple flowers by copying and pasting a single flower.

Figure 4-8

Sometimes you want to see
the frame contents of two or
more layers at the same time,
like when you’re trying to line
up objects in multiple layers.
But sometimes seeing all those
different objects on the same
stage is just plain confusing—partly because Flash lets
you edit only one layer at a
time. Here, the fence in the
first frame of Layer 1 is hidden
(you can tell by the big X in the
Show/Hide column) so you can
focus on the contents of Layer
2 (the flowers).

Show/hide
all layers
Visible layer

Hidden layer

7. Hide Layer 2 by clicking the Show/Hide icon next to Layer 2.
The content on the stage temporarily disappears. Flash replaces the Show/Hide
icon with an X and draws a slash through the pencil icon next to Layer 2 to let
you know that this layer is no longer editable.
8. Repeat steps 4–6 for Layers 3 and 4, adding some gray clouds to Layer 3
(­Figure 4-9) and some flying birds to Layer 4 (Figure 4-10).
9. To see the content for all four layers, click to remove the Show/Hide X icon
next to Layer 3, Layer 2, and Layer 1, as shown in Figure 4-11.
Flash displays the content for all four layers on the same stage.

Chapter 4: Organizing Frames and Layers

www.it-ebooks.info

137

Working
with Multiple
Layers

Showing and Hiding Layers
This section shows you how to use Flash’s layer tools (including locking/unlocking and hiding/showing) to keep from going crazy when you’re editing content in
multiple layers (Figure 4-12). Two layers aren’t so bad, but if you need to add 6, 8,
10, or even more layers, it’s pretty easy to lose track of which layer you’re working
in. Then in the following section you’ll see how to edit the content in your layers.

Figure 4-9

Creating separate layers for different
graphic elements gives you more
control over how each element appears
in your finished animation.

Whether or not you want Flash to show the contents of your layered frames on the
stage depends on the situation. Typically, when you’re creating the content for a new
layer, you want to hide all the other layers so you can focus on what you’re drawing
without any distractions. But after you’ve created a bunch of layers, you want to
see them all at once so you have an idea of what your finished animation looks like
and make adjustments as necessary.
Flash shows all layers until you tell it otherwise.

138

Flash CS6: The Missing Manual

www.it-ebooks.info

Tip

You can tell Flash to show (or hide) all your layers by clicking the Show/Hide All Layers icon you see in
Figure 4-8. Click the icon again to turn off showing (or hiding).

Working
with Multiple
Layers

Figure 4-10

In this example, the images are
static, but you can place everything
from motion and shape tweens to
movie clips, backgrounds, actions,
and sounds on their own layers.
Hiding layers affects only what you
see on the stage; when you select
Control→Test Movie to test your
animation, Flash displays all the
layers, whether or not you’ve checked
them as Hidden.

Gem in the Rough

Distribute to Layers
If you have a bunch of graphic elements on one layer that you
want to put on separate layers (perhaps you want to tween
them individually), you can save time by telling Flash to do
the work for you. First, select the objects you want to put on
different layers and then select Modify→Timeline→Distribute
to Layers.
Unfortunately, like any automatic process, this approach may
not create the precise results you want. Flash can’t possibly

know that you want both an eye and an eyebrow to go on the
same layer, for example. And this trick doesn’t break apart
bitmaps, symbols, or grouped objects.
If you want to distribute the elements of a bitmap or symbol
to individual layers, you first need to break up that bitmap,
symbol, or grouped object by selecting it and then choosing
Modify→Break Apart or Modify→Ungroup.

Chapter 4: Organizing Frames and Layers

www.it-ebooks.info

139

Working
with Multiple
Layers

Hiding a layer
The eyeball in the timeline is the Show or Hide All Layers button. It works like a
toggle. Beneath that eye are buttons to show or hide layers individually. So to hide
a single layer, click the dot in that layer. When you do, Flash replaces the dot with a
red X and temporarily hides the contents of the layer (Figure 4-13).

Figure 4-11

Here’s what the composite drawing
for Frame 1 looks like: the fence, the
flowers, the cloud, and the birds, all
together on one stage. Notice the
display order: The flowers (Layer 2)
appear in front of the fence (Layer
1), and the birds (Layer 4) in front of
the cloud (Layer 3). You can change
the way these images overlap by
rearranging the layers, as you’ll see
on page 146.

Showing a layer
In the timeline, click the X in the layer you want to show. When you do, Flash replaces
the X with a dot and displays the contents of the layer on the stage.
Hiding (or showing) all layers except the one you’re editing
In the timeline, Alt-click (Option-click) the Show/Hide button next to the layer
you’re editing. Flash immediately hides (or shows) all the layers, except the one
you’re editing.

140

Flash CS6: The Missing Manual

www.it-ebooks.info

Tip

If you try to edit a hidden layer by drawing on the stage, Flash displays a warning dialog box that gives
you the opportunity to show (and then edit) the layer. Not so if you try to drag a symbol onto the stage—Flash
just refuses to let you drop the symbol on the stage. Oddly enough, however, Flash does let you add and remove
frames and keyframes in a locked layer.

Working
with Multiple
Layers

Working with Layers
The more layers you have, the more important it is to keep them organized. In this
section, you’ll see how to give your layers meaningful names so you’ll know which
images, sounds, or actions they hold. You’ll learn how to arrange your layers so that
your images and objects overlap the way you want. And you’ll learn how to copy and
paste layers, an important skill that saves time and cuts down on repetitive tasks.

Figure 4-12

This animation contains three layers: one
containing a motion tween of a buzzing
fly, one containing the path the fly takes
as it buzzes around the frog’s head, and
one containing the highly interested frog.
In some situations, showing all layers is
fine, but here it’s confusing to see all those
images on the stage at the same time.

Renaming Layers
The names Flash gives the layers you create—Layer 1, Layer 2, Layer 3, and so on—
aren’t particularly useful when you’ve created 20 layers and can’t remember which
layer contains the ocean background you spent 10 hours drawing. Get into the habit
of renaming your layers as soon as you create them, and you’ll have an easier time
locating the specific elements you need when you need them.

Chapter 4: Organizing Frames and Layers

www.it-ebooks.info

141

Working
with Multiple
Layers

This section builds on the example you created earlier in this chapter. If you haven’t
had a chance to work through that section, you can download 04_2_Flowers.fla
from this book’s Missing CD page (www.missingmanuals.com/cds/flashcs6mm)
and use it instead.

Up to Speed

Why Layer?
In addition to making it much, much easier for you to change
your animations, working with layers gives you the following
benefits:
• You can create multi-tweened animations. Often if you’re
tweening more than one object, it helps to put each of
those objects on a separate layer. Sometimes, it’s the only
way to get the job done. For example, if you want to show
two baseballs bonking a parked car—one ball sailing in
from the right and one from the left—then you need to
either draw the entire animated sequence for each ball
by hand or use separate layers for each tween.
• You can create more realistic effects. Since you can shuffle
layers, putting some layers behind others and even
adjusting the transparency of some layers, you can add
depth and perspective to your drawings. And because you
can distribute your drawings to layers at whatever level of
detail you want, you can create separate layers that give
you independent control over, say, your characters’ facial
expressions and arm and leg movements.
• You can split up the work. In the olden days, TV and movie
animators used layers (technically, they use transparent

sheets of plastic called cels, but it’s the same concept) to
divvy up their workload, and so can you. While you’re
crafting the dog layer, one of your teammates can be
working on the cloud layer, and another two can be
working on the two character layers. When you’re all
finished, all you need to do is copy everyone’s layers and
then paste them into a single timeline. Bingo—instant
animation.
• You can organize your animations. As you begin to create
more sophisticated animations, which may include not
just images and animated effects but also symbols
(Chapter 7), sounds (Chapter 11), and actions (Chapter
12), you’ll quickly realize that you need to organize your
work. Layers help you get organized. If you get into the
habit of putting all your animation’s ActionScript code
into a single layer (called “actions”), all the sounds into
a single layer (called “sounds” or “soundtrack”), all the
text into a single layer (called “text”), and so on, then you
can quickly spot the element you’re looking for when it
comes time to edit your animation.

To rename a layer:
1. Open the file 04_2_Flowers.fla .
If you created your own Flash document when you worked through “Working
with Multiple Layers” (page 135), you can use that document instead.
2. Double-click the name Layer 4.
Flash displays the layer name in an editable text box (Figure 4-15). On the stage,
you see the content for this layer (the birds) selected.

142

Flash CS6: The Missing Manual

www.it-ebooks.info

Note

Instead of double-clicking the layer name, you can use the Layer Properties dialog box to rename
your layer. Check out the box on page 144 for details.

Working
with Multiple
Layers

Figure 4-13

Hiding the motion guide layer lets you focus
on the two main elements of this animation:
the frog and the fly.

3. Click inside the text box, type birds , and then click anywhere else in the
workspace.
Flash displays the new name for your layer.

Figure 4-14

When you open the Layer Properties dialog box, you’ve got all the layer settings
in one place. You can change the layer name; show, hide, or lock your layer; and
much more.

Chapter 4: Organizing Frames and Layers

www.it-ebooks.info

143

Working
with Multiple
Layers

4. Repeat steps 1 and 2 for Layers 3, 2, and 1, renaming them cloud, flowers ,
and fence, respectively.

Up to Speed

Layer Properties
• Mask. A type of layer you use to carve out “portholes,”
through which the content on an underlying masked
layer appears (page 151).

Flash gives you two ways to change the properties associated
with your layers—for example, the name of your layer, whether
you want to show the content of a layer on the stage or hide it,
whether you want to lock a layer or leave it editable, and so on.

• Masked. A regular layer that appears below a mask
layer (page 152).

One way is clicking the Show/Hide button in the timeline.
(That’s the approach described in this chapter.) The other way is
by using the Layer Properties dialog box shown in Figure 4-14.

• Folder. Not a layer at all, but a container you can
drag layers into to help you organize your animation
(page 150).

To display the Layer Properties dialog box, click to select a
layer, and then do one of the following:
• Double-click the layer icon you find just to the left of the
layer name. Right-click the layer name, and then choose
Properties from the shortcut menu that appears.
• Select Modify→Timeline→Layer Properties.
The Layer Properties dialog box lets you change several properties in the selected layer in one fell swoop:
• Name. Type a name in this text box to change the name
of your layer.
• Show. Turn on this checkbox to show the contents of
this layer on the stage; turn it off to hide the contents
of this layer.
• Lock. Turn on this checkbox to prevent yourself (or anyone
else) from editing any of the content in this layer; turn it
off to make the layer editable once again.
• Type. Click to choose one of the following layer types:
• Normal. The type of layer described in this chapter.

• Guide. A special type of layer that you use to position
objects on a guided layer, and which doesn’t appear
in the finished animation (page 192).
• Outline color. Click to choose the color you want Flash
to use when you turn on the “View layer as outlines”
checkbox.
• View layer as outlines. Turning on this checkbox tells
Flash to display the content for this layer on the stage as
wireframe outlines (instead of the way it actually looks
when you run the animation). Find out more on page 149.
• Layer height. Click the arrow next to this drop-down list
to choose a display height for your layer in the timeline:
100% (normal), 200% (twice as big), or 300% (three times
as big). You may find this option useful for visually setting
off one of your layers, making it easier to spot quickly.
After you make your changes, click OK to tell Flash to apply
your changes to the layer.

Figure 4-15

If you can’t remember what a particular layer contains, then check the stage:
When you double-click a layer name to rename it, Flash automatically highlights the content associated with that layer.

144

Flash CS6: The Missing Manual

www.it-ebooks.info

When you’re done, your renamed layers should look like Figure 4-16.

Working
with Multiple
Layers

Figure 4-16

The Layers area of the timeline isn’t particularly big, so it’s best to keep your
layer names short and sweet. If you need more room, just drag the bar that
separates the names from the frames.

Copying and Pasting Layers
Earlier in this chapter, you saw how to copy and paste individual series of frames.
But Flash also lets you copy and paste entire layers—useful when you want to create
a backup layer for safekeeping or when you want to create a duplicate layer you’ll
later change slightly from the original.
For example, if you want your animation to show an actor being pelted with tomatoes from different angles, you can create a layer that shows a tomato coming in
from stage right—perhaps using a motion or shape tween (Chapter 3). Then you
can copy that layer, paste it back into the Layers window, rename it, and tweak it so
that the tomato comes from stage left. Maximum effect for minimum effort—that’s
what copying and pasting gives you.
To copy and paste a layer:
1. In the timeline, click the name of the layer you want to select.
Flash highlights the layer name, as well as all the frames in the layer.
2. Select Edit→Timeline→Copy Frames.
If you don’t have a layer waiting to accept the copied frames, then create a new
layer now before going on to the next step.
3. In the Layers window, select the name of the destination layer. Then choose
Edit→Timeline→Paste Frames.
Flash pastes the copied frames into the new layer, beginning with the first frame.
It also pastes the name of the copied layer into the new layer.
Tip

It’s also possible to copy and paste layers between Flash documents. That’s a process used on one of
the last exercises in the book (page 760), where layers from an iPhone app are pasted into an Android project.

Chapter 4: Organizing Frames and Layers

www.it-ebooks.info

145

Working
with Multiple
Layers

Reordering (Moving) Layers
You can change the way images, text fields, and other objects overlap on the stage
by rearranging the layers in the timeline. For example, in Figure 4-17, the fence seems
to be behind the flowers because, in the timeline, the fence layer is below the flowers
layer. If you’d rather have the flowers behind the fence, just drag the flowers layer
below the fence. Figure 4-18 shows you an example.

Figure 4-17

Flash treats layers the same
way you treat a stack of
transparencies: The image
on the bottom gets covered
by the image above it, which
gets covered by the image
above it, and so on. Stacking
isn’t an issue if none of your
images overlap. But when
they do, you need to decide
which layers you want in front
and which behind.

Deleting a Layer
Flash gives you three ways to delete a layer:
• In the timeline, right-click (Control-click) the layer you want to delete and then,
from the shortcut menu that appears, choose Delete Layers.
• Drag the layer you want to delete to the trash can (see Figure 4-19).
• Click the layer you want to delete to select it (or Shift-click to select several
layers), and then click the trash can.
Whichever method you choose, Flash immediately deletes the layer or layers (including all the frames associated with that layer or layers) from the Layers window.

146

Flash CS6: The Missing Manual

www.it-ebooks.info

Tip

Working
with Multiple
Layers

If you delete the wrong layer by mistake, choose Edit→Undo Delete Layer or press Ctrl+Z (⌘-Z).

Figure 4-18

Moving a layer is easy: Just
click to select a layer, and
then drag it to reposition
it (and change the order
in which Flash displays the
content of your frames).
Here the cloud layer has
been moved to the bottom
of the list, so it now appears
behind the other images.
The birds layer is in the
process of being moved;
you can tell by the thick
gray line you see beneath
the cursor.

Figure 4-19

The quickest way to dispose of a layer is to select it and then click the trash can. All Flash
animations have at least one layer, so you can’t delete the last layer. If you try, Flash doesn’t
display any error—it just quietly ignores you.

Trash Can

Chapter 4: Organizing Frames and Layers

www.it-ebooks.info

147

Organizing
Layers

Locking and Unlocking Layers
Working with layers can be confusing, especially at first. So Flash lets you lock individual layers as a kind of safeguard, to keep yourself from accidentally changing
content you didn’t mean to change:
• To lock a layer, click the dot under the padlock, as shown in Figure 4-20. When
you do, the dot turns into a little padlock icon and deselects any objects that
you’d selected on the stage in that layer. If you locked the active layer, Flash
draws a slash through the pencil icon next to the layer’s name as a visual reminder that you can’t edit it.

Figure 4-20

Here the cloud and fence layers are unlocked, and the flowers layer (and the selected birds
layer) are locked. Some people get into the habit of locking all the layers they’re not currently editing. That way, they can’t possibly add a shape or a tween to the wrong layer.

• To unlock a layer, click the padlock (Figure 4-20). Instantly, the padlock turns
into a dot, Flash reselects your objects, and you can edit them once again on
the stage.
• To lock (or unlock) all your layers all at once, click the Lock or Unlock All
Layers icon (padlock at the top). Click the icon again to return to unlocked (or
locked) layers. Ctrl-clicking (⌘-clicking) on any Show/Hide button also locks
or unlocks all layers.
• To lock (or unlock) all layers except one, Alt-click (Option-click) the dot or
padlock in the layer you want to edit.
Note

If you try to edit a locked layer, Flash displays a warning dialog box that gives you the opportunity
to unlock (and then edit) the layer.

Organizing Layers
Flash gives you a couple of options that help you organize your layers while you’re
working. The Outline view removes the fill from drawings, showing only a wireframe
outline. Outline view is helpful when you want to simplify the artwork on a cluttered screen. Layer folders help you organize your layers into a hierarchy, which is

148

Flash CS6: The Missing Manual

www.it-ebooks.info

helpful when you’re working with dozens of layers. The ability to put several layers
in a single folder makes it easier to lock and hide related materials.

Organizing
Layers

Outline View
Flash lets you display the contents of your layers in outline form. Instead of seeing
solid pictures on the stage, you see wireframe images, as in Figure 4-21. Looking at
your layer content in outline form is useful in a variety of situations—for example,
when you want to align the content of one layer with respect to the content of another.
• To display the content of all your layers as outlines, click the Show All Layers As Outlines icon (next to the padlock). Clicking it again displays your layers
normally.

Figure 4-21

Depending on the visual
effect you’re going for,
you might want to align
the centers of your flowers with the crosspieces
of your fence. But when
you look at the content
normally, it’s hard to see
the alignment, because
both your flowers and
your fence are opaque.
Here Flash displays the
flowers and fence layers
in outline form so you can
concentrate on shape and
placement without being
distracted by extraneous
details.

Tip

You can change the color Flash uses to sketch your outlined content. For example, you can change the
color from light to dark so that you can more easily see the outline against a light background or so that there’s
more contrast between two overlapping outlines. To change the outline color for a layer, first select the layer,
and then select Modify→Timeline→Layer Properties. From the Layer Properties dialog box (Figure 4-21) that
appears, click the Outline Color swatch and then select a color from the color picker that appears.

Chapter 4: Organizing Frames and Layers

www.it-ebooks.info

149

Organizing
Layers

• To show a single layer’s content in outline form, click the filled square, as
shown in Figure 4-20. When you do, Flash changes the filled square to a hollow
square (the Outline icon) and displays your layer content in outline form on the
stage. To return your layer to normal, click the square again.
• To outline the contents of every layer except one, Alt-click (Option-click) the
outline icon for that layer.

Organizing Layers with Folders
When your animation has only a handful of layers, organization isn’t such a big deal.
But if you find yourself creating 10, 20, or even more layers, you’ll want to use layer
folders to keep your layers tidy (and yourself from going nuts).
A layer folder is simply a folder you can add to the Layers window. Layer folders
aren’t associated with frames; you can’t place images directly into them. (If you try,
you’ll see the error message shown in Figure 4-22.)

Figure 4-22

If you try to draw on the stage when you’ve
selected a folder instead of a layer, Flash lets you
know in no uncertain terms. (An interpolated
frame is a tweened frame; as you learned in
Chapter 3, you can’t place images in a tweened
frame, either.)

Instead, layer folders act as containers to organize your layers. For example, you
might want to put all the layers pertaining to a certain drawing (like a logo or a
character) into a single layer folder and name the folder logo or Ralph. That way you
don’t have to scroll through a bunch of layers to find the one image you’re looking for.
Note

As you might expect, showing, hiding, locking, unlocking, and outlining a layer folder affects every
layer inside that folder.

Each folder you add takes up a line in the timeline, and eventually there’s not enough
room to display all the layers and folders in the panel. You can use the scroll bar on
the right side of the timeline to find your layers, or you can increase the height of
the timeline panel by dragging the panel’s top edge.
Creating layer folders
To create a layer folder:

1. Click the name of a layer to select it.
When you create a folder, it appears above the selected layer; but you’ll be able
to drag your folder and its contents to a new location.

150

Flash CS6: The Missing Manual

www.it-ebooks.info

2. Click the Insert Layer Folder icon. (If you prefer, you can choose Insert→
Timeline→Layer Folder or right-click the layer, and then, from the shortcut menu
that appears, choose Insert Folder.)

Spotlight
Effect Using
Mask Layers

Flash creates a new layer folder named Folder 1, as shown in Figure 4-23.

Figure 4-23

Newly created layer folders appear expanded, like Folder 1 here (note the
down arrow). Clicking the down arrow collapses the folder and changes
the down arrow to a right arrow. When you drag layers into an open folder
(or expand a collapsed folder), the layers appear beneath the folder. You
rename a layer folder the same way you rename a layer: by doubleclicking the existing name and then typing in one of your own. You can
move layer folders around the same way you move layers around, too: by
dragging.

3. Drag layers onto the layer folder.
If the folder is already expanded, you see the layers appear beneath it. If the
folder is closed, then click the triangle button to view the layers inside.
Tip You can place layer folders inside other layer folders, but don’t go wild; the point is to organize your
layers so that you can find them easily, not to see how few folders you can display in the Layers window.

Deleting a layer folder
To delete a layer folder, and all the layers and folders inside, right-click the layer folder,
and then, from the shortcut menu that appears, select Delete Folder. Flash pops up
a warning message informing you that you’re about to delete not just the folder,
but also everything in it. If that’s what you want, then click Yes; otherwise, click No.

Spotlight Effect Using Mask Layers
Imagine placing a sheet of red construction paper containing a cutout of a star over
a piece of green construction paper. The result you see, when you look at the two
sheets stacked on top of each other, is a green star on a red background. That’s
the concept behind mask layers, a special type of layer that lets you create shaped
“portholes” through which an underlying (masked) layer appears.
At a masquerade ball, masks hide the important stuff—your face. It’s a little different in Flash and other graphic arts endeavors. Masks hide part of a picture in order
to reveal the important stuff—the subject. You use masks to direct the eye of your
audience. And when you apply a classic tween to the porthole, you can create an
effect that looks like a spotlight playing over an image—mighty cool, indeed.

Chapter 4: Organizing Frames and Layers

www.it-ebooks.info

151

Spotlight
Effect Using
Mask Layers

Here’s how you go about it:
1. Open the file 04-3_Mask_Layer.fla .
You can download this file, a working example of the file (04-4_Mask_Layer­
_­done.fla), and all the other examples shown in this chapter from the Missing
CD page at www.missingmanuals.com/cds/flashcs6mm.
2. Click Layer 1 to select it.
In the example file for this section (04-3_Mask_Layer.fla), Layer 1 contains a
bitmap image.
3. Click the Insert Layer button. (The Insert Layer button is on the bar below the
layer names and looks like a folded-over page.)
Flash creates a new layer named Layer 2 and places it above Layer 1.
4. Double-click the layer icon next to Layer 2.
The Layer Properties window appears (Figure 4-24).

Figure 4-24

Use the Layer Properties window to change the layer from one type to another. In
this example, you create a mask layer and a masked layer.

5. In the Layer Properties window, turn on the Mask checkbox, and then click
OK.
Flash displays the mask icon next to Layer 2.
6. Double-click the layer icon next to Layer 1.
The Layer Properties window appears again.
7. This time, turn on the checkbox next to Masked, and then click OK.
Flash displays the masked icon next to Layer 1.

152

Flash CS6: The Missing Manual

www.it-ebooks.info

8. Select Frame 20 in both Layer 1 and Layer 2, and then select Insert→Timeline→
Frame.

Spotlight
Effect Using
Mask Layers

Flash extends both layers to Frame 20.
9. Click to select the first frame in Layer 2 (the mask layer). On the stage, click
the Oval tool, and then draw a circle in the upper-right corner of the stage
(Figure 4-25).

Figure 4-25

The shape you use as a portal has to be either
a fill (like the circle shown here) or a symbol.
Because the Brush tool creates fills, you can use
the Brush to draw a freehand portal. (Strokes on
the mask layer have no effect.)

The oval can be any color you choose, since it won’t appear in the finished effect; instead, it’ll act as a see-through portal.

Chapter 4: Organizing Frames and Layers

www.it-ebooks.info

153

Spotlight
Effect Using
Mask Layers

Tip

Flash gives you a bunch of ways to create masks and masked layers (by right-clicking an existing layer,
and then choosing Mask or Masked, for example), but one thing doesn’t change: Masked layers have to appear
directly below mask layers in the Layers window for the effect to work. If you create a mask layer and a masked
layer in the wrong order, just drag the mask layer above the masked layer.

10. With the circle still selected, choose Modify→“Convert to Symbol” or press
F8.
A “Convert to Symbol” box appears. If you want to animate a mask with a motion tween, you need to use a symbol.
11. In the Name box, type Circle Mask . Choose Movie Clip for type and then press
OK.
Now, the circle symbol on the stage is an instance of the Circle Mask movie
clip symbol.
12. Right-click Layer 2 and choose Create Motion Tween.
Layer 2 shows the blue motion tween highlight.
13. Move the playhead to Frame 20. Then, with the Select tool (V), drag the circle
to the lower-right corner of the stage (Figure 4-26).

Figure 4-26

In this example, you’re creating a simple tween in
Layer 2 so that the portal moves across the bitmap
image showing only a circle’s worth of image at any
one time (a spotlight effect). But you can create static
portals (masks), too. The simplest is a circle or a
square, but nice thick letters also make a compelling
effect.

154

Flash CS6: The Missing Manual

www.it-ebooks.info

14. Right-click the layer name (Layer 2) and then choose Show Masking from
the shortcut menu.

Spotlight
Effect Using
Mask Layers

With the mask in effect, everything in the photo is hidden except the portion
covered by the circle. Flash automatically locks both layers when you choose
Show Masking.
15. Press Return to test your animation.
The circle mask moves across the photo, revealing different portions of the
image, as shown in Figure 4-26.
You can animate your mask using the standard motion tween tricks described in
Chapter 3 and Chapter 8. For example, filmmakers sometimes use an iris effect,
where the visible part of an image shrinks down to a small circle. You can use the
X/Y properties to change the size of the mask symbol as it moves. Keep in mind
that before you can make changes to the mask’s properties, you need to unlock the
mask layer. When you click the padlock button to unlock the layer, Show Masking is
turned off, so you see the entire photo as well as the circle mask.

Chapter 4: Organizing Frames and Layers

www.it-ebooks.info

155

www.it-ebooks.info

chapter

Advanced Drawing
and Coloring

5

There’s a difference between using a pencil to create stick drawings and using a pencil
to create a carefully shaded portrait. Chapter 2 covered drawing basics, explaining
exactly how the Pencil, Pen, Brush, Line, and shape tools work. This chapter explains
how to use the tools in a more creative and nuanced manner. In real life—whether
you’re pounding out Flash animations for your boss or for your own personal website—you’re rarely going to be satisfied with a simple drawing. For each keyframe
of your animation, you’re going to want to start with a basic sketch and then play
with it, changing its color, moving a line here and there, adding a graphic element
or two, and repositioning it until it looks exactly the way you want it to look.
In this chapter, you’ll get more acquainted with Flash’s selection tools—the tools you
use to tell Flash which specific part of a drawing you want to change. Then you’ll
apply Flash’s editing tools from basic (copying, pasting, and moving) to advanced
(scaling, rotating, stacking, grouping, and more). You’ll also do more with color in
Flash drawings than you saw in Chapter 2. After a quick background in color theory,
this chapter covers applying color effects like brightness and transparency, and even
creating custom colors. The chapter wraps up with some special tools that let you
create complex patterns with a click of your mouse.

Selecting Graphic Elements
With few exceptions, before you can modify an object on the stage, you first have
to select the object. It’s the same in a word processor, where you have to highlight
a word with your cursor before you can edit or delete it. Since Flash deals with more
complex objects than words, it gives you a variety of selection tools for different

157

www.it-ebooks.info

Selecting
Graphic
Elements

purposes. The Tools panel (Figure 5-1) has three different selection tools. Each is
good for selecting a different type of objects.

Figure 5-1

Selection

Subselection

Lasso

Flash gives you three different ways to select the strokes, fills, bitmaps, symbols, and other
graphic elements that make up your images: Selection, Subselection, and Lasso. By the way,
you can adjust the width of the Tools panel to your liking by dragging the panel’s edge to
resize it. Here two columns of tools are shown.

There are a couple of exceptions to this rule: specifically, modifying fill color using
the Paint Bucket tool (page 87) and reshaping lines and curves using the Selection
tool (next page). But in general, you need to select stuff in Flash before you can
work with it.
Tip

To select everything on the stage, choose Edit→Select All or use the shortcut key Ctrl+A (⌘-A).

• Selection. The black arrow selects entire strokes, fills, shapes, and objects
(like bitmaps and symbols), as well as individual portions of those strokes, fills,
shapes, and objects.
• Subselection. The white arrow lets you select the individual points that make
up lines and curves.
• Lasso. This tool, which looks like a miniature lasso, is great for selecting groups
of objects, oddly shaped objects, or portions of objects. When objects are close
together on the stage, you can use the lasso to carefully select around them.
The following sections describe each of these tools in detail.

158

Flash CS6: The Missing Manual

www.it-ebooks.info

Note

The selection tools behave differently depending on whether you’ve drawn your objects on the stage
using object drawing mode or chosen to stick with merge drawing mode (which Flash assumes you want until
you tell it differently). See page 55 for a rundown on the two drawing modes.

Selecting
Graphic
Elements

The Selection Tool
The aptly named Selection tool (V) is the workhorse of Flash’s selection tools; with
it, you can select individual graphic elements like strokes, fills, shapes, symbols, text
blocks, and grouped objects. You can also use the Selection tool to select a portion
of any object, as shown in Figure 5-2, or to move or reshape an object (a process
sometimes referred to as transforming an object).

Selection tool

Figure 5-2

Using the Selection tool is the
easiest way to select just about
any object, whether it’s a shape,
a stroke, a bitmap, a fill, or a
text block. To use the Selection
tool: In the Tools panel, click the
tool; then, on the stage, click
the object you want to select. To
select groups of objects, you have
a choice: You can either Shift-click
each object, or click outside the
group and then drag until Flash
displays a selection box around
your group.

Selecting a graphic element
The most common thing you’re going to want to do with the Selection tool is select
an entire graphic element—a circle, a line, a block of text, a bitmap, a hand-drawn
kangaroo—so that you can apply color to it, copy it, skew it, or make some other
modification to it.
Note

To deselect a selected object (regardless of which tool you used to select it), simply click any blank
spot on the stage or press Ctrl+Shift+A (Shift-⌘-A).

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

159

Selecting
Graphic
Elements

To select an entire graphic element (or group of elements) using the Selection tool:
1. In the Tools panel, click the Selection tool.
Flash highlights the Selection tool, and Selection tool–specific options appear
in the Options section at the bottom of the Tools panel (Figure 5-3).
2. Either click the object you want to select, or (best for lines and groups of
­objects) click near the object, and then drag your cursor until the selection
box surrounds the object.

Figure 5-3

Flash displays a selection
box around selected
­objects (like the circle
and rectangle shown
here), symbols, and text
blocks to let you know
you’ve successfully
selected them. When
you’re using the Selection tool, you see special
options at the bottom
of the Tools panel. For
example, the magnet
button toggles the
“Snap to Objects” option
described on page 192.

Tip

You can also select more than one object with the Selection tool. Select the first object, and then Shiftclick each additional object you want to select.

Flash highlights the selected object—either by displaying a selection box around
the object as shown on the left in Figure 5-4 or by covering the selected area
with the selection pattern shown on the right. Either way, the Properties panel
changes to reflect the object you’ve selected.
Note When you select a straight line or a rectangular object, you may find it tough to see the selection
box because Flash draws it so closely around the line that it almost looks like part of the line itself. A quick look
at the Properties panel will tell you what is selected.

With the object selected, you can make any modifications you want to the object
using the main menu options, Flash’s Color or Transform tools (pages 84 and 109),
or any of the panels, like the Properties panel.

160

Flash CS6: The Missing Manual

www.it-ebooks.info

Note

If you use the Selection tool to select an ungrouped line or shape, Flash displays the Straighten and
Smooth options (check out the Options section of the Tools panel). These options let you tweak your lines and
shapes—useful if you’ve got a shape almost the way you want it, but not quite (and you don’t want to have to
start over and redraw the whole thing). To incrementally straighten a curved line, with the line selected, click
the Straighten option. To incrementally turn a series of straight-line angles into a curve, with the line selected,
click the Smooth option.

Selecting
Graphic
Elements

Figure 5-4

Grouped shapes and ungrouped shapes behave differently when it comes to selection
tools. They even look different when you
select them. The circle here is a selected
grouped shape; it shows a marquee. The
rectangle is a selected ungrouped shape; it
shows the dotted highlight pattern on the
selected portions.

Selected grouped
shape

Selected ungrouped
shape

Selecting part of a shape or object
Here’s yet another case when shapes drawn in object drawing mode behave differently from shapes drawn in merge mode. Select a shape created in object drawing
mode and it’s an all-or-nothing deal. Flash thinks of those shapes as a unit. However,
if you create a shape in merge mode, it’s easy to select just a portion of the shape. A
single click selects the fill or the stroke—maybe just a segment of the stroke. That’s
why shapes drawn in merge mode are sometimes called ungrouped shapes. Because
they’re ungrouped, you can select or carve a chunk off the shape. Maybe you want
to apply a gradient effect to a portion of the shape. Or maybe you want to sculpt
a complex shape from a rectangle or oval by removing bits and pieces. Using the
Selection tool, you can drag a rectangle anywhere over an ungrouped shape to tell
Flash to select just a portion.

So is it impossible to edit parts of a shape drawn in object mode? No, not at all.
Double-click a drawing object, and it opens for editing as an ungrouped shape. Other
objects on the stage are dimmed and unselectable. The Edit bar above the stage
lists “Drawing Object” to indicate that you’re editing a drawing object. To close the
object, click the scene name or the blue Back arrow in the Edit bar. The drawing
object closes, and no matter how you’ve changed its appearance, it still behaves as

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

161

Selecting
Graphic
Elements

a drawing object. For example, a single click selects the object, and the Properties
panel describes it as a drawing object.
Tip While it’s open for editing, you can cut a drawing object into two or more parts. You can even add a
separate, unconnected shape to the drawing. Once you’re through editing and the object is closed, Flash still
treats it as a single drawing object.

If you want, you can convert a drawing object into an ungrouped shape. Select the
shape, and then choose Modify→Ungroup. Flash gives you visual clues so you can
tell a grouped shape from an ungrouped shape, as shown in Figure 5-4. Your object
drawing becomes an ungrouped shape, as if it had been drawn in merge mode. You
can confirm this by selecting the shape and checking the Properties panel, where
it’s listed as a Shape.
Note

If you want to select a free-form portion of an object–for example, you’ve drawn a jungle scene and
you want to cut the shape of a baboon’s head out of it–you need the Lasso tool (page 62). The Selection tool lets
you select only a rectangular shape.

To select just a portion of an ungrouped shape using the Selection tool:
1. In the Tools panel, click the Selection tool.
Flash highlights the Selection tool.
2. Click near the object, and then drag your cursor until the selection box
surrounds just the portion of the ungrouped object you want to select
(Figure 5-5).
When you let go of the mouse, Flash highlights the selected portion of the
object, as shown in Figure 5-5.

Figure 5-5

The Selection tool lets you select using only a rectangular selection box. You can make it a large
rectangle or a small one, but it’s still a rectangle. If you need to select an irregular portion of an
object, then you need the Lasso tool. If Flash insists on selecting the entire shape (or bitmap)
when all you want to do is select a piece of it, then ungroup the shape (or break apart the
bitmap).

162

Flash CS6: The Missing Manual

www.it-ebooks.info

Note

To select a portion of a grouped shape or a drawing object, you need to ungroup it first
(Modify→Ungroup). To select a portion of a bitmap (like a photograph), you need to break it apart first
(Modify→Break Apart).

Selecting
Graphic
Elements

Moving and reshaping (transforming) with the Selection
tool
The Selection tool does more than just select objects. It also moves and reshapes,
or transforms, them. This is great—as long as you know what to expect. (Many’s the
budding Flashionado who’s sat down to select part of an image and been totally
dismayed when the object suddenly, inexplicably, developed a barnacle-like bulge.)
Note

Whether or not Flash treats your shape as a single cohesive entity or independent elements depends
on whether you drew that shape in object or merge drawing mode, as explained on page 161.

Here’s how it works: If you click the Selection tool and then position your cursor
directly over an unselected fill or stroke, Flash displays, next to your cursor, one of
three icons: a cross with arrowheads, a curve, or an angle.
• Moving (cross with arrowheads). The cross with arrowheads (Figure 5-6) tells
you that you can drag the selected object to move it.

Figure 5-6

The cross with arrowheads shown here tells you that
if you drag this fill, you can move it across the stage.
Release the mouse when the object is where you want it.

• Reshaping (curve). When you see the curve icon shown in Figure 5-7, dragging
reshapes the stroke or edge beneath your cursor (in other words, it lets you
add or modify a curve).
• Reshaping (angle). Dragging the angle icon (Figure 5-8) lets you reshape one
of the corners of your object.

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

163

Selecting
Graphic
Elements

Tip

To add an angle rather than a curve, when you see the curve icon, press Alt (Option) before dragging.

Figure 5-7

When you see the curve
icon (top), you can drag
to pull the line in any direction you like (middle).
Releasing the mouse
finishes the modification
(bottom).

Figure 5-8

When you mouse over an object’s corner and see the angle icon shown here,
dragging lets you pull the corner in any direction to reshape it. Releasing the mouse finishes the modification. Here the upper-right corner of a
rectangle is being reshaped.

The Subselection Tool
When you want to modify the individual points and segments that make up your
shapes, use the Subselection tool: the white arrow in the Tools panel.
Click a stroke or the edge of a fill with the Subselection tool, and you see the anchor
points that define the stroke or shape. To change the stroke or shape, drag one of
the anchor points. To adjust a curved line segment, click an anchor point adjacent
to the curve, and you see control handles connected to the anchor. These control
handles work like the ones used with the Pen tool (page 68). To change a curve,
drag a control handle, and the curve changes its path. You can move a fill or stroke
using the Subselection tool—just make sure you don’t click on an anchor point. The
cursor shows a hollow square when it’s over an anchor point and a solid square
when it’s over a line segment.
To use the Subselection tool to move an object:
1. In the Tools panel, click the Subselection tool (Figure 5-9).
Flash highlights the Subselection tool, and the cursor becomes a white arrow.

164

Flash CS6: The Missing Manual

www.it-ebooks.info

2. Click the object you want to modify (or click near the object, and then drag
your cursor until the selection box surrounds the object).

Selecting
Graphic
Elements

Flash redisplays the object as a series of segments and selectable points.
3. Mouse over any of the line segments in the object.
The cursor displays a black square when it is over a line segment but displays
a hollow square when it is over an anchor point.
4. While the cursor displays a black square, click and drag to move the object.
When you’re satisfied, let go of the mouse.
Flash displays your moved object.

Figure 5-9

If you click the Subselection tool and then click
an object you’ve created using any drawing
tool (Pen, Pencil, Brush, Line, or shape), Flash
redisplays the line as a series of segments and
points. Click any segment (the cursor displays a
tiny black square as you mouse over a segment),
and Flash lets you move the entire object. Click
a point (a hollow square) instead, and Flash lets
you change the object’s shape.

To use the Subselection tool to move an anchor point (and, by association, the segments attached to that point):
1. In the Tools panel, click the Subselection tool.
Flash highlights the Subselection tool.
2. Click the object you want to work with (or click near the object, and then
drag your cursor until the selection box surrounds the object).
Flash redisplays the object as a series of segments and selectable points.
3. Mouse over the point you want to modify.
Flash displays a hollow square.
4. Drag the anchor point to reshape your object. When you’re satisfied, let go
of the mouse.
Flash displays your modified object. You can see an example in Figure 5-10.

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

165

Selecting
Graphic
Elements

Tip

If the anchor point defines a curve (in other words, if you see a hollow square at the end of a curved
line), clicking the point tells Flash to display control handles that define the curve. You can drag one of the control
handles to adjust the curve. To convert a straight line segment to a curve, hold the Subselection tool over an
anchor point and then press Alt (Option), and you can drag a control handle from the anchor point. Use the new
control handles to form the curve.

Figure 5-10

Left: You know your
mouse is over a selectable
point when you see the
hollow square next to
your cursor.
Middle: Drag the point in
any direction to reshape
your object.
Right: When you let go of
the mouse, Flash displays
your transformed object.

The Lasso Tool
Sometimes a rectangular selection just can’t encompass the objects you want to
select. Say you want to select an irregular shape inside an oval so you can recolor
it or remove it. Or perhaps your stage is so jam-packed with images that you can’t
select the image you want with the Selection tool without inadvertently selecting
parts of images you don’t want. Those situations call for the Lasso tool (L). Draw
a line around your selection with the Lasso tool and you can grab it, as shown in
Figure 5-11. The lasso has two modes—freehand mode and polygon mode. You’ll
learn how to use both here.
Tip

As explained earlier in this chapter (page 161), you can only select portions of ungrouped shapes. If it’s
a drawing object, then double-click the object to open it for editing, or convert it to an ungrouped shape with
Modify→Ungroup.
Freehand selecting with the Lasso
Depending on how steady your hands are, drawing a freehand lasso around an object
(or around the portion of an object you want to select) is the quickest way to select
what you want. Straight out of the box, this is how the Lasso works.

166

Flash CS6: The Missing Manual

www.it-ebooks.info

To use the Lasso tool to select objects (and portions of objects) freehand:
1. In the Tools panel, click the Lasso tool (Figure 5-11, left).

Selecting
Graphic
Elements

Flash highlights the Lasso tool, and in the Options section of the Tools panel,
the Lasso-related options appear.

Figure 5-11

Use the Lasso tool when you want to select an irregular shape. With
the Lasso, you draw a line around the objects or parts that you want
to select. Then you can modify, move, or remove the selection.

2. Click near the object you want to select, and then drag your mouse to encircle the object.
Figure 5-12 (right) shows you an example.
3. When you’ve completely encircled your object, let go of the mouse button.
Flash selects everything inside the loop you drew with the Lasso tool.
Tip You can have a tricky time drawing a precise loop using the Lasso, especially if you’re using a mouse
instead of a graphics tablet. Fortunately, Flash has got your back; if you don’t completely close the loop, Flash
closes it for you, using a straight line. If this action isn’t what you want, just select Edit→Undo Lasso, and then
start over. If you’re still having trouble, try using the Zoom tool to enlarge the stage, or try the Lasso’s polygon
mode, described in the following section.

Polygon selecting with the Lasso
The Lasso is great for those irregular shapes, but sometimes you may want to outline
your selection with straight lines.

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

167

Selecting
Graphic
Elements

In these cases, freehand just doesn’t cut it; one slip, and you have to start over. You’re
better off taking advantage of the Lasso tool’s polygon mode, which lets you click
to surround an area. (Flash takes care of filling in the straight lines between your
clicks so you don’t have to.)

Figure 5-12

The Lasso tool has two modes,
polygon and freehand. To use polygon
mode with its straight lines, click the
polygon mode button in the options
section of the Tools panel.

Polygon Mode
option button

Polygon mode

Freehand mode

To use the Lasso tool to select objects (and portions of objects) by pointing and
clicking:
1. In the Tools panel, click the Lasso tool.
Flash highlights the Lasso tool. In the options section of the Tools panel, the
Lasso-related options appear.
2. Click the polygon mode option (Figure 5-12). Then, using a series of clicks,
enclose the object you want to select.
Flash automatically connects your clicks with straight-line segments.
3. Double-click to complete your selection.
Flash selects everything inside the loop you drew with the Lasso tool.
Combining freehand and polygon modes
Just because you start out in freehand or polygon mode doesn’t mean you’re stuck
with it for the entire selection. For example, you can start off your selection in freehand mode by dragging the mouse to trace lines. Then, hold down the Alt (Option)
key to switch to polygon mode. Continue your selection by clicking on points to
create straight lines. Double-click when you’re ready to finish off your selection, and
Flash draws the last straight line to connect the beginning and end points.

168

Flash CS6: The Missing Manual

www.it-ebooks.info

Tip

You may find that the Lasso—especially in polygon mode—doesn’t want to quit when you do. In other
words, when you go to use the main menu or a panel or another drawing tool, you find you can’t because Flash
keeps insisting that you need to keep lassoing. The best way to get rid of a sticky Lasso is to double-click and
then press Ctrl+Shift+A (Shift-⌘-A) to deselect all.

Selecting
Graphic
Elements

Selecting ranges of color in bitmaps with the Magic Wand
Flash treats bitmaps—for example, photos in the JPEG format—differently from the
way it treats the shapes you create using its drawing tools. And if you take a look
at Figure 5-13, you’ll see why.

Figure 5-13

Top: The drawing is clearly
composed of three shapes,
each of which you can click to
select separately.
Bottom: The bitmap image
is much more complex, with
no easily identifiable shape
outlines. When you click
to select the image on the
bottom, Flash highlights the
entire rectangular image; it
makes no distinction among
the colors and shapes inside.

While you can’t manipulate bitmaps in Flash anywhere near as easily or as completely
as you can manipulate the shapes and lines you draw directly onto the stage, Flash

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

169

Manipulating
Graphic
Elements

does have a special tool specifically for selecting ranges of colors in bitmaps: the
Magic Wand. After you select color ranges, you can then recolor them or cut them
out of the bitmap completely.
To select color ranges in a bitmap using the Magic Wand:
1. On the stage, select the bitmap you want to work with.
Flash displays a light-colored border around the selected bitmap.
2. Choose Modify→Break Apart.
Flash redisplays the bitmap as a selected fill.
3. From the Tools panel, select the Lasso. Then, in the Options section at the
bottom of the Tools panel, click the Magic Wand (Figure 5-14, top).
As you mouse over the bitmap, your cursor turns into a tiny magic wand.
4. Click the bitmap to select a color range.
Flash highlights bits of selected color.
5. Click the bitmap again (click a similarly colored area).
Flash highlights the bits of color that match your selection. You can modify
the highlighted bits of fill color as you go (cut them, recolor them using the
­Eyedropper tool described on page 211, and so on), or continue to click the
bitmap as you did in step 4 to add to the selection.
In Figure 5-14 (bottom), the designer first selected, and then cut (Edit→Cut), the
pixels, the start of turning a foggy sky to blue.

Manipulating Graphic Elements
Flash gives you a gazillion tools to modify the drawings that make up your animations. You can stack, rearrange, and reposition each individual graphic element,
transform (shrink and squish) them, move them, apply color effects, and more until
you’re completely satisfied with the way they look. It’s a cliché, but it’s true: When it
comes to drawing in Flash, you’re pretty much limited only by your imagination. This
section acquaints you with the most powerful tools Flash has for modifying the lines,
shapes, bitmaps, symbols, and other graphic elements you add to your drawings.

Modifying Object Properties
Flash’s Properties panel is a beautiful thing. Select any element on the stage, and
the Properties panel responds by displaying all the characteristics, or properties,
that you can change about that element.
In Figure 5-15, for example, you see several graphic elements on the stage: a brushdrawn squiggle (fill), a bitmap of a ship, a block of text, and a star. When you select
the star, the Properties panel shows all the properties associated with the star: the

170

Flash CS6: The Missing Manual

www.it-ebooks.info

color, width, and type of outline; the fill color; and so on. When you select the text,
the Properties panel changes to reflect only text properties.

Manipulating
Graphic
Elements

Figure 5-14

Top: The first time you click the Magic Wand, Flash
notes the color you choose.
Middle: The second (and subsequent) times you
click the Magic Wand, Flash selects the bits of color
nearby that match your first selection. Selecting
colored areas of bitmaps with the Magic Wand can
be slow going. Don’t expect the precision you enjoy
when you’re working with primitive shapes, like
squares and circles. Still, depending on the effect
you’re after, the Magic Wand can be useful.
Bottom: Here most of the background was selected
with the Magic Wand tool and primed for repainting.

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

171

Manipulating
Graphic
Elements

Select a shape, and you can change the properties for the fill and stroke. If it’s a
merge mode graphic, you can select the fill and stroke independently. If it’s an object mode graphic, the fill and stroke are both selected with a single click. In either
case, the properties for the selection appear in the Properties panel. For example,
you can change the color, the thickness, and the style of a stroke. Select the fill, and
you can change the color, the opacity (alpha), or the gradient. These color options
are explained on pages 198 and 206.

Figure 5-15

Selecting an object tells
Flash to display that object’s properties right there
in the Properties panel.
Here the star shape is
selected, so the properties
all relate to the star. As long
as the property isn’t grayed
out, you can change it in
the Properties panel.

Moving, Cutting, Pasting, and Copying
After you have an object on the stage, you can move it around, cut it (delete it),
paste it somewhere else, or make copies of it.
Tip

All the things you can do to an object—cutting, pasting, copying, and moving—you can also do to a
piece of an object. Instead of selecting the entire object, just select whatever portion of the object you want to
work with, and then go from there.
Moving graphics
To move an object, simply select it (page 61), and then drag it around the stage.
Figure 5-16 shows an example of using the Selection tool to select a group of objects,
and then move them together.
Cutting graphics
To cut an object, select the object (page 61), and then choose Edit→Cut. Flash deletes
the object from the stage and turns on the Paste functions.
Note

Choosing Edit→Clear deletes the selected object, too, but doesn’t turn on the Paste functions. In
other words, after you choose Edit→Clear, it’s gone, baby, gone (unless you quickly choose Edit→Undo Delete).

172

Flash CS6: The Missing Manual

www.it-ebooks.info

Copying graphics
To copy an object, select the object (page 61), and then choose Edit→Copy. Flash
leaves the object on the stage and turns on the Paste functions (see the next section).

Manipulating
Graphic
Elements

Tip You can perform a quick copy-and-paste operation by selecting an object and then choosing
Edit→Duplicate. Flash displays a movable copy of the selected object just above the selected object. For even
faster duplication, press Alt (Option) as you drag the object.

Figure 5-16

Top: After you select an object or
a group of objects…
Bottom: …you can move your
selection simply by dragging
your cursor.

Pasting graphics
To paste an object that you’ve either cut or copied, choose one of the following:

• Edit→Paste in Center. This tells Flash to paste the cut (or copied) object smack
in the middle of the stage’s visible area, on top of any other image that happens to be there.

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

173

Manipulating
Graphic
Elements

• Edit→Paste in Place. This tells Flash to replace the cut object, or to put the
copied object square on top of the original. This command is especially useful
when you want to move an object from one frame to another and place it in
exactly the same position in the new frame.
Tip For many Flash designers, the quickest way to cut, copy, and paste objects is to right-click (Control-click)
the stage and then choose the command off the shortcut menu.

Transforming Objects
In the graphics world, transforming an object doesn’t just mean changing the object;
transforming means applying very specific shape and size changes to the object.
These changes—called transforms—include some fun tricks:
• Scaling. Among graphic designers, scaling means shrinking or enlarging a
selected shape based on its width, height, or both.
• Rotating. You can rotate (turn) an object as far as you want, in any direction.
• Skewing. A limited kind of distortion, skewing means slanting an object either
horizontally or vertically. For example, italic text appears skewed when compared to regular text.
• Distorting and enveloping. You distort an object by pulling it out of shape—in
other words, by repositioning one or more of the object’s angles. The envelope
transform is similar, but it doesn’t preserve the lines of the shape the way distortion does; instead, it lets you pull any angle, line, or curve out of shape to
create fantastic effects.
• Flipping. Flipping an object creates a mirror image of the object. Flash has
commands for flipping both horizontally and vertically.
You have several choices when it comes to applying a transform to a selected object
(or group of objects):
• You can click the Free Transform tool (Figure 5-17), choose the appropriate
option from the Options section of the Tools panel, and then, on the stage,
drag your selection to apply the transform. This approach is described in the
following sections.
• You can open the Transform panel (Window→Transform) and then type information (for example, the number of degrees you want to rotate an object) directly
into the Transform panel.
• You can choose Modify→Transform, and then, from the pop-up menu that
appears, turn on the checkbox next to the transformation you want to apply.
• You can right-click an object and choose Transform from the shortcut menu.

174

Flash CS6: The Missing Manual

www.it-ebooks.info

Scaling objects
To resize a drawn object, first select the object on the stage, and then proceed as
follows:

Manipulating
Graphic
Elements

1. Select the Free Transform tool’s Scale option.
Black squares appear at the corners and sides of your selection.

Free Transform tool

Figure 5-17

Flash gives you three
different ways to apply
transforms: using the main
menu, the Transform panel,
or the Free Transform
tool. In the sections that
follow, you’ll see the Free
Transform tool in action.

2. Position your cursor over one of the black squares.
Your cursor turns into the double-headed scale arrow (Figure 5-18, top).
3. Drag to scale the selection.
As you drag outward, the selection gets larger; as you drag inward, the selection gets smaller. You can see an example of a scaled object at the bottom of
Figure 5-18.
Tip

You can use modifier keys to constrain objects as you scale them. For example, press Shift to lock the
proportions or press Alt (Option) to scale an object around its transformation point (indicated by a circle).

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

175

Manipulating
Graphic
Elements

Rotating objects
To rotate a drawn object around its axis, first select the object on the stage, and
then proceed as follows:

1. Select the Free Transform tool’s Rotate and Skew option.
Flash displays a black bounding box around your selection.

Figure 5-18

Top: Mousing over any
of the black squares
on the sides and at the
corners of your object
displays a scale arrow
(circled). By dragging a
square, you can scale an
object’s height, width, or
both. Notice that before
the scaling begins, the
Transform panel displays
the original width/height
dimensions as 100% and
100%.
Bottom: Flash automatically plugs the new
dimensions into the
Transform panel on the
bottom. Instead of dragging the object to scale it,
you can also type or scrub
the scale dimensions
into the Transform panel
yourself.

Scale Settings

2. Position your cursor over one of the black squares you see at the corners
of your selection.
Your cursor turns into a circular rotation arrow (Figure 5-19, top).

176

Flash CS6: The Missing Manual

www.it-ebooks.info

3. Drag to rotate the selection.
If you drag your cursor to the right, the entire selection rotates right; if you drag
your cursor to the left, the selection rotates to the left. There’s a rotated object
in Figure 5-19 (bottom). Shift-drag to make an object rotate 45 degrees at a
time. Alt-drag (Option-drag) to make your selection rotate around the anchor
point on the opposite side from the cursor.

Rotate setting

Transform tool

Manipulating
Graphic
Elements

Figure 5-19

Top: After you select the
Rotate and Skew option,
mousing over any of the
black squares at the corners
of your object displays a
rotation arrow. Notice that
before the rotation begins,
the Transform panel displays
the original rotation as
0.0%. Drag to rotate the
object on its center axis (its
transformation point).
Bottom: After you let go of
your mouse, Flash automatically records the rotation
degrees into the Transform
panel on the right. Instead
of dragging the object to
rotate it, you can also type
the degree of rotation into
the Transform panel yourself.

Tip

You can flip your objects, too, by using Modify→Transform→Flip Vertical and Modify→Transform→Flip
Horizontal. The effects are a little different from rotating, as explained in Figure 5-20.

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

177

Manipulating
Graphic
Elements

Skewing objects
To give your drawing a slanted shape, first select the object on the stage, and then
proceed as follows:

1. Select the Free Transform tool’s Rotate and Skew option.
Flash displays a black bounding box around your selection.

Figure 5-20

At first glance, the effects of the Flip Vertical and Flip Horizontal
commands seem similar to rotating an object by 180 degrees. You
notice the difference if your object contains text. For example, here
you can see that Rotate 180 degrees actually spins the two blocks,
whereas Flip Horizontal creates a mirror image.

2. Position your cursor over one of the lines of the bounding box, but avoid
the square handles.
When the cursor is over the bounding box lines, you see the skew arrow
(­Figure 5-21, top). If your cursor is over one of the bounding box handles, you
see the scale arrow.
3. Drag to skew the selection.
Dragging slants the selection along one of its axes (the one marked by the
skew arrow you clicked) in the direction you’re dragging. Figure 5-21 (bottom)
shows a skewed object. Alt-drag (Option-drag) to make the selected object
skew around the transformation point, which is usually the center.

178

Flash CS6: The Missing Manual

www.it-ebooks.info

Distorting objects
For more freedom than simple skewing, you can distort your drawn objects in any
way or direction:

Manipulating
Graphic
Elements

1. First, select the object you want to distort, and then select the Free Transform tool’s distort option (Figure 5-17).
Flash displays black squares around the sides and corners of your selection.
2. Position your cursor over one of the black squares.
Your cursor turns into a tailless distortion arrow (Figure 5-22, top).

Figure 5-21

Top: After you select the
Rotate and Skew option,
mousing over the bounding box lines displays a
skew arrow. Notice that
before the skew begins,
the Transform panel
shows the Skew radio
button turned off. Drag to
skew the object.

Skew settings

Transform

Bottom: After you let go
of your mouse, check the
Transform panel: Flash
automatically turns on
the Skew button and logs
the horizontal and vertical skew degrees. Instead
of dragging the object
to skew it, you can also
turn on the Skew button
and type the horizontal
and vertical skew degrees
into the Transform panel
yourself.

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

179

Manipulating
Graphic
Elements

3. Drag to distort the selection.
As you drag outward, the shape bulges outward; drag inward, and the shape
dents inward. Figure 5-22 (bottom) shows a distorted object.

Rotate and
Skew option

Skew settings

Transform

Figure 5-22

Top: After you select the
distort option, mousing
over any of the black
squares at the sides and
corners of your object displays a distortion arrow,
which you can drag to
distort the object. You can
drag as many distortion
points as you like.
Bottom: After you let
go of your mouse, Flash
displays the distorted
object.

Tip

Shift-dragging a corner point lets you taper a shape; that is, move that corner and the adjoining corner
apart from each other an equal distance.
Applying an envelope transform
As discussed on page 174, an envelope transform is the most radical distortion. It
gives you more distortion points than the regular Distort option, and also gives you

180

Flash CS6: The Missing Manual

www.it-ebooks.info

finer control over the points by letting you drag inward or outward to create rounded
bulges or dents (not just pointy ones). Here’s how to use the envelope distortion:

Manipulating
Graphic
Elements

1. Click the Free Transform tool.
The Free Transform options appear in the Options section of the Tools panel.
2. Select the object you want to distort.
Flash highlights the selected object with a black bounding box and tiny black
squares.
3. Click the envelope option.
The selected object appears surrounded by a series of black squares and circles.
4. Position your cursor over one of the black squares or circles (distortion
points).
Your cursor turns into a tailless distortion arrow.
5. Drag to pull the selection into a new shape (Figure 5-23).
You’ll notice that the envelope transform gives you a lot more distortion points
to choose from than the distort transform; it also gives you finer control over
the points you choose to distort (by dragging inward or outward).
You can see the results of modifying several distortion points in Figure 5-23.

Figure 5-23

This shape began life as a
square. The top and right
side were transformed using the Envelope option.
Mousing over any of the
black squares or circles
at the sides and corners
of your object displays a
distortion arrow. Drag to
reshape your object. The
squares remain attached
to the outline as you
drag. The circles are curve
control handles.

Moving and Rotating Objects in 3-D
Until Flash CS4 came along, it wasn’t easy to make an object look as if it were moving in three dimensions. For example, if you wanted to make an image look as if it
were traveling away from the viewer, about all you could do was move it slightly on
the stage and make it smaller. There was no real science to the effect; the best you

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

181

Manipulating
Graphic
Elements

could do was eyeball it. Creating a 3-D rotation effect was even more difficult. But
no more. Flash now has tools that automatically create exactly these two effects.
Next to the selection tools, there’s another tool that looks like a globe with some
circles drawn around it, shown in Figure 5-24. Press and hold that button, and you
find the two tools that turn the stage into a 3-D world. The globe lets you rotate
an object three-dimensionally, while the tool with three arrows lets you move an
object around in 3-D space.

Figure 5-24

Flash has two tools that let you move movie clip symbols in three dimensions. The tool that
looks like a globe rotates movie clips. The tool with the three arrows lets you move movie
clips in three dimensions.

One catch is that the object has to be a movie clip or a TLF text field. (For details
on text fields, see page 215.) This isn’t too much of a catch, because you can put
any object inside a movie clip—like your logo or some text—and then make it fly
and spin in 3-D. The other catch is a bit more limiting, since Flash’s drawing tools
create only two-dimensional images. For example, you can create squares but not
cubes, and circles but not spheres. The text tool creates only two-dimensional type,
not 3-D letters. But once these objects are placed inside movie clips, you can move
those movie clips around in three dimensions. It’s sort of like moving a photo of a
car around in 3-D space as opposed to moving a model car around the same space.
But even with those limitations, you can create some pretty snazzy effects.
Note Because the 3-D tools are relative newcomers to Flash, they won’t work if you choose the
A­ ctionScript 2.0 option (page 18), and they rely on Flash Player 10 or greater—an option you choose when you
publish your animation (page 667).

Rotating (transforming) objects three-dimensionally
The 3-D pros refer to rotating an object as transforming an object or a transformation. Here are the steps for rotating a movie clip in 3-D:

1. Select the object or group of objects you want to spin, and then press F8
to convert them into a movie clip symbol.
You can combine objects in a movie clip. For example, Figure 5-25 shows a
circle and text combined in one movie clip.
2. On the stage, select the movie clip, and then click the 3-D Rotation tool in
the Tools palette.

182

Flash CS6: The Missing Manual

www.it-ebooks.info

A globe-like image appears near the movie clip, made up of colored circles.
Each color represents a 3-D axis. The small circle in the center marks the point
around which the rotation happens.

Manipulating
Graphic
Elements

3. Drag the center point to change the point around which the rotation takes
place.
You can drag the center point to any location on the stage or even off the stage.

Figure 5-25

Use the transform tools to
rotate movie clip symbols in
three dimensions. The sphere
represents the directions you
can spin a selected object.
The object spins around
the transformation point
indicated by the small circle
at the center of the sphere.

4. Click one of the colored lines in the 3-D rotation tool to rotate the movie
clip along that axis.
As you hold the cursor over one of the colored axes, a tooltip appears indicating the axis around which the object will rotate. For example, move the cursor
near the green line and a Y appears on the cursor, meaning that the selected
object will rotate around the Y axis. You can think of the Y axis as a line that runs
from the top of the stage to the bottom. The red line in the sphere represents
the X axis, and the blue circle represents the Z axis, which you can think of as
a line running from the viewer back into the stage. The easiest way to get your
bearings is to experiment. Try the different options and click Undo (Ctrl+Z or
⌘-Z) if you don’t like the results. If you don’t want to be limited to spinning
along a standard XYZ axis, then drag the orange ring around the outside of
the other circles. That way, the object is free to follow your mouse movement
in any direction.

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

183

Manipulating
Graphic
Elements

Moving (translating) objects in three dimensions
The 3-D pros refer to moving an object in three dimensions as translating an object
or a translation. Here are the steps for moving a movie clip in 3-D:

1. On the stage, select the movie clip you want to move in 3-D.
Make sure the object you want to move is a movie clip symbol. If not, press F8
to make it into one.
2. In the Tools palette, click and hold the button for 3-D rotation tools, and
then choose the 3D Translation tool from the menu.
In the tools panel, the 3D Translation tool looks like three arrows pointing in
different directions. After you click the button, a 3-D translation icon appears
over the selected movie clip on the stage. The 3D Translation icon looks like a
red and green arrow protruding from a large dot. As shown in Figure 5-26, each
arrow is a different color to represent an axis along which the movie clip can be
moved. Green moves the object vertically (the Y axis). Red moves it horizontally
(the X axis). The big black dot represents the Z axis.

Figure 5-26

The 3D Translation tool
lets you move movie clips
along the X, Y, or Z axes
on the stage. Drag along
one of the colored arrows
representing each of the
axes. Here the object is
being dragged along the
Z axis, which makes it
smaller as it moves away
from the viewer.

3. Drag one of the colored arrowheads or the dot to move the movie clip along
that axis.
When you hold the cursor over one of the arrowheads or the dot, a tooltip appears indicating the direction of the axis: X, Y, or Z. In addition to using the 3D
Translation tool, you can also use the Properties panel to move objects along
the three axes (Figure 5-27). Select the movie clip you want to position, and
then use the "3D Position and View" X, Y, and Z settings to move it around the
stage. Click a setting and type a number, or drag to scrub in a number.

184

Flash CS6: The Missing Manual

www.it-ebooks.info

Adjusting the perspective and vanishing point in 3-D
You can set two 3-D properties in the Properties panel: Perspective and Vanishing
Point (Figure 5-28). Choosing a perspective setting is similar to choosing a lens for
your camera. Flash starts you off at 55, a “normal” point of view similar to a 55 mm
lens on a camera. Set the number higher, and it’s like you’re zooming in or attaching
a telephoto lens. Choose a lower setting, and it’s as if you attached a wide-angle
lens. You can add some creative distortion to your images using the Perspective
setting, along with some of the other 3-D tools.

Manipulating
Graphic
Elements

Figure 5-27

Use the “3D Position and View” panel to dial in
numbers for the perfect 3-D view. You can adjust
the position, the perspective, and the vanishing
point for objects on the stage.

Think back to your art class days when you learned how to add a vanishing point
to your drawings to help you draw in perspective. The vanishing point is that place
way off in the distance where all parallel lines seem to converge. In Flash, you can
move the vanishing point around in your animation using the X/Y settings in the
Properties panel (Figure 5-28).
Note

You can add these same 3-D effects to your motion tweens when you use the Motion Editor. For the
details, see page 311.

Stacking Objects
In Chapter 4, you learned how to stack objects to create composite drawings using
layers. But you don’t need layers to place one item on top of another. You can overlap two or more objects on the same layer, but there are a few issues to consider:
• You can’t stack ungrouped shapes, which includes any lines and fills you’ve
created in merge mode, because the cookie cutter effect takes place. See the
box on page 188 for details.

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

185

Manipulating
Graphic
Elements

• Objects drawn in merge mode always appear below objects drawn in object
mode.
• If you try to tween two objects that aren’t grouped or enclosed in a single
symbol, you get unexpected results.

Figure 5-28

The icon for setting the
perspective looks like a
camera because it’s similar
to changing camera lenses
between normal, telephoto,
and wide angle. Use the X/Y
Vanishing Point settings to
position the vanishing point
in your animation.

Vanishing
point

Perspective
setting

Vanishing point
setting

The instant you create two or more overlapping object drawings on the stage,
though, you need to think about stacking, or arranging them. Stacking tells Flash
which object you want to appear in front of the other.
In Figure 5-29, for example, you see three object drawings: a rectangle, a circle, and
a star. They were drawn in object mode in that order, so Flash stacks them one on
top of the other with the rectangle first, then the circle on top of the rectangle, and
the star at the top of the stack. Flash keeps track of the stacking order even if the
shapes aren’t overlapping one another. So, when you drag the rectangle and drop
it on top of the star, Flash displays the rectangle behind the star. Then, when you
drag the circle and drop it on top of both the rectangle and the star, Flash displays
the circle behind the star, but in front of the rectangle, as shown in Figure 5-29. If
that’s the effect you want, great; if not, you can change the stacking order of all
three shapes.
To stack objects on the stage:
1. Select the object you want to rearrange (either to push behind or pull in
front of another object).
In Figure 5-30, the circle is selected.

186

Flash CS6: The Missing Manual

www.it-ebooks.info

2. Choose Modify→Arrange, and then, from the submenu, change the object’s
stacking order.

Manipulating
Graphic
Elements

Figure 5-29

Stacking isn’t an issue when your objects don’t touch one another. The instant you
drag one object on top of another, though, you have to decide which object you
want to appear in front, and which behind.

Figure 5-30

When you create shapes in object mode,
Flash puts the first shape at the back of
the stack, and places each new shape at
the front of the stack. Ungrouped (merge
mode) objects are an exception to the
rule. Ungrouped objects are always placed
behind object drawings. See the box on
page 188 for more details.

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

187

Manipulating
Graphic
Elements

Here are your options:
• Bring to Front. Pulls the selected object all the way forward until it’s on
top of all the other objects.
• Bring Forward. Pulls the selected object forward one position, in front of
just one other object.
• Send Backward. Pushes the object back one position, behind just one
other object.
• Send to Back. Pushes the selected object all the way back, until it’s behind
all the other stacked objects.
Tip To quickly move a selected object forward and backward, use Ctrl+up arrow or Ctrl+down arrow (­⌘-up
arrow and ⌘-down arrow). Ctrl+Shift+up arrow (Shift-Option-up arrow) brings the selected object all the way
to the front and Ctrl+Shift+down arrow (Shift-Option-down arrow) sends it all the way to the back.

Workaround Workshop

Safety in Groups
If you plan to move your graphic elements around a lot—stack
them, unstack them, and reposition them on the stage—you
can make your life easier by putting them in groups. In general,
groups behave more like objects drawn in object mode. A group
can contain any number of objects, from a simple shape with a
stroke to complex shapes like a car or a city background scene
with buildings, trees, and fire hydrants. Groups can include
text fields and just about anything that’s visible on the stage.
If you want to edit the individual elements, you can open the
group with a double-click. When you’re done editing, close it
using the buttons on the Edit bar.

parts inside a group, you can move the car around the stage as
a single object. All the pieces of the car maintain their positions
relative to one another, and you don’t have to worry about
accidentally dragging a wheel or some other part away from
the group. As a bonus, you can arrange the stacking order of
groups on the stage using the Modify→Arrange commands
like “Bring Forward” or “Send to Back.” That way, the car can
drive behind some buildings and in front of others. Perhaps the
best thing about groups is that they give you a way to manage
fewer objects when your animation is filled with hundreds of
individual fills, strokes, and other elements.

Suppose you’ve drawn a car made up of different parts: spinning wheels, fenders, and a windshield. If you place all those

Figure 5-31 shows you an example of choosing Bring Forward with the circle selected.
If you've drawn shapes in merge mode, there's a way to make them behave like object
drawings when you stack them: The trick is to group them. Select the fill, stroke, and
anything else you want to include in a group. Then choose Modify→Group (Ctrl+G or
⌘-G). The selected objects are now part of a group that you can position using commands like Bring Forward or “Send to Back.” For details, see the box on page 188.

188

Flash CS6: The Missing Manual

www.it-ebooks.info

Converting Strokes to Fills
As you saw in Chapter 2 (page 55), Flash treats lines and fills differently when you’re
working in merge drawing mode. For example, take a look at Figure 5-32, which
shows a line drawn with the Pencil and a line drawn with the Brush.

Manipulating
Graphic
Elements

Figure 5-31

To restack an object, you
first need to select it.
Here you see the circle
selected. Choosing Bring
Forward will bring
the circle forward one
position, placing it on top
of the star. The “Bring
to Front” and “Send to
Back” commands give
you a quick way to move
objects to the top or
bottom of the stack.

If you click the Selection tool and then click to select the Pencil-drawn line, Flash
highlights just one segment of the line. But performing the very same operation on
the similar-looking Brush-drawn line selects the entire line.
When you convert a line into a fill, Flash lets you interact with the line just as you
would with any other fill. This technique is especially useful when you’re working
with shapes, no matter which drawing mode you’re using. That’s because when you
create a shape using one of Flash’s shape tools—a star, say, or a circle—Flash actually
creates two separate elements: the inside of the shape (a fill), and the outline of the
shape (a stroke). If you want to change the color of the entire shape, you need to use
two tools: the Paint Bucket tool (which lets you change the color of fills), and the Ink
Bottle tool (which lets you change the color of strokes, or add a stroke to an existing
fill). When you convert the outline to a fill, Flash lets you manipulate both the outside
and the inside of the shape in the same way using the same tools. Converting also
lets you create scalable shapes (images that shrink evenly) and nice, straight corners
(thick strokes appear rounded at the corners; thick fills shaped like lines don’t).
To convert a line into a fill:
1. Select the line (or outline) you want to convert into a fill.
Flash highlights the selected line.

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

189

Manipulating
Graphic
Elements

2. Choose Modify→Shape→“Convert Lines to Fills.”
Flash redisplays the line as a fill, and the Properties panel changes to display
fill-related properties (as opposed to line-related properties).

Figure 5-32

Top: When you’re working with ungrouped objects (which is what you create in merge
drawing mode), the Selection tool behaves differently. Here you see the results of clicking
the Pencil-drawn line: Flash selects only a portion of the line (a single stroke).
Bottom: Clicking the Brush-drawn line, on the other hand, selects the entire line. This
behavior is just one example of how Flash treats strokes and fills differently.

Aligning Objects
In Chapter 2 (page 50), you saw how to use Flash’s grid, guides, and rulers to help
you eyeball the position of objects as you drag them around on the stage. You also
saw how to use the Alignment panel to line up objects with respect to one another
or to one of the edges of the stage.
Both these approaches are useful—but Flash doesn’t stop there. Snapping and guide
layers give you even more control over where you place your objects with respect
to one another on the stage.
Snapping
Snapping is one of those features people seem to love or hate. The key to snapping is to turn it on when you need consistent alignment and to turn it off when it
cramps your style. Here’s how it works: When you turn snapping on, you tell Flash
to help you out when you’re positioning objects on the stage. Snapping helps in a

190

Flash CS6: The Missing Manual

www.it-ebooks.info

few ways. For one, it provides guidelines when elements are aligned. And, it makes
items snap into place when they’re close. You don’t have to be a mouse marksman.

Manipulating
Graphic
Elements

For example, in Figure 5-33, you see an oval being dragged across the stage. Because
Snap Align is turned on, Flash displays a dashed line (top) when the circle is dragged
so that one or more of its edges is aligned with another object in your animation.
Snapping also creates a snapping point at the point clicked or, if you click close to
the center of an object, in its center.

Figure 5-33

Top: When you turn on snapping, Flash gives
you a visual cue when you drag an object
close to alignment. Here Snap Align is turned
on, so Flash displays a dashed line when the
edges of the circle are aligned with the edges
of the stroke. You tell Flash how close is close
enough using the Horizontal and Vertical
Object Spacing fields of the Edit Snapping
window, which you display by choosing
View→Snapping→Edit Snapping, and then,
in the Edit Snapping window that appears,
clicking Advanced.
Bottom: In this example, “Snap to Objects”
is turned on, too. The point where the oval
is clicked shows a circle; when that point is
close to the stroke, the circle gets larger and
bolder. Let go of the mouse button and the
oval snaps into place.

Tip

For snapping to work, you can’t speed around the stage; if you do, you’ll miss Flash’s cues. Instead, drag
your objects slowly.

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

191

Manipulating
Graphic
Elements

To turn on snapping, select View→Snapping, and then, from the shortcut menu that
appears, choose from the following:
• Snap Align. Displays a dashed line when you drag an object within a certain
number of pixels (you see how to change this number in the box on this page)
of another object or of any edge of the stage.
• Snap to Grid. Displays a small, thick circle where you select an object. This point
snaps to points in the grid. See page 51 for details about displaying a grid. If
you click near the center, Snap assumes you meant to select the center of the
object, so that’s where it places puts the circle snapping point.
• Snap to Guides. Works similarly to Snap to Grid except that the snapping action
works with guides that you drag out from the rulers and place individually. For
more on guides, see page 50.
• Snap to Pixels. Useful only if you want to work at the single-pixel level (your
stage has to be magnified to at least 400% for this option to work). This option
prevents you from moving an object in any increment less than a whole pixel.
(To magnify your stage by 400%, select View→Magnification→400%; when you
do this with “Snap to Pixels” selected, a single-pixel grid appears.)

Frequently Asked Question

Object Snapping: How Close Is Too Close?
Everybody says Snap Align is so great, but I’m not sure why I’d
use it or how close I should set the snapping range.

Initially, Flash has all the Snap Align settings set to 0. To change
either of these buffer zones:

Whether or not you’ll find Snap Align useful depends entirely on
you (some folks prefer to freewheel it, while others appreciate
hints and advice) and what you’re trying to create on the stage.
Snap Align is most useful in situations where you’re trying to
custom-position objects down to the pixel. For example, say
you’ve drawn a row of different-sized flowers, and you’re
trying to position a row of bees, one bee at a time, exactly 25
pixels above the flowers. You can use the Align panel for a lot
of basic alignment tasks, but this kind of custom alignment
isn’t one of them: Snap Align is your best option.

1. Choose View→Snapping→Edit Snapping. The Edit
Snapping window appears, as shown in Figure 5-34.
2. In the Edit Snapping window, click Advanced to display
expanded Edit Snapping options.
In the Object Spacing fields, type the buffer zone you want
in pixels (you can specify both horizontal and vertical). For
example, under Object Spacing, if you type 20 px in the Horizontal and Vertical boxes, the edge of one object will snap to
the edge of another when they’re within 20 pixels of each other.

• Snap to Objects. Displays a small, thick circle on your object when you select
it. As you drag that object close to another object on the stage, Flash uses that
point for snapping. The actual location of the snapping circle depends on where
you click the object you’re moving. Flash does its best to guess whether you
want to select the center, the edge, or some other point.
Guide layers
If you’ve ever traced a drawing onto a piece of onionskin paper, you understand the
usefulness of guide layers in Flash.
192

Flash CS6: The Missing Manual

www.it-ebooks.info

A guide layer is a special kind of layer that doesn’t appear in your finished animation,
but that you can hold beneath your stage while you’re drawing to help you position
and trace objects. Say, for example, you want to align objects in a perfect circle, or
on a perfect diagonal, or you want to arrange them so that they match a specific
background (say, an ocean scene). You create a guide layer and, on it, draw your
circle or diagonal or ocean scene. Then, when you create your layer, your guide layer
shows through so you can position your objects the way you want them. When you
go to run your animation, though, you don’t see your guide layer at all; it appears
only when you’re editing in Flash.

Manipulating
Graphic
Elements

Figure 5-34

Use the Edit Snapping settings to fine-tune the way Flash behaves when
you’re aligning objects on the stage. Use the checkboxes to choose the types
of objects that have snapping behaviors. And then use the Snap Align settings
to determine when the alignment cues kick in.

To create a guide layer:
1. On the stage, draw your guide shapes or lines, or add a tracing image, as
shown in Figure 5-35.
This first layer contains the “guide” material. Later, you’ll add one or more layers
with the images you want to appear in your animation.
2. Position your cursor over the name of the layer you want to turn into a guide
layer, and then right-click.
Flash displays a pop-up menu.
3. From the pop-up menu, select Guide.
Flash displays a little T-square just before the layer name, as in Figure 5-35.

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

193

Manipulating
Graphic
Elements

4. With the guide layer still selected, create a new, regular layer for your objects by choosing Insert→Timeline→Layer.
Flash creates a new layer and places it above the guide layer, as shown in
Figure 5-35.

Figure 5-35

Here the guide layer is used in
two different ways: for alignment and as a tracing tool. The
arrow and the cameo profile are
both on the guide layer. On the
left, the oval is being dragged,
and it snaps to the edge of the
arrow. On the right, the cameo
was used to trace the shape
of the head with the freehand
Lasso.

Tip Working with layers—especially guide layers—can be confusing if you’re not used to it (and, frankly, it
can be confusing even if you are used to it, especially if you’re working with a lot of layers). To make sure you
don’t inadvertently modify your guide layer, you can lock it (tell Flash not to let you edit it temporarily). To lock
your guide layer, click the dot beneath the padlock icon. The dot changes to a padlock. Then, when you click to
select your regular layer, you can align away without worrying about accidentally changing your (locked) guide
layer.

5. Select View→Snapping, and then, in the context menu that appears, turn on
the checkbox next to “Snap to Objects.” You’ve turned snapping on.
Turning snapping on helps you position your objects on your guide layer. Both
“Snap to Objects” and Snap Align are helpful when you work with a guide layer.

194

Flash CS6: The Missing Manual

www.it-ebooks.info

6. With the regular layer selected, draw, trace, or move your objects.
You can then drag objects to your guideline (or guide object, or guide background) or use objects in the guide layer for tracing. When tracing a cutout, as
in Figure 5-35, temporarily adjust the alpha (transparency) setting of objects
you want to see through.

Spray
Painting
Symbols

Spray Painting Symbols
Instead of simply spraying blobs of color, the Spray Brush tool can spray complex
images, by using emphasis symbols as its paint source. Symbols, as you’ll see in
Chapter 7, are reusable images and objects stored in the Library (Window→Library).
When you know you’re going to use a graphic, a movie clip, or a button more than
once, you save it as a symbol so you can reuse it to save time later.
The Spray Brush tool takes the concept of reusing a copy of something to an extreme.
Suppose you want a sky filled with flashing yellow stars. You can load the Spray Brush
tool with a movie clip of blinking stars, and then spray them across the horizon. In
the Tools panel, the Spray Brush tool is hidden underneath the Brush tool. (You can
use the B shortcut key to toggle between these two tools.)
Note For the following steps, you can download the file 05-01_Spray_Brush.fla from the Missing CD page
at www.missingmanuals.com/cds/flashcs6mm.

1. Open the file 05-01_Spray_Brush.fla.
The background color of the stage is a nice midnight blue. There are two symbols in the Library: a graphic called Star and a movie clip called BlinkingStar.
2. In the Tools panel, select the Spray Brush tool (it shares a fly-out menu with
the Brush tool), or press B until your cursor changes to the Spray Brush cursor, as shown in Figure 5-36.
The Spray Brush tool looks like a spray paint can. When the Spray Brush tool
is selected, the Properties panel (Window→Properties) shows related settings.
3. Under Properties→Symbol, click the Edit button.
The Swap Symbol dialog box opens, displaying the symbols you can use with
the Spray Brush tool.
4. Select the BlinkingStar symbol, and then click OK.
The BlinkingStar symbol is loaded in the Spray Brush tool, and its name is displayed next to the “Spray:” label.
Tip

If you plan to spray the same symbol frequently, then turn on the Default checkbox and it will load
automatically when you choose the Spray Brush tool.

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

195

Drawing with
the Deco
Tool

5. In the same Symbol subpanel, set both the “Scale width” and the “Scale
height” to 25%.
Use the “Scale width” and “Scale height” to adjust the size of the symbol as it’s
sprayed. Often symbols are drawn at a size larger than needed for spraying.

Spray Brush
Tool cursor

Random scaling
and rotation

Edit button

Scale
settings

Figure 5-36

Once the Spray Brush tool
is selected, the cursor
(circled) changes into
a spray paint can. Use
the Edit button in the
Properties panel to load
the Spray Brush tool with
a symbol. Then use the
other property settings
to adjust the size and to
randomize the spray.

Spray
Brush Tool

6. Turn on the checkboxes for “Random scaling,” “Rotate symbol,” and “Random rotation.”
Starry skies (and many other natural patterns) don’t have standard sizes. Using
random settings creates a much more natural effect for your starry sky.
7. Click the sky, and then spray in some stars.
Drag to spray stars across the sky. Hold the mouse button down for as long as
you want to create new stars.

Drawing with the Deco Tool
The Deco tool lets you draw multiple complex shapes easily. In that way, it’s similar
to the Spray Brush tool, described above (page 195). After you select the tool in
the Tools panel, the Properties panel shows you the settings and options for the
tool. Click the drop-down menu in the Drawing Effect subpanel (Figure 5-37), and
you see that the Deco tool is actually three different tools: Vine Fill, Grid Fill, and
­Symmetry Brush. The designs created by each brush are different, but they all work
by creating repeating patterns. For example:

196

Flash CS6: The Missing Manual

www.it-ebooks.info

• Use Vine Fill to create patterns on the stage or a selected symbol. Used on a
background, the Vine Fill tool could create wallpaper for an interior scene. Used
on a shape, Vine Fill could create the gift wrap for a present. Flash comes loaded
with a leafy vine that you can use, as shown in Figure 5-37. Or you can provide
your own symbols for the leaf and flower parts of the vine.

Vine fill pattern

Select Drawing Effect

Select leaf and
flower symbol

Drawing with
the Deco
Tool

Figure 5-37

The Deco tool creates
three different drawing
effects chosen by the
drop-down menu in the
Properties panel. Here
you see the Vine Fill
effect and the options
that let you select symbol
patterns and colors to
create interconnected vine
patterns.

Deco Drawing Tool
Select leaf and
flower color

• Use the Grid Fill effect to create a repeating effect that’s more uniform than
the Vine Fill. For example, you could use your company logo as the symbol and
apply the Grid Fill effect to a background layer in your animation. Then you can
adjust the alpha (transparency) to soften its appearance and make the logo
fade into the background, giving text or images in other layers precedence.
• Use Symmetry Brush to arrange symbols symmetrically around a central point.
If you’ve ever seen a Busby Berkeley movie with all those symmetrical dancers,
you have an idea of the kaleidoscope effects you can create with symmetry. If
you’re not feeling quite so Hollywood, you can use the Symmetry Brush tool to
create clocks, speedometers, or other circular gauges. As with the Vine Fill and
Grid Fill tools, you can load the Symmetry Brush with any symbol. If you want
to experiment and don’t have a shape handy, use the preset rectangle to create
patterns. When you drag on the stage, the Symmetry Brush creates multiple
images using the loaded symbol. Use the drop-down menu in the Advanced
subpanel to select a pattern. You have several options: Rotate Around Point,

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

197

Advanced
Color and
Fills

Reflect Across Line, Reflect Around Point, and Grid Translation. Select the Test
Collisions button to keep symbols from overlapping.
The best way to learn about the Deco tool is to create a new document and experiment. Adobe continues to create new deco brushes. With some brushes, you can
tweak the colors by clicking on color swatches. With others, you can replace the
standard symbols with your own creations. So go ahead and play with the Deco
tool, and then the next time you need a repeating pattern, you’ll know where to turn.

Advanced Color and Fills
Color is one of the most primitive and powerful communicative devices at your disposal. With color, a skillful animator can engender anxiety or peacefulness, hunger
or confusion. She can jar, confuse, delight, soothe, entertain, or inform—all without
saying a word.
Color theory is too large a topic to cover completely here. What you will find in
this chapter is a quick introduction to basic color theory, as well as tips on how to
work with color in Flash. You’ll see how to change the colors of the shapes, lines,
and images you create with Flash’s drawing tools; how to create and reuse custom
color palettes (especially useful if you’re trying to match the colors in your Flash
animation to those of a corporate logo, for example, or to a specific photo or piece
of art); and how to apply sophisticated color effects including gradients, transparency, and bitmap fills.

Color Basics
The red you see in a nice, juicy watermelon—or any other color, for that matter—is
actually made up of a bunch of different elements, each of which you can control
using Flash’s Color panel:
• Hue is what most people think of when someone says “color.” Red, orange,
yellow, green, blue, indigo, and violet are all hues. Out of the box, Flash has 216
different hues. These are sometimes called web-safe hues because, in the early
days of the Web, they were the colors most computers could display. You can
also blend your own custom hues by mixing any number of these basic 216 hues.
• Saturation refers to the amount of color (hue) you apply to something. A light
wash of red, for example, looks pink; pile on more of the same color and you
get a rich, vibrant red.
• Brightness determines how much of any given color you can actually see. A lot
of light washes out a color; too little light, and the color begins to look muddy.
At either end of the spectrum, you have pitch black (no light at all) and white
(so much light that light is all you can see). In between these two extremes,
adding light to a hue creates a tint. For example, if you add enough light to a
rich strawberry-ice-cream pink, you get a delicate pastel pink.

198

Flash CS6: The Missing Manual

www.it-ebooks.info

• Transparency refers to how much background you can see through a color,
from all of it (in which case the color is completely transparent, or invisible) to
no background at all (in which case the color is opaque). In Flash, you set the
transparency (technically, the opacity) for a color using the Alpha field.

Advanced
Color and
Fills

RGB and HSB
Color doesn’t exist in a vacuum. The colors you get when you mix pigments aren’t
the same as the colors you get when you mix different-colored lights (which is how
a computer monitor works). Artists working in oil paint or pastel use the red-yellowblue color model, for example, and commercial printers use the cyan-magentayellow-black color model. In the world of computer graphics and animation, though,
the color model you use is red-green-blue, or RGB.
This model means you can tell Flash to display any color imaginable just by telling
it precisely how much red, green, and blue to display. But if you don’t happen to
know how much red, green, and blue make up, say, a certain shade of lilac, Flash
gives you three more ways to specify a particular color:
• HSB. You can tell Flash the hue, saturation, and brightness you want it to display.
• Hexadecimal. You can type the hexadecimal number (see page 203) for the
color you want Flash to display. Because hexadecimal notation is one of the
ways you specify colors in HTML, you can use hexadecimal numbers to match
a web page color precisely to a color in Flash.
• Selection. In the Color panel, you can drag your cursor around on the color
picker (Figure 5-38) until you find a color you like. This option is the easiest, of
course, and the best part is, after you decide on a color, Flash tells you the color’s
RGB, HSB, and hexadecimal numbers (all of which come in handy if you want
to recreate the color precisely, either in another Flash animation or in another
graphics program altogether).
In the next section, you’ll see how to specify a custom color using Flash’s Color panel.

Creating Custom Colors
Out of the box, Flash has 216 web-safe colors. But if you can’t find the precise shade
you want among those 216 colors, you’re free to mix and match your own custom
colors using Flash’s Color panel.
Here’s how:
1. Select Window→Color.
The Color panel shown in Figure 5-38 appears, with the Color tab selected.
2. On the Color tab, click either the Fill icon or the Stroke icon, depending on
whether you plan to apply your custom color to a fill or a stroke.
Page 53 gives you the lowdown on the differences between the two.

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

199

Advanced
Color and
Fills

Fill

Stroke

3. Select a custom color. You can do this one of these ways:
• You can drag around on the color picker circle and slider until you see a
color you like in the Preview window (Figure 5-38).

Hue, saturation,
brightness settings

Color Panel
button

Figure 5-38

You can choose
Window→Color to open this
panel, or you can click the
Color Panel button. Flash
packs a lot of power into the
tiny Color tab. But most of the
time, you can safely ignore
everything except the Stroke
and Fill icons (one of which
you need to choose before you
begin working with the Color
tab) and the Color and Brightness windows, which you use
to select a custom color.

RGB and Alpha setting

• If you know them, you can type values for the RGB (red, green, and blue)
or HSB (hue, saturation, brightness) colors next to their respective letters
in the Color panel. (See the box on page 201.)
• You can type a hexadecimal value in the Hexadecimal Color Designator
box. (Hexadecimal, or base 16, values can contain only the following digits:
0–9 and A–F. Folks who spend a lot of time writing HTML code are usually
comfortable with hex numbers; if you’re not one of them, you can safely
skip this option.)
4. To customize your color even further, you can use the drop-down menu to
specify its color type.
Choose from Solid (what you want most of the time), Linear (a type of gradient
effect described on page 206), Radial (another type of gradient also described
on page 206), and Bitmap (lets you color an object using an image rather than
a hue, as on page 204).

200

Flash CS6: The Missing Manual

www.it-ebooks.info

5. To change the opacity (transparency) of your color, change the percentage
in the A setting.

Advanced
Color and
Fills

Zero percent tells Flash to make your color completely transparent (see-through);
100% tells Flash to make your color completely opaque (Figure 5-39).

Figure 5-39

When you use a transparent color, background objects and the
stage itself show through, giving the appearance of a different
color altogether. Here the two ovals are actually the same
color, but they don’t look like it: The selected oval on the right
is 50% opaque, while the oval on the left is 100% opaque.

Tip

Invisible color sounds like an oxymoron, but zero percent opacity actually has a place in your bag of
Flash tricks. As you’ll see on page 318, you can create a nifty appearing/disappearing effect using see-through
color and a shape tween by changing Alpha settings.

6. In the Tools panel, select a drawing tool, and then begin drawing on the
stage.
Your strokes (or fills, depending on which icon you selected in step 1) appear
in your brand-new custom color.
Up to Speed

Specifying RGB Colors
RGB is a funky system based not on the way humans think, but on
the way computers think. So the numbers you type in the Color Mixer
to describe the red, green, and blue components of a color aren’t in

percentages, as you might expect, but instead need to range from
0 (no color at all) to 255 (pure color).
This table shows a handful of common colors expressed in RGB terms:

Red

Green

Blue

Result

0

0

0

Black

255

255

255

White

255

0

0

Red

0

255

0

Green

0

0

255

Blue

255

255

0

Yellow

0

255

255

Cyan

255

0

255

Magenta

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

201

Advanced
Color and
Fills

Tip

You don’t have to create a custom color before you draw an object. You can draw an object first, select
it, and then create a custom color. When you create a color, Flash automatically changes the object’s color to your
new custom color.

Design Time

The Six Commandments of Color
Whether you’re using Flash to create an interactive tutorial, an
animated art short, a slick advertisement, or something else
entirely, you need to be aware of color and how it supports (or
detracts from) the message you’re trying to get across. Color
is at least as important as any other design element, from the
fonts and shapes you choose to the placement of those shapes
and the frame-by-frame timing of your finished animation.
Although the psychology of color is still in its relative infancy,
a few color rules have stood the test of time. Break them at
your own risk.
1. Black text on a white background is popular for a reason.
Any other color combination produces eyestrain after as
little as one sentence.
2. Color is relative. The human eye perceives color in context,
so the same shade of pink looks completely different when
you place it next to, say, olive green than it does when
you place it next to red, white, or purple.
3. For most animations, there’s no such thing as a websafe color. Web-safe colors—the handful of colors that
supposedly appear the same on virtually all computers,
whether they’re Mac or Windows, laptop or desktop,
ancient or new—were an issue in the old days. If you
chose a non-web-safe color palette, your audiences might
have seen something different from what you intended
(or might have seen nothing at all, depending on how
their hardware and software were configured). But time
marches on, and any computer newer than a few years
old can display the entire range of colors that Flash lets
you create. Of course, if you know for a fact that your
target audience is running 15-year-old computers (as
a lot of folks in other countries and in schools are), or if
you suspect they might have configured their monitor
settings to display only a handful of colors (it happens),

202

then you should probably play it safe and stick to the websafe colors that Flash already has. (To display web-safe
colors, choose Window, and then, in the pop-up menu
that appears, turn on the checkbox next to Swatches. In
the Swatches panel, click the Options menu (upper-right
corner), and then, from the pop-up menu that appears,
select Web 216. The Swatches tab displays 216 web-safe
colors.)
4. Contrast is at least as important as color. Contrast—how
different or similar two colors look next to each other—
affects not just how your audiences see your animation,
but whether or not they can see it at all. Putting two
similar colors back-to-back (putting a blue circle on
a green flag, for instance, or red text on an orange
background) is unbearably hard on your audience’s eyes.
5. Color means different things in different cultures. In
Western cultures, black is the color of mourning; in
Eastern cultures, the color associated with death and
mourning is white. In some areas of the world, purple
signifies royalty; in others, a particular political party;
in still others, a specific football team. In color, as in all
things Flash, knowing your audience helps you create and
deliver an effective message.
6. You can never completely control the color your audience
sees. Hardware and software calibration, glare from office
lighting, the amount of dust on someone’s monitor—a lot
of factors affect the colors your audience sees. So unless
you’re creating a Flash animation for a very specific
audience and you know precisely what equipment and
lighting they’ll be using to watch your masterpiece,
don’t waste a lot of time trying to tune your colors to
the nth degree.

Flash CS6: The Missing Manual

www.it-ebooks.info

Specifying Colors for ActionScript
ActionScript is Flash’s programming language. As you’ll learn in later chapters,
you can use ActionScript to automatically perform the same tasks that you do by
hand—including specifying colors. Suppose your animation is selling cars. Using
ActionScript, you can let your audience change a car’s color with the click of a button. ActionScript uses the RGB color system described in the previous section but
identifies individual colors using hexadecimal numbers. Hexadecimal numbers are
base 16 instead of the base 10 numbers people use. (How’s that for a flashback to
math class?) The hexadecimal number system uses 16 symbols to represent numbers
instead of the usual 0–9. When the common numeric symbols run out, hexadecimal
uses letters. So, the complete set of number values looks like this: 0, 1, 2, 3, 4, 5, 6,
7, 8, 9, A, B, C, D, E, F.

Advanced
Color and
Fills

Hexadecimal RGB numbers use six places to describe each color. The first two numbers represent shades of the color red, the second two numbers represent shades
of the color green, and the final two numbers represent shades of the color blue. So
a color specification might look like this: 0152A0. Or this: 33CCFF. At first, it seems
odd to see the letters in numbers, but after a while you get the hang of it. So, the
hexadecimal number FF0000 is a bright, pure red, while 0000FF is a bright blue.
When you choose a color from a color picker, or Flash’s Color panel (Window→Color)
as shown in Figure 5-40, you’re actually choosing an RGB color, whether you know
it or not. Select a color, and then find the hexadecimal number in the box below.
You usually use the hexadecimal notation to specify RGB colors in ActionScript.
Notice that the hexadecimal number in the color picker box is preceded by a pound
sign (#), which is one common way to indicate that this is a hexadecimal number.
(Not all hexadecimal numbers include letters, so this notation prevents hexadecimal numbers from being confused with regular numbers.) ActionScript code uses
another method to indicate that a number is a hexadecimal number. In ActionScript,
you precede all color codes with two characters: 0x. So, if you want to use the
color shown in Figure 5-40 in your ActionScript code, you’d specify the color as
0xFF0000. You’ll see plenty of other examples of specifying colors in ActionScript,
starting with Chapter 12.

Saving Color Swatches
After you go to all the hard work of creating a custom color as described in the preceding section, you’re probably going to want to save that color as a virtual swatch
so you can reuse it again without having to try to remember how you mixed it.
To save a custom color swatch, first create a custom color, as described in the preceding section. You see your custom color displayed in the rectangle at the bottom
of the Color panel. In the upper-right corner, click the panel’s Options menu and
choose Add Swatch. Your color is automatically added to the Swatches panel. Click
the Swatches tab and you see your new swatch at the bottom of the list next to the
gradients, as shown in Figure 5-41.

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

203

Advanced
Color and
Fills

After you’ve saved a custom swatch, you can use it to change the color of a stroke
or a fill, as you see in Figure 5-41.

Figure 5-40

Flash’s color pickers display the hexadecimal color value in the box marked with
the pound (#) sign. You can use any color picker to look up the hexadecimal
value for use in your ActionScript code.

Hexadecimal
color value

Options menu

Figure 5-41

Saving a specific color as a color swatch—whether it’s one you custom-mixed or
a standard color you found on the palette and liked—is kind of like saving the
empty paint can after you paint your kitchen. The next time you want to use
that particular color, all you have to do is grab the swatch (instead of relying on
your memory or spending hours trying to recreate the exact shade). If you work
with color a lot, swatches can make your life a whole lot easier.
Saved swatch

Using an Image as a Fill “Color”
Instead of choosing or blending a custom color, you can select an image to use as
a fill “color,” as shown in Figure 5-42. You can select any image in Flash’s Library
panel (page 30), or from anywhere on your computer and apply that image to any
size or shape of fill to create some pretty interesting effects.
As you can see in the following pages, the result depends on both the size and shape
of the fill and the image you choose.
To use an image as a fill color:
1. Select all the fills you want to “color.”
Figure 5-42 shows an example of two fills: a star, and a free-form fill created
using the Brush.

204

Flash CS6: The Missing Manual

www.it-ebooks.info

2. In the Color panel, click the arrow next to Type, and then, from the dropdown list that appears, choose Bitmap fill (Figure 5-43).

Advanced
Color and
Fills

Flash displays the “Import to Library” window (Figure 5-44).
Tip

To import additional image files to use as fills, in the Color panel, click the button marked Import. Then,
with the fill on the stage selected, click the image you want to use.

Figure 5-42

You can apply your
bitmap swatch to any
shape or object that
accepts a fill or stroke. If
you’re using a bitmap on
a stroke, you’ll want to
set the stroke size to 30
or more.

Bitmap stroke

Bitmap fill

Stroke size

Figure 5-43

Click the Type drop-down
menu in the Color panel,
and then choose Bitmap to
see your bitmap swatches.
After you’ve added a bitmap, it appears as a swatch
in your Color panel.

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

205

Advanced
Color and
Fills

3. In the “Import to Library” window, select the image file you want, and then
click Open.
Flash displays the image in the bottom of the Color panel, as well as next to the
Fill icon, and “paints” your image with the bitmap. You can apply the bitmap
to both fills and strokes, as shown in Figure 5-42. If your fill is larger than your
image, Flash tiles the image (Figure 5-45).

Figure 5-44

The first time you head
to the Color panel and
set the Type menu to
Bitmap, Flash pops open
this “Import to Library”
window. Despite the
name (Bitmap), Flash
lets you import JPEG and
other types of image
files; you’re not limited to
.bmp files. Browse your
computer for the image
file you want, and then
click Open.

Tip

If you apply the new fill “color” to an image by clicking the Paint Bucket icon and then clicking the fill,
Flash tiles super-tiny versions of the image inside the fill to create a textured pattern effect.

Applying a Gradient
A gradient is a fill coloring effect that blends bands of color into one another. Flash
has linear gradients (straight up-and-down, left-to-right bands of color) and radial
gradients (bands of color that begin in the center of a circle and radiate outward).
By applying a gradient to your fills, you can create the illusion of depth and perspective. For example, you can make a circle that looks like a sphere, a line that looks
like it’s fading, and text that looks like it’s reflecting light (Figure 5-46). See the tip
on page 210 for applying gradients to text.

206

Flash CS6: The Missing Manual

www.it-ebooks.info

You can apply a gradient swatch to your fills, or you can create your own custom
gradients in Flash, much the same way you create your own custom colors (page 199).

Advanced
Color and
Fills

Figure 5-45

How Flash applies your
image to your fill depends
on the size of your fill and
the size of your image (and
whether you select the
fill, and then change the
Style type to Bitmap, or
vice versa). Here the star
is smaller than the image
imported into Flash, so
Flash shows a single image
framed by the star’s outline. Because the freeform
fill is larger than the image,
Flash tiles the image inside
the freeform fill. Note, too,
that Flash sticks the image
you imported into the
Library panel.

Figure 5-46

Applying one of the preset radial
gradients that Flash provides
turns this circle into a ball, and
makes this text look shiny, like
it’s reflecting light. The thin rectangle beneath the text is sporting
a linear gradient; its bands of
color blend from left to right.

To apply a gradient swatch to an object:
1. On the stage, select the object to which you want to add a gradient.
Flash highlights the selected object.
2. Click the Fill Color icon.
Flash displays the color picker (Figure 5-47).

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

207

Advanced
Color and
Fills

3. From the color picker, choose one of the seven gradient swatches that come
with Flash.
Flash automatically displays your object using the gradient swatch you chose.
Figure 5-47 shows a red radial gradient applied to a plain circle to create a
simple 3-D effect.

Figure 5-47

Applying a gradient swatch is just as easy as applying
a color. Flash comes with four radial gradient swatches
(white, red, green, and blue) and three linear gradient
swatches (white/black, blue/yellow, and rainbow). If one
of these creates the effect you want, great. If not, you can
change any of them to create your own custom gradient
effects, as you see on page 210.

Selected object

Gradient swatches

To create a custom gradient:
1. On the stage, select the object to which you want to apply a custom gradient.
Flash highlights the selected object.
2. Apply a gradient swatch to the object (see page 206).
If you like, change the color of the gradient, as described next.
3. In the Color panel, double-click the first color pointer to select it.
Flash displays a color picker.
4. In the color picker, click to select a color.
In your selected object, Flash turns the color at the center (for a radial gradient)
or at the very left (for a linear gradient) to the color you chose. Repeat these
two steps for each color pointer to change the color of each band of color in
your gradient. If you like, change the thickness and definition of your gradient’s
color bands, as described next.

208

Flash CS6: The Missing Manual

www.it-ebooks.info

5. In the Color panel, drag the first color pointer to the right.
The farther to the right you drag it, the more of that color appears in your custom
gradient. The farther to the left you drag it, the less of that color appears in
your custom gradient. Repeat this step for each band of color in your gradient.

Advanced
Color and
Fills

Next, if you like, you can add a new band of color to your custom gradient.
6. In the Color panel, click anywhere on the Gradient edit bar.
Flash creates a new color pointer (see Figure 5-48), which you can edit as
described in step 3. You can add as many as 15 color pointers (new bands of
color) to your gradient.

Gradient type

Figure 5-48

Creating a custom gradient is more art
than science. As you create new color
bands, adjust the colors, and widen
and narrow each band using the color
pointers, keep an eye on the gradient
preview window and on your selected
object, too; Flash updates both as you
edit your gradient, so you can see at
a glance whether you like the effects
you’re creating.

Color points

For even more excitement, apply one or more gradient transforms to your
object, as described next.
7. In the Tools panel, choose the Gradient Transform tool (F). It shares a fly-out
menu with the Free Transform tool.
Flash displays a rotation arrow, a stretch arrow, and a reposition point.
You can drag the rotation arrow to rotate the gradient; drag the stretch arrow to stretch the bands of color in your gradient, as shown in Figure 5-49; or
drag the reposition point to reposition the center of the gradient, also shown
in Figure 5-49.

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

209

Advanced
Color and
Fills

Tip

In Flash, text is usually a single color, so you need to take some extra steps to apply a gradient. If you
aren’t planning on editing the text or changing it on the fly using ActionScript, you can turn the text into an
image and then apply the gradient. Select the text and press Ctrl+B (⌘-B). That breaks strings of characters into
individual characters. Press Ctrl+B (⌘-B) a second time to turn those letters in to graphics. At this point you can
apply gradients to individual letters or groups of letters.

Adjust gradient angle

Figure 5-49

Just as regular transforms let you poke and
prod regular images to create interesting effects, gradient transforms let you
manipulate gradients (with respect to the
shapes you originally applied them to) to
create interesting effects. Here dragging
the stretch arrow pulls the bands of color,
widening the bands at the center and
discarding the bands at the edges. Use
the circular rotate control to adjust the
gradient angle. Drag the reposition point
to move the center of the gradient away
from the center of the object. This effect is
especially useful for creating the illusion
that the object is reflecting light streaming
in from a different angle.
Reposition gradient
center point

Adjust
gradient bands

Importing a Custom Color Palette
Depending on the type of animation you’re creating in Flash, you might find it easier
to import a custom color palette than to try to recreate each color you need. For
example, say you’re working on a promotional piece for your company, and you want
the colors you use in each and every frame of your animation to match the colors
your company uses in all its other marketing materials (brochures, ads, and so on).
Rather than eyeball all the other materials or spend time contacting printers and
graphics teams to try and track down the RGB values for each color, all you need
to do is import a GIF file into Flash that contains all the colors you need: a GIF file
showing your company’s logo, for example, or some other image containing the
colors you need to match.
To import a custom color palette:
1. In the Swatches panel (Window→Swatches), click the Options menu.
A pop-up menu appears.

210

Flash CS6: The Missing Manual

www.it-ebooks.info

2. From the pop-up menu, select Clear Colors.
Flash clears out the entire color palette on the Color Swatches tab, leaving just
black, white, and a gradient (Figure 5-50, right).

Advanced
Color and
Fills

Figure 5-50

Left: Here’s what the typical Swatches tab looks like
before you clear it (by clicking the Options menu and
then selecting Clear Colors). Think twice before you clear
the palette: You can get back Flash’s basic color palette,
but you lose any custom color swatches you’ve saved in
this document.
Right: After you clear the color palette, you’re left with
black, white, and a gradient.

3. Once again, click the Options menu.
The pop-up menu reappears.
4. From the pop-up menu, select Add Colors.
Flash displays the Import Color Swatch window.
5. In the Import Color Swatch window (Figure 5-51), click to choose a GIF file,
and then click Open.
Flash imports the custom color palette, placing each color in its own swatch in
the Swatches panel (Figure 5-50, left).
Note

To restore the standard Flash color palette: From the Swatches panel, click the Options menu, and
then, from the pop-up menu that appears, select Load Default Colors.

Copying Color with the Eyedropper
Tying color elements together is a subtle—but important—element of good design. It’s
the same principle as accessorizing: Say you buy a white shirt with purple pinstripes.
Add a pink tie, and you’re a candidate for the Worst Dressed list. But a purple tie
that matches the pinstripes somehow pulls the look together.
In Flash, you may find you’ve created a sketch and colored it just the right shade of
green, and you want to use that color in another part of the same drawing. Sure,
you could slog through the Color panel, write down the hexadecimal notation for
the color and then recreate the color. Or, if you know you’re going to be working a

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

211

Advanced
Color and
Fills

lot with that particular color, you could create a custom color swatch (page 203).
But if you want to experiment with placing bits of the color here and there on the
fly, the Eyedropper tool is the way to go. The Eyedropper tool lets you click the color
on one image and apply it instantly to another color on another image.

Figure 5-51

When you head to the
Swatches panel, click
the Options menu, and
then choose Add Colors
to import a custom color
palette, Flash displays
an Import Color Swatch
window that should look
pretty familiar if you’ve
ever had occasion to open
a file on a computer. Here
you click to browse your
files. When you find the
.clr file containing your
custom color palette, click
Open. Flash brings you
back to your Color Mixer
panel, where you see that
Flash has pulled in each
separate color in your .clr
file as a separate swatch,
ready for you to use.

Note

The Eyedropper tool lets you transfer color only from a bitmap or a fill to a fill, and from a stroke to
another stroke. If you want to transfer color to a bitmap, you need the Magic Wand (Lasso).

To copy color from one object to another:
1. Select Edit→Deselect All.
Alternatively, you can press Ctrl+Shift+A (Shift-⌘-A) or click an empty spot on
the stage.
2. From the Tools panel, click to select the Eyedropper (I) tool.
As you mouse over the stage, your cursor appears as an eyedropper while it’s
over a blank part of the stage; an eyedropper and a brush when it’s over a fill
(as shown in Figure 5-52, top); and an eyedropper and a pencil when it’s over
a stroke.

212

Flash CS6: The Missing Manual

www.it-ebooks.info

3. Click the bitmap, fill, or stroke color you want to copy from (imagine sucking
the color up into your eyedropper).

Advanced
Color and
Fills

If you click to copy from a fill or a bitmap, your cursor turns immediately into a
paint bucket; if you click to copy from a stroke, the cursor turns into an ink bottle.

Figure 5-52

Top: After you click the
Eyedropper tool, your cursor
changes to remind you what
it’s passing over. If it’s over a
fill or a bitmap, you see a little
brush next to the eyedropper;
if it’s over a stroke, you see a
little pencil next to the eyedropper. Here the Eyedropper
tool is selecting a fill (the oval).
Bottom: Here the Paint Bucket
icon lets you know you need to
click a fill.

Note You can copy from a stroke, a fill, or a bitmap using the Eyedropper tool; you can’t copy from a symbol
or a grouped object without opening it or breaking it apart.

Chapter 5: Advanced Drawing and Coloring

www.it-ebooks.info

213

Advanced
Color and
Fills

4. Click the bitmap, fill, or stroke you want to copy to (imagine squeezing the
color out of your eyedropper). If you copied color from a bitmap or a fill, you
need to click a fill; if you copied color from a stroke, you need to click a stroke.
Flash recolors the stroke, fill, or bitmap you click, applying the from color to the
to color, as shown in Figure 5-52, bottom.

Up to Speed

Kuler: Color Help from the Community
In an office full of designers, water cooler discussion often
revolves around color palettes. What color combinations
best represent autumn, or the Rocky Mountains, or surfing in
Hawaii. Kuler is Adobe’s way of providing that kind of designer
know-how to everyone (Figure 5-53). To open Kuler, go to
Window→Extensions→Kuler. Simply put, Kuler is a panel that
shows named color combinations with five colors to a palette.
Anyone can provide a color palette, even you. All these color
combinations are stored online, so when you use Kuler, your
computer connects to the Web.

Using the buttons and menus on the Kuler panel, you can
browse through all the color combinations provided by the
Kuler community. You can choose a palette, edit the colors,
and then save it under a different name. You can create your
own color palettes and then upload them for others to review
and use. If you see the perfect color combination for your
project, you can add the palette to your Swatches panel by
clicking Add to Swatches.

Figure 5-53

When you find a palette that you want to use in your Flash project, click the “Add to Swatches”
b­ utton, and those colors appear in your Swatches panel. If you want to create your own theme for
the Kuler community, click the button in the upper-right corner.

214

Flash CS6: The Missing Manual

www.it-ebooks.info

chapter

Choosing and
Formatting Text

6

F

lash isn’t just about moving pictures. Text is a big part of many projects, and
with Flash you can do remarkable things with text and type. You can label
buttons, boxes, and widgets with small, helpful text, and make page headlines
pop with big, bold type. When you use large blocks of text—as in newspaper articles
or how-to instructions—you can add scroll bars so your readers can see all the text
in one place, or you can create hyperlinks that lead to other pages. And of course,
Flash can do things to type that wouldn’t enter Microsoft Word’s wildest dreams:
morphing paragraphs as they move across the screen; exploding words and letters
into dozens of pieces. You can also create the same kind of effects that you see in
the opening credits of TV shows. To handle all this variety, Flash provides different
text tools. As with any craft, it’s important to choose the right tool for the job.
Text handling is another feature that has grown and evolved with new versions of
Flash. In fact, a couple of versions ago Flash Professional introduced a brand-new
and powerful way of handling text, officially named Text Layout Framework, but
usually called TLF text. If you’re comfortable working with Flash’s tried-and-true
text tools, don’t panic. Flash provides backward compatibility with Classic text, too.
You can even mix and match text in the same document, layer, and frame. So, each
time you click the Text tool, you need to choose which text engine you want to use.
How do you know which to use? That’s what you’ll learn in this chapter. First, you’ll
get tips on choosing the right tools. Then you’ll learn how to work with text and
create special effects. Finally, at the end of the chapter (page 239), you’ll find a
subpanel-by-subpanel description of text properties, including which properties
work with which text engines and text types. (Interested in using ActionScript to
make text jump through hoops? Turn to Chapter 17.)

215

www.it-ebooks.info

Text
Questions

Text Questions
When you add text to your Flash animation, you have a specific job in mind. You
may want to put a headline at the top of the page, label a widget on the screen, or
provide instructions. If you’re creating the next great eBook reader, your needs are
different than if you’re creating a splashy intro sequence like the ones on The Daily
Show or American Idol. Because these text jobs vary so much, ask yourself a few
questions before you click the Text tool:
• Is the text a single line or a paragraph?
• If the block of text is several lines, should it have scroll bars?
• Should the text be selectable by the audience, or is it read-only?
• Will the audience be able to change or add to the text?
• Do I want to animate the text?
• Do I want to make changes to the text using ActionScript?
• Do I need to provide text in multiple languages?
As you’ll see in the following section, the answers to these questions help you choose
the right text engine and text type. Flash designers have always had to consider
these questions, and even with a new way of handling text (TLF), the questions are
still valid. Read on to learn which text tools best accomplish these jobs.

Choosing TLF or Classic Text
Click the text tool—it looks like a big capital T in the Tools panel (Figure 6-1). The
Properties panel changes to show all the different text properties available to you, the
designer. Starting at the top, the first drop-down menu gives you a choice between
two text engines—TLF Text and Classic Text. These text-handling routines are called
engines because they’re the mechanisms used to display text in Flash Player—the
tool your audience uses to watch your Flash animation. In previous versions of Flash,
the text options were much more limited than those provided by programs like
InDesign, Illustrator, and Photoshop. TLF text goes a long way toward closing that
gap. Classic text is still an option for a number of reasons, including compatibility.
Choose TLF text if:
• You’re new to Flash. It’s the text engine of the future, so you may as well start
learning it. It gives you the most control over your text. In spite of the many
options, it’s fairly easy to use.
• You want to animate your text in three dimensions. It’s much easier to spin and
rotate TLF text fields.

216

FLASH CS6: The Missing Manual

www.it-ebooks.info

• You want to use fancy typographic features such as ligatures (special characters
that represent two letters). TLF text provides many more of the features that
print typographers expect.

Choosing TLF
or Classic
Text

Figure 6-1

Text engine menu
Text type menu

After you choose the Text tool, you need
to use the drop-down menus to choose
the text engine and the text type. Your
choices determine how the text functions
in your animation. The menu shown here
lists the text types available when you’ve
chosen the TLF text engine.

Text Tool

• You want to provide text in different languages, including those where text
doesn’t flow from left to right. TLF text is much more cosmopolitan than Classic.
Choose Classic text if:
• You need to be compatible with older versions of Flash. You can open and
work on older projects in Flash Professional CS6. You can even mix Classic and
TLF text in the same project.
• It’s critically important to make your animation files (SWFs) as small as possible.
If you’re using text simply as labels on the stage and you aren’t changing it with
ActionScript or giving your audience a chance to add and edit, then Classic
static text takes up the least room in your SWF file.
• You’re a Flash veteran and the old ways are just fine, thank you very much.
There’s nothing wrong with sticking with what you know will work, especially
when there’s a deadline looming.

Choose a Text Type
Once you’ve chosen either TLF Text or Classic Text, the Properties panel changes to
display settings for that text engine. You notice right away that TLF includes many
more options. Immediately below the “Text engine” menu, the first setting is the
“Text type” menu. Below that, there are several subpanels filled with widgets to
help you manage your text. The choices you make at the top of the Properties panel
determine which properties are available as you work your way down. For example,
TLF has different text types from Classic.

Chapter 6: Choosing and Formatting Text

www.it-ebooks.info

217

Choosing TLF
or Classic
Text

TLF text types
• Use Read Only when you want to display text on the stage, but you don’t want
the audience to edit the text.

• Use Selectable when you want to give your audience the ability to select and
perhaps copy and paste text.
• Use Editable when you want to give your audience the ability to change or add
their own text. For example, choose this option when you’re creating “fill-in”
forms.
Classic text types
Classic text continues to offer the three options familiar to Flash veterans (Figure 6-2):

• Use Static Text when you want to display text on the stage for simple chores
like headlines and labels. Your audience can’t change static text, and you can’t
change it using ActionScript. Static text is actually converted to images when
it’s stored in your final SWF file.
• Use Dynamic Text when you want to make changes using ActionScript. Creating a program that continuously updates basketball scores? That’s a job for
dynamic text.
• Use Input Text when you want to give your audience the ability to change or
add their own text, perhaps through the use of a text input box or form. Input
text can also be used in conjunction with ActionScript.

Figure 6-2

If you’re a Flash veteran, you’ll recognize the Classic Text options.
As shown here, you can choose the following text types: Static Text,
Dynamic Text, and Input Text. Because static text is converted to an
image before your audience sees it, you can’t edit the text (change
the words or letters) when the animation is running.

Some options, such as your choice of typeface, size, and color, remain the same no
matter which text engine or text type you choose. Other options, such as highlight,
ligatures, and baseline shift, appear or disappear from the Properties panel based
on your choices. So, if a particular setting you need is unavailable, go back and
choose a different text engine or text type. In general, TLF text gives you more
typographic control. You can mix TLF and Classic text in the same document and
even in the same layer or frame.

218

FLASH CS6: The Missing Manual

www.it-ebooks.info

About
Typefaces
and Fonts

About Typefaces and Fonts
Choosing a typeface for your project should be fun—just not too much fun. There are
two paths to the available typefaces installed on your computer. Using the menus,
go to Text→Font, or in the Properties panel, find the Character subpanel, and then
click the Family menu. Either way, you see a list like the one in Figure 6-3. Make your
typeface decisions based on the job at hand, and you can’t go wrong. Think about
what you expect your type to do, and then help it do that job by choosing the right
typeface, size, color, container, and background. Beginning designers often treat
text as yet another design element and let the desire for a cool look override more
practical concerns. Designers sometimes talk about a text block like just another
shape on the page. But cool type effects can torture your readers’ eyes with hardto-read backgrounds, weird letter spacing, or hopelessly small font sizes. (For more
advice on readability, see the box on page 220.)
Note If you want to be technical in a Gutenbergian fashion, typefaces are families of fonts. Times Roman
is a typeface, while “Times Roman, bold, 12 point” is a font. Somewhere along the line, as type moved from
traditional typesetters to computer desktops, the meaning of the word “font” came to be synonymous with
“typeface.” That’s okay, but knowing how the terms originated makes great cocktail party banter.

Figure 6-3

Most likely you’ve got
a bewildering number
of typefaces on your
computer. Many of the
typefaces include style
variations, like bold,
italic, and so on. Choose
carefully, making sure
that your text performs
its intended job—communication.

Chapter 6: Choosing and Formatting Text

www.it-ebooks.info

219

Adding Text
to Your
Document

Adding Text to Your Document
Enough theory—it’s time to put some words on the stage. Just as Flash has tools for
adding shapes and lines to your drawings, it also has a tool specifically designed to
let you add text to your drawings—the Text tool (T). The following steps describe
the basic method for putting read-only text on the stage.

Frequently Asked Question

Small Is Beautiful
How can I use small type and make sure it stays readable?
For most people, reading text on a computer or smartphone
screen is more difficult than reading it off a piece of paper.
In fact, most people simply won’t read text if it’s too hard to
see. If your Flash project includes text with small font sizes (12
points or less), there are a few things that you can do to keep
your audience from straining their eyes:
• If possible, bump the type up to a larger size (Properties→
Character→Size). At small sizes, a point or even half a
point makes a big difference.
• Black text on a white background is the most readable
combination. If you want to use different colors, opt for
very dark text on a very light background. If you have
to use light text on a dark background, then make sure
there’s a great deal of contrast between the colors.
• Use sans-serif type, like Verdana, Helvetica, or Arial, for
small sizes. Sans-serif type looks like the text in this box;
it doesn’t have the tiny end bars (serifs) you find in type
like the body text in this book. Computer screens have a
hard time creating sharp serif type at very small sizes.

bigger, it’s actually less readable. The height differences
in lowercase type make it more readable. Besides, too
much uppercase type makes it look like you’re shouting.
• Avoid bold and italic type. Often bold and italic type
are hard to read at small font sizes. But this varies with
different typefaces, so it doesn’t hurt to experiment.
• If your text isn’t going to be animated, then turn on
“Anti-aliasing for readability” (Properties→Character→
Anti-alias→“Anti-alias for readability”). Antialiasing is
a bit of computer magic and fool-the-eye trickery that
gives type nice, smooth edges.
• Choose “Anti-aliasing for animation” (Properties→
Character→Anti-alias→“Anti-alias for animation”) if
you’re going to be pushing that text around the screen
with tweens or ActionScript.
It never hurts to get second and third opinions. If you’ve got
eyes like an eagle, you may want to get some opinions from
your less-gifted colleagues when it comes to readability. You
want your Flash project to be accessible to as wide an audience as possible.

• Use both upper- and lowercase type for anything other
than a headline. Even though all-uppercase type looks

To use the Text tool:
1. In the Tools panel, select the Text tool.
Flash highlights the Text tool; when you mouse over to the stage, your cursor changes to crosshairs accompanied by a miniature letter T, as shown in
Figure 6-4.

220

FLASH CS6: The Missing Manual

www.it-ebooks.info

2. Using the two menus at the top of the Properties panel, choose TLF Text
and then, below, choose Read Only.

Adding Text
to Your
Document

Armed with this information, Flash is ready to create a text field that meets
those specs. By choosing Read Only, you create text that can’t be changed by
your audience. It works well for simple labels or headlines.
Tip

In the Properties panel, many of the text widgets, including the “Text engine” and “Text type” menus,
aren’t labeled. However, if you’re ever in doubt, move the cursor over a widget, and a tooltip appears with the
official name.

Figure 6-4

Text engine
Text type
Family
Style
Text Tool

Text cursor

After you select the Text tool, the
cursor changes to crosshairs with
a T symbol, and the Properties panel shows the available
options. At the top, you choose
a text engine and text type.
Farther down, you can choose a
font family, style, and size.

Size

3. In the Character subpanel, choose a family, style, and size.
These are the familiar settings that you use every time you create text. The
choices are similar to those you’d use in your word processor. In Figure 6-5, the
settings are for Verdana family, bold style, and 50-point type size.
4. Click the stage and drag to create a text field.
If you simply click once, Flash displays a squished-up, empty text field. If you
drag, you create a rectangle. Either method works, because the box resizes as
you type your text, and you can resize the box at any time.
5. Type some headline text, like Breaking News!
Your text appears on the stage, showing the specs you chose in step 3.

Chapter 6: Choosing and Formatting Text

www.it-ebooks.info

221

Adding Text
to Your
Document

Tip

If the type you specified looks different on someone else’s computer, then you’ve got a font-embedding
problem. It most often happens when you let your audience add or edit text, or when you create text with
ActionScript. Font embedding is covered in the chapter on animating text with ActionScript, page 582.

Figure 6-5

You can modify text
using several different
subpanels in the Properties panel. The Position
and Size settings work
the same as they do
with other objects on the
stage. Using the Character
and Paragraph subpanels,
you can fine-tune your
type as you would in a
page layout program.

Changing Text Position, Height, and Width
Once you have a block of text on the stage, you can make changes as you would
with any other graphic element:
• To move the text field, use the Selection tool (V). Drag to reposition the text.
• To resize the text field, use the Selection tool (V) to drag one of the handles
around the edge of the box.
• To stretch or squash the type, use the Free Transform tool (Q) and drag one of
the handles, as shown in Figure 6-6.
When resizing the text field, you can drag the handles whether you’re using the Text
tool or the Selection tool (solid arrow). The container holds the text and changes
size, but the text itself remains the same size. Some text fields can be changed to
automatically expand to accommodate the text they hold. When you resize a text field
that’s set to automatically expand, Flash changes it to a fixed-width field. To change
a fixed-width text field to one that automatically resizes to fit the text, double-click
the hollow square handle. The handle changes to a hollow circle.
As with shapes and other graphics, you can make position and dimension changes
directly in the Properties panel. Want to change the height of the text field? Just
type a new number. TLF text and Classic text fields behave in the same way when
you move them or change their width and height.

Rotating, Skewing, and Moving in 3-D
Naturally, Flash lets you spin your type around in different directions—after all, it is
an animation program. To spin text in two dimensions, use the Transform tool (Q).

222

FLASH CS6: The Missing Manual

www.it-ebooks.info

Select the text, and then move the cursor near one of the corners. When you see a
circular arrow, click and drag. The steps are similar for skewing text, except that you
position the cursor near one of the edges of the text field. A slanted double-arrow
appears when it’s time to click and drag.

Position Properties

Free Transform Tool

Adding Text
to Your
Document

Figure 6-6

You can use the same
tools to position and
transform blocks of text
that you use to work with
other graphics. Here the
headline was stretched
dramatically by increasing
the Height property
for the text field. Note,
however, that the font
size is still 50. Transforming distorts the text
but doesn’t change the
underlying typographic
properties.
Text box handles

If you want to rotate a text field in 3-D, you need to use TLF text, as shown in
­Figure 6-7. Then, you can use the 3D Rotation tool (W) and the 3D Translation tool
(G), as you would with any other graphic. The 3D Translation tool lets you move the
text field in 3-D space, as in text zooming in at you from far away.

Figure 6-7

You can use the Transform tool (Q) to rotate text
in two dimensions. For 3-D rotation or motion,
use TLF text and the 3D Rotation tool (shown
here) or the 3D Translation tool.

Chapter 6: Choosing and Formatting Text

www.it-ebooks.info

223

Adding Text
to Your
Document

Changing Text Color
Colorful text puts pizzazz into your animation; just make sure you don’t sacrifice
readability. You can change the color of an entire block of text, or you can choose
certain characters and change their color, as shown in Figure 6-8:
• To change the color of an entire block of text, use the Selection tool (V) and
click the text. Once you see the familiar text box and handles, head over to the
Properties panel. In the Character subpanel, click the Color swatch. A color picker
opens, similar to the ones you use to specify colors for shapes. You won’t see
any gradient settings for text, but you can change its opacity using the Alpha
percentage in the upper-right corner.

Figure 6-8

You use Flash’s familiar color
picker to select a color for your
text. To change the color for
specific characters within a
block of text, select the characters before you make your color
selection.

• To change the color of individual characters, use the Text tool (T). Click the
text block, and you see a blinking line similar to ones used in word processors.
This line marks the insert position. So, if you start typing, new characters appear
in the text. Just as in a word processor, you drag to select text. Select the text
you want to change, and then choose a color in Properties→Character→Color.
• With text, you set the color for the entire character—unlike shapes, where
you choose separate stroke and fill colors. However, TLF text gives you an extra color option called Highlight. As the name implies, this gives you a way to
make your text stand out through the use of a background color, as if you had
highlighted the text with a marker.

224

FLASH CS6: The Missing Manual

www.it-ebooks.info

Tip

You can create additional color effects using the Color Effect, Display, and Filters subpanels at the bottom
of the Properties panel. These settings work the same for shapes, objects, and text, and they’re described on
page 245.

Adding Text
to Your
Document

Workaround Workshop

Applying a Color Gradient to Text
Flash lets you apply a gradient to graphics (page 206) but
not text. But if you insist, and promise to use this effect in
moderation, you have a couple of ways to get it.
The most obvious solution is to turn the text into a graphic and
then add a gradient. Start by selecting the text and pressing
Ctrl+B (⌘-B) to break blocks of text into separate letters; then
press Ctrl+B (⌘-B) a second time to break the letters into
graphic elements. The drawback with this technique is that
the text is, well, no longer text. It still looks like text, but you
can’t edit it like text.
Alternatively, you can adapt the masking technique described
on page 151: You create a block of Classic text on one layer

and then, on another layer beneath that, use the rectangle
tool to create a block with a gradient color, as shown at the
top of Figure 6-9. To turn the layer with the text into a mask,
right-click (Control-click) the layer’s name, and then choose
Mask from the shortcut menu. The block with the gradient
disappears, except for the color that shows through the text.
Flash automatically locks masked and masking layers. You’ll
find that this text is editable inside of Flash—just unlock the
layer and make your changes. You can also change the text
using some of the ActionScript techniques discussed in Chapter
17. Want to color your text with a photographic image? Simply
place a photo in the layer below the text.

Creating a Text Hyperlink
You can add hyperlinks to your text with or without using ActionScript to generate
the code. Using TLF text, you can add a link to an entire text block, or you can add
the link to a few words or characters. Hyperlinks often open web pages or documents, but with some ActionScript code, they can perform other feats, too. To create
a link that opens a web page or document, you provide a URL address. URL stands
for Universal Resource Locator. You usually hear this term in relation to the Internet,
but a URL can just as well point to a file on your computer. The key is in the prefix:
Instead of beginning with http://, a link that points to a file on your computer begins
with file://. Keep in mind, this only works when the animation (SWF file) and the
linked file are on the viewer's computer. It won't work if the animation is on a web
page or stored on the Internet.
Here are the steps for creating a link when you’re using TLF text:
1. Use the Select tool (V) to select an entire text block, or use the Text tool
(T) to select text inside a text block.
Either method determines the clickable link text your audience clicks to open
a web page or a document.

Chapter 6: Choosing and Formatting Text

www.it-ebooks.info

225

Adding Text
to Your
Document

2. In Properties→Advanced Character→Link, type the complete URL, such as
www.missingmanuals.com .
You can use other standard URLs to open files or to create emails such as
file:///documents/missingmanual.txt or mailto://george@washington.edu.
3. Optional: In Properties→Advanced Character→Target, choose an option.
Target options are used, as they are in HTML, to tell the browser how to open
the linked web page: _self (the standard option) opens the page in the current
browser window; _blank opens the page in a new window; _parent opens the
page in the parent of the current frame; and _top opens the page in the toplevel frame of the current window. If you don’t choose an option, the menu
remains set to None, and the standard behavior is to open the page in the
current browser window.

Figure 6-9

You can create a mask with
text so the color of the graphic
or photo underneath shows
through the letters.
Top: Here are the two layers
before the mask is turned
on. The rainbow rectangle is
beneath the text.
Bottom: When the mask is
turned on, the layers are locked
and the rectangle with the
gradient disappears except for
the color that shows through
the text.

4. Press Ctrl+Enter (⌘-Return) to test your movie.
Flash plays your movie. When you move your cursor over the linked text, it
changes to the pointing finger, indicating a link. Click the text, and your linked
web page, document, or addressed email message should appear.
226

FLASH CS6: The Missing Manual

www.it-ebooks.info

Creating a Hyperlink Using Classic Text
Creating a link using Classic text is a little more convoluted than with TLF text.
As is often the case with Classic text, static text behaves one way and non-static
text (dynamic text and input text) behaves differently. If you want to highlight a
couple of words inside a paragraph of text, you need to use static text, as shown in
­Figure 6-10. When you add a hyperlink to dynamic text, Flash applies a link to the
entire text field. You can get around this behavior by selecting the text and then, in
the Properties→Character panel, clicking the “Render text as HTML” button. (There’s
no text label for the button, which looks like HTML angle brackets: < >.)

Adding Text
to Your
Document

Figure 6-10

If you want to add a
hyperlink to a couple
of words within a block
of text, you need to use
static text. With dynamic
or input text, you need to
use ActionScript to create
a link within HTML text, as
explained on page 601.

Here are the steps for applying a link to Classic static text:
1. With the Text tool, drag to select the words within the static text you want
to link.
If you prefer to navigate by keyboard, you can use the Shift and arrow keys to
select text, too—just as in a word processor.
2. In Properties→Options→Link, type the link details.
You need to include the path for the file, unless you’re certain that it’s going to
be in the same folder as the .swf file when the animation runs. A complete link
to a file on the Internet might look like this:

www.missingmanuals.com/cds/flashcs6mm/text_scram_finished.fla
3. If you want your link to open in a new browser window or tab, select
Properties→Options→Target→ _blank.
If you don’t change the target setting, the new page replaces your animation
in your audience’s browser. The other target settings let you open documents
in different sections of an HTML page using frames—a web design technique
that’s fallen out of fashion.
4. Highlight the hyperlinked text so your audience knows it’s a link.
If you want the linked words to be highlighted so your audience will know
they’re a link, you’ll have to do it yourself by changing the text color. Don’t be

Chapter 6: Choosing and Formatting Text

www.it-ebooks.info

227

Choosing and
Using Text
Containers

fooled; when you create a link, you see a line beneath the linked words in the
Flash authoring program, but when your animation runs in Flash Player, there’s
no line, no highlight, no indication that the words are linked. The only clue your
audience has that the words are linked is the changing cursor if they chance to
move the mouse over the words.
If you want to link an entire block of dynamic text, the technique is similar. You can
use the Selection tool (arrow) to select the text field, and then provide the link details
in the Properties→Options→Link box.
Tip

You can create an email link—great for a “contact us” button. Instead of http://, type mailto:, and
then add your email address to the end. For example, a complete address might look like this: mailto:harry@
stutzmotors.com. When your audience clicks the link, their email program of choice starts and creates an email
using that address in the link.

Choosing and Using Text Containers
At design time, when you click in a text field with the Text tool, you can select and edit
the existing text. You may also notice that the handles around the text box change.
One of the handles on the right or bottom of the text box appears larger than the
rest, as shown in Figure 6-11. This handle always provides some helpful information
about the text box’s characteristics and behavior.

Figure 6-11

The handles on a text box provide details about the type of
text field and the way it’s sized.
The hollow, round handle in the
upper-right corner of this text
field shows that it’s static text
that expands with the box.

Here’s your secret text field handle decoder ring for horizontal text:
• Handle at upper right means it’s Classic static text.
• Handle at lower right means it’s Classic dynamic or input text.
• Hollow circle means the text field expands as text is added.

228

FLASH CS6: The Missing Manual

www.it-ebooks.info

• Hollow square indicates that the text has a fixed width (as shown in Figure 6-12).
• Solid square means the dynamic text is scrollable.

Choosing and
Using Text
Containers

The codes for vertical text are similar, except that the handle providing information
is always at the bottom of the text box. It appears at bottom left for static text and
at bottom right for dynamic and input text.
When you click inside a TLF text container, it displays square handles on the left
and right side. As described on page 232, you use these handles to flow text from
one container to another.

Figure 6-12

The handle shown in the
lower-right corner of this
text box indicates that this
dynamic text has a fixed
width.

Creating Vertical Text Containers
You can change the orientation of TLF text and Classic static text using the Properties
panel. As shown in Figure 6-13, the “Change orientation of text” menu is at the top,
next to the Text type menu. Your choices are “Horizontal,” “Vertical,” and “Vertical,
left to right.” You edit text that’s been turned with the orientation options as with
any other text. Choose the Text tool from the Tools panel, and click the text field. It
may take a moment or two for you to get your bearings if you’re not used to working with vertical text. But you’ll soon find it’s easy to drag to select text. The arrow
keys help you navigate back and forth. When you type, text appears vertically and
follows the paragraph’s orientation properties.
When you use TLF text, you can rotate characters within the lines of text. This technique is handy if you want, for example, to create vertical text like the neon signs
that attach to the sides of buildings. Set the “Change orientation of text” menu to
Vertical, and then change the Rotation to 270 degrees, as shown in Figure 6-14.

Multiline and Single-Line Text Containers
In Flash, text containers are either multiline or single line. Multiline containers are
great for big paragraphs of text, while single-line containers work well for headlines,
labels, and input text.
When you’re working with TLF text, go to Properties→“Container and Flow”→Behavior.
The menu gives you these choices: “Single line,” “Multiline,” “Multiline no wrap,” and
“Password.” The available options depend on the text type. For example, Password

Chapter 6: Choosing and Formatting Text

www.it-ebooks.info

229

Choosing and
Using Text
Containers

is available only with editable text. You use it to conceal the characters someone
types into a password box.

Figure 6-13

Use the “Change orientation of text” menu to create vertical text. Then, use
the Rotate button to change the direction the vertical text points.

When you’re working with Classic text, you have similar options, but the Properties
panel tools are slightly different. With Classic static text, you create multiline text
boxes by pressing Enter (Return). If you’re using dynamic or input text, you find the
single-line and multiline options in the Paragraph subpanel.

Applying Advanced Formatting to Text
Typographers and art directors are as particular about text as winemakers are about
wine. With Adobe, the Ministry of Fonts, as its publisher, Flash has lots of tools to
keep type connoisseurs smiling. You can delve into these features if you like, but
right out of the box, Flash has some pretty good settings:
TLF text typography
• Tracking (Properties→Character→Tracking). Tracking determines how much
space surrounds individual letters. In most cases, you can leave the tracking at
zero for the best readability. Enter a negative number for tighter tracking, where
letters can bump up against one another or even overlap. A positive number
creates larger spaces between letters, a style sometimes used for logos and
other artsy effects.

• Auto kern (Properties→Character→“Auto kern”). Kerning also affects the
space between characters, but its purpose is different. Some letters, like A
and V, look better when they’re tucked a little closer together, to eliminate
the awkward gaps that are especially noticeable at larger type sizes. Flash’s

230

FLASH CS6: The Missing Manual

www.it-ebooks.info

Auto-kern feature is on when you first begin using Flash. If you want to turn it
off, turn off the “Auto kern” checkbox.

Choosing and
Using Text
Containers

• Leading (Properties→Character→Leading). Back in the days of metal type,
printers called the space between lines leading, because they actually used lead
slugs to set the space. The name is still used to set the space between lines.
With TLF text, you can set the leading as a percentage of the line height or as
a specific point size.

Figure 6-14

Change
orientation
of text

You can change your text’s
orientation, and you can rotate
the characters within lines of text.
Here the orientation is changed to
vertical and the rotation is set at
270 degrees.

Rotation

Classic text typography
• Letter spacing (Properties→Character→Letter spacing). Works the same as
TLF text tracking.

• Auto kern (Properties→Character→Auto kern). Works the same as TLF auto
kern.
• Line spacing (Properties→Paragraph→Line Spacing). Works the same as
TLF leading.
Chapter 6: Choosing and Formatting Text

www.it-ebooks.info

231

Choosing and
Using Text
Containers

Create a Multicolumn Text Container
Before Adobe developed TLF text, you created multiple newspaper-style columns
of text by creating multiple containers and carefully putting the right amount of
text in each container. With TLF text, you can create up to 10 columns of text in any
container. Simply go to Properties→“Container and Flow” and type a number from 1
to 10 for the Columns setting, as shown in Figure 6-15. Then use the box at the right
to specify the distance between columns.

Columns

Gutter width

Figure 6-15

With TLF text, you can create up to 10 columns in a text container. Use
the box to the right to specify the gutter width—that is, the distance
between columns.

Flow Text from One Container to Another
Another TLF text specialty is making text flow from one container to another. If you
know your text is always going to be seen at the same size or with the same typeface,
you might not worry about automatically flowing text. However, if you give your
audience the option to change the text size or font, the text may need more or less
space. That’s when automatically flowing text comes in handy.
The following steps demonstrate how flowing text works:
1. Using TLF text, create two text boxes on the stage.
You can use any text type: read only, selectable, or editable.
2. Copy and paste several paragraphs of text.
You can type directly into the text boxes, but it’s faster to copy and paste text
from a letter or other document.
3. In the lower-right corner of the first text container, click the red square.
The cursor changes—it looks like it has a paragraph of text attached.

232

FLASH CS6: The Missing Manual

www.it-ebooks.info

Animating
Text Without
ActionScript

4. Move the cursor over the second text container.
When the cursor is over an empty text container, it changes to a chain link.
5. Click in the second container.
Text flows automatically from the first container to the second, as shown in ­Figure
6-16. A blue line connects the two text boxes, indicating how the text flows.

First text field

Text Link cursor

Second text field

Figure 6-16

Here there are two TLF
text fields on the stage.
You can create a link so
that text flows automatically from one field to the
other. Click the red square
in the lower-right corner
of the first text field and
then move the cursor over
the second. Click when
the cursor shows a link
icon (circled).

Click to link text fields

Not only does any extra text fill the second container, but it also makes automatic
adjustments if you change the size of the text containers or change the type specifications.
Disconnect flowing text
Sooner or later, you’ll want to break the link between two text containers. To do
that, just double-click the text flow button in either container where the connecting
line meets the box.

Animating Text Without ActionScript
You can animate text using the usual Flash tools, or you can use ActionScript. Which
technique you choose depends on your own skills and inclinations. This section
explains how to create some interesting animation effects for text using only Flash.
Note

If you’d like to see the finished animation before you begin, you can download 06-1_Text_Scram.fla
from www.missingmanuals.com/cds/flashcs6mm.

Chapter 6: Choosing and Formatting Text

www.it-ebooks.info

233

Animating
Text Without
ActionScript

The following steps show you how to make text move using frames and Flash’s
Modify commands.
1. Select File→New→Flash File (ActionScript 3.0).
Make the document size 550 x 400 pixels, the frame rate 12 fps, and choose a
light-colored background.
2. Use the Text tool to create a line of Classic static text with a font size of about
36 in a darker color that complements the document background color.
You can use any word or phrase you want. “Make this text scram,” for example.
3. Click Frame 12 in the text layer, and then press F5 to insert a frame.
The text layer now has 12 frames. Equally important, when you create new layers, they’ll automatically be 12 frames long, saving you a click or two of work.
4. With the text selected, choose Modify→Break Apart.
The Break Apart command comes in very handy when you want to animate
text. It puts each letter in its own text field, which gives you an opportunity to
move the letters independently.
5. While the text is still selected, choose Modify→Timeline→“Distribute to
Layers.”
Flash places each letter in its own layer in the timeline and thoughtfully names
each layer by the letter, saving you a lot of cut, paste, and layer creation work.
Layer 1 is empty at this point, and you can remove it if you want to tidy things up.
Click the layer, and then click the Delete icon (trash can) below the layer names.
6. Click the M layer (the capital M in “Make”), right-click the M layer in the
timeline, and then choose Create Motion Tween.
The 12 frames of the M layer take on the blue hue that indicates a motion tween.
7. Ctrl-click (⌘-click) Frame 12, and then drag the letter M off the right edge
of the stage.
Press the Shift key as you drag to create a perfectly straight motion path. The
letter M displays a motion path. If you scrub the playhead, you see that it moves
from the left side of the stage until it exits stage right.
8. With the letter M still selected and the playhead still at Frame 12, select
the Transform tool, and then scale the letter so it’s about five times its
original size.
If, after you resize it, part of the letter is still visible on the stage, pull it a little
more to the right.
Tip If you want to accurately resize the letter, use the Motion Editor to handle the scaling (Window→Motion
Editor→Transformation→Scale X). (Motion Editor details are on page 311.)

234

FLASH CS6: The Missing Manual

www.it-ebooks.info

9. With the M still selected in Frame 12, open the Properties→Filters panel.
Click the small triangle next to the word “Filters” to open the panel. Initially
the panel is empty.

Animating
Text Without
ActionScript

10. Click the “Add filter” button in the lower-left corner, and then choose Blur
from the pop-up menu.
The menu lists all the filters you can apply to the selected object—in this case,
the oversized letter M. When you click Blur, the properties for the filter appear
in the Filter panel, as shown in Figure 6-17.

Figure 6-17

You apply filters to selected objects. Each filter has different properties. Here the Blur
filter shows three different properties to control the direction and the quality of the
blurring effect.

11. Click the Blur X setting and type 30.
Doing so changes both the Blur X and Blur Y settings, which initially are linked
together. Sometimes you can create a better speeding blur effect by limiting
the blur to one axis. If you want to unlink one of the settings, click the link icon
to the right of the setting; the icon changes to a broken link. Then you can enter
a separate value for each property.
12. Move the playhead to Frame 1, and then with the letter M selected, type 0
in the Blur X and Blur Y filter settings.
You need to re-select the letter M after scrubbing the Playhead. Setting the Blur
filter in Frame 12 also affects the letter in Frame 1. Setting Blur X and Blur Y to
0 creates a nice, sharp letter again.
13. Move the playhead to Frame 6, and with the letter M still selected, type 0
in the Blur X and Blur Y filter settings.
As explained on page 107, you can change just about any property, at any
point, along a motion path. In this case, you’re changing the Blur filter so that
the letter stays focused for the first part of its trip and then becomes blurry as
it leaves the stage.
You’re done with the motion tween effect. If you test your animation at this point
(Ctrl+Enter or ⌘-Return), you see the letter M move from left to right, becoming
larger and blurry as it makes its journey, as shown in Figure 6-18. In the next steps,
you’ll copy the motion tween from the letter M and paste that motion into the layers
Chapter 6: Choosing and Formatting Text

www.it-ebooks.info

235

Animating
Text Without
ActionScript

with the other letters. (Admit it—you were worried you were going to have to create
all those tweens by hand.)
1. Right-click the motion tween in the M layer, and then choose Copy Motion.
Flash stores a copy of the tween on the Clipboard. It includes that carefully
constructed motion and all its property changes.

Figure 6-18

In this animation, each
letter peels off and moves
to the right. As the letters
move, they grow and
become blurry.

2. Click the first frame of the “a” layer, and then Shift-click the first frame of
the “m” layer in the word “scram.”
The first frame of each layer (except for M in the word “Make”) is selected.
3. Right-click one of the selected frames, and then choose Paste Motion from
the shortcut menu.
Flash pastes the tween into the each of the selected layers. Obediently, the
letters now follow the same motion, scale, and blurring changes as dictated
by the tween.
4. Press Ctrl+Enter (⌘-Return) to test your animation.
The letters rush off the right side of the stage in a large blurry clump. Kinda
cool, but your audience will appreciate the effect even more if the letters peel
off one by one across the stage. You can do that by staggering the frames on
each layer, as detailed in the next steps.
5. In the “a” layer, click the motion tween, and then drag all 12 of the selected
frames down the timeline a distance of six frames.

236

FLASH CS6: The Missing Manual

www.it-ebooks.info

The motion tween for “a” begins its action on Frame 7. This creates about a
half-second gap between the time when the M starts moving and when the “a”
starts moving. After the move, there are six blank frames at the beginning of
the “a” layer.

Animating
Text Without
ActionScript

6. Select the letter “a” in Frame 7, and then paste it into Frame 1 using Edit→
“Paste in Place” (Ctrl+Shift+V or ⌘-Shift-V).
After you move the tween, you need to put a copy of each letter back in the
first frame of the animation. Using “Paste in Place” displays the letter in the
right position in the frames before the tween takes effect.
7. Repeat steps 18 and 19 to create a six-frame offset between each of the
letters.
When you’re done, the timeline looks something like Figure 6-19.

Static frames

Figure 6-19

Staggering the tween action in the timeline creates an interesting
effect as the letters make their move, one after the other.

Tweens

Experimenting with Animated Text
Applying motion tweens to text can really capture your audience’s attention. It works
great for headlines, intros, and transitions, but like anything else, it’s possible to have
too much of a good thing. No one likes to wait these days, so be careful not to strain
your audience’s patience. That said, you can pack more effects into the previous
animation without making it run longer. You can add other moving objects to the
animation, like more text or shapes. If you turn each of the letters into a movie clip,
you can take advantage of Flash’s 3-D capabilities. Then your tweens can twist and
flip the letters as they move through three-dimensional space. Experiment—let your
imagination run wild! If you’re looking for inspiration, study the techniques used by
some of the network and cable news programs. They love to use moving text and
other visuals to make the news seem more exciting than it really is.
Store the techniques that work in your Flash toolkit and remember the lessons you
learn from the ones that flop. As with any craft, you’re likely to learn as much from
your mistakes as from your successes.

Chapter 6: Choosing and Formatting Text

www.it-ebooks.info

237

Animating
Text Without
ActionScript

Moving Text in Three Dimensions
Want to make a block of text spin in the air or float off into the distance the way it
does at the beginning of Star Wars movies? You can perform those feats of typographic magic with TLF text and the “3D Position” and View subpanels.
To create a spinning block of text, follow these steps:
1. Click the Text tool, and then in the Properties panel, choose TLF Text and
Read Only.
Read-only text works best here, because you wouldn’t want your audience to
select or edit spinning text. It would make them dizzy.
2. Click the stage and add text to the text container.
You can type in your own text or copy and paste it from some other source.
3. Click Frame 48 in the timeline, and then press F5.
The timeline for your movie is now 48 frames long.
4. Right-click the timeline, and then choose Create Motion Tween.
In the timeline, the frames show the light-blue highlight that indicates a motion
tween.
5. Move the playhead to the last frame in the tween.
That should be Frame 48.
6. Select the 3D Rotation tool (W), and then click the text box.
The 3D Rotation sphere appears on top of the text box.
7. Drag one of the sphere axes to rotate the text.
For complete details on the 3D Rotation tool, see page 222. If you want to
rotate the text with more precision, check out page 311, which explains how to
use the Motion Editor.
8. Press Enter to preview your animated text.
For the most part, you can manipulate TLF text just as you would a movie clip symbol.
That gives you lots of opportunities for spinning, distorting, and changing colors. As
shown in the previous steps, you use the 3D Rotation tool (W) to spin text around
a single point. If you want to move text forward or backward in 3-D space, use the
3D Translation tool (G). If you’re up for a challenge, try creating an animated Star
Wars–style block of text like the one shown in Figure 6-20. Here are some tips to
help you complete the project:
• Create a TLF text container.
• Use the 3D Rotation tool to spin the text so it’s leaning backward.
• Create a motion tween.

238

FLASH CS6: The Missing Manual

www.it-ebooks.info

• Use 3D Position Vanishing Point X and Vanishing Point Y settings to adjust the
vanishing point for your animation.

Text
Properties by
Subpanel

• Use the Perspective Angle setting to adjust the text angle.
• Create property keyframes and change the “3D Position and View”→Z property
to move the text block away from the audience.

Figure 6-20

Using TLF text and the “3D
Position and View” settings, you can create text
in space that looks similar
to a popular science
fiction epic.

Text Properties by Subpanel
So far, this chapter has only scratched the surface when it comes to tweaking type.
Printers, graphic artists, and typographers have dozens of methods for arranging
and positioning type—and, with TLF text, so do you. These settings determine the
space between individual letters, between words, and between lines and paragraphs.
There are settings to set margins and to justify or center text. The possibilities may
boggle your mind if you’re not up to speed with printing jargon. And the fact is, you
may never use some of the text tools provided in Flash. Still when you need them,
it’s helpful to know where the tools are, so here’s a subpanel-by-subpanel description of the text properties.
Note

Keep in mind, some properties are available to only a specific text engine or text type.

Chapter 6: Choosing and Formatting Text

www.it-ebooks.info

239

Text
Properties by
Subpanel

Text Engine Properties
As explained on page 216, the top of the Text Properties panel has menus for choosing the text engine (TLF Text or Classic Text) and the text type (Figure 6-21). For
every text type except Classic static text, there’s an Instance Name box. Give your
text an instance name, and then you can refer to it in ActionScript code. This gives
you the opportunity to change text properties as your Flash animation runs. In the
lower-right corner, use the “Change orientation of text” box to change the direction the text flows when you’re working with different languages. This option is not
available for Classic dynamic text or Classic input text.

Figure 6-21

Menus to choose the text engine and text type appear at the top of the Properties panel
after you select the Text tool.

Position and Size
For Classic text, you use standard X and Y coordinates to position text on the stage.
(For TLF text, use the “3D Position and View” subpanel.) The upper-left corner of
the text box is the registration point (page 253). The W and H properties set the
width and height of the text block. Use the chain link to lock the values and maintain
proportions. Changing the width and height doesn’t change the font size specification; it distorts the text.

3D Position and View (TLF Text Only)
With TLF text, you can control the position of your text blocks in three dimensions.
Use the “3D Position and View” subpanel (Figure 6-22), where you find controls
similar to those used with movie clip symbols. The X and Y properties represent
horizontal and vertical positioning. Use the Z property to move the text block toward or away from your audience. As you use the 3D Rotation tool (W) to make
text blocks spin around, you automatically change the “3D Position and View’s”
W and H settings. The Perspective Angle setting (camera) changes the apparent
angle of the view. The Vanishing Point (X and Y) settings control the orientation of
the Z axis by relocating the vanishing point (the point where parallel lines appear
to merge in the distance).

Character
Use the Character subpanel (Figure 6-23) for the standard type specifications:
­Family (font), Style, Size, and Color. With TLF text, you also have the option to set
the highlight (background) color. Leading sets the space between lines of text. Tracking sets the distance between individual characters (or glyphs, as the typographers
240

FLASH CS6: The Missing Manual

www.it-ebooks.info

say). Turn on the “Auto kern” checkbox to have Flash automatically adjust the space
between certain characters. For example, in some cases auto-kerning pushes the
letters A and V closer together to avoid an unsightly gap.

Text
Properties by
Subpanel

Figure 6-22

For TLF text, use the “3D Position and View” settings to display your text with 3-D effects.

Figure 6-23

Many of the settings on the Character subpanel are shared for both text engines and all
types of text. Here you can choose a font family, text size, color, and style.

The Anti-alias settings require a little explanation. It’s not always easy to make type
look good on a computer screen, especially when displaying a complex typeface
at a small size. Anti-aliasing is one of those fool-the-eye tricks used to make small
type look less jagged. Flash gives you a few options depending on the text type
you’ve selected:
• Device fonts. This option uses the fonts installed on the computer where the
Flash animation is viewed. Usually, these fonts will be readable at most sizes.
• Bitmap text [no anti-alias] (Classic text only). This option turns off anti-aliasing
because the fonts are converted to bitmap images. This increases the size of
the Flash file, and the text may appear jagged when it is resized.
• Anti-alias for animation (called Animation for TLF text). As the name implies,
this option is good for text that you want to reposition and resize on the fly.

Chapter 6: Choosing and Formatting Text

www.it-ebooks.info

241

Text
Properties by
Subpanel

Some typographic details, such as alignment and kerning, are ignored to create
smoother animation.
• Anti-alias for readability (called Readability for TLF text). The best option
for large blocks of small text. All the anti-aliasing tricks are used to make it
easier for your audience to read.
• Custom anti-alias (Classic text only). If you think you can do a better job than
Flash, you can use your own anti-alias settings, such as sharpness and smoothness. Some additional text styles are available in the Character subpanel, such
as buttons that let you toggle superscript and subscript characters (like ™). As
usual, TLF text offers some extra features, like Underline and Strikethrough.
Using the Rotation menu, you can rotate characters within the text line. For
more details, see “Creating Vertical Text Containers” on page 229.
TLF text offers more advanced character options than Classic text. In fact, there are
enough new features that they get their own Advanced Character subpanel (see the
next section). The more modest Classic text features are placed in the Character
subpanel, where they’ve always been. They include these choices:
• Selectable. Click to let your audience select text at runtime. This option is
always on for input text.
• Render text as HTML (dynamic text and input text only). Tells Flash to interpret any HTML code it encounters as dynamic text instead of just displaying it.
• Show Border Around Text (dynamic text and input text only). Select to place
a border around dynamic or input text to set it off from other text.

Advanced Character (TLF Text Only)
The Advanced Character options (Figure 6-24), which are available only with TLF text,
change depending on the text type selected. The TLF text types include Read Only,
Selectable, and Editable. For example, settings used to create hyperlinks aren’t
available in editable text—it wouldn’t make sense.
The Link and Target options are used to create hyperlinks. Type a URL (like
http://www.missingmanuals.com) to display text in your finished animation as a
clickable link. Target options are used, as they are in HTML, to tell the browser how
to open the linked web page: _self (the standard option) opens the page in the current browser window; _blank opens the page in a new window; _parent opens the
page in the parent of the current frame; and _top opens the page in the top-level
frame of the current window.
The rest of the options in the Advanced Character panel are typographic features.
For example, use the Case options to change the text to uppercase, lowercase, or
small caps. The Digit Case options change the baseline positioning of numbers. Use
the Digit Width options to control the horizontal spacing of characters. This is useful
when you want numbers to line up vertically in columns. Printers sometimes use
special characters called ligatures in place of letter pairs, like œ and æ. You have a

242

FLASH CS6: The Missing Manual

www.it-ebooks.info

few choices when it comes to ligatures: Minimum, Common, Uncommon, and Exotic.
Use Baseline Shift to change the vertical position of selected text. Positive numbers
move the text up above the natural baseline, while negative numbers move text
down. The Advanced Character Locale menu is used to choose different languages
and their different character sets.

Text
Properties by
Subpanel

Figure 6-24

The Advanced Character subpanel works exclusively with the TLF text engine. Using these
tools, you can create hypertext links and shape your text like a master printer.

Paragraph
For the most part, the Paragraph subpanel contains the usual suspects. Because
TLF text is designed to accommodate several different languages, the nomenclature
may seem a little unfamiliar. So, for English and other European languages, “Align
to start” lines up text on the left side, leaving the right side ragged. Other options
include “Align to center” and “Align to end,” which is ragged left and aligned to the
right side. There are four justify options, which force the text to fill the line, except for
the last line. The options are “Justify with last line aligned to start,” “Justify with last
line aligned to center,” “Justify with last line aligned to end,” and “Justify all lines.”
When you justify text, you can use the Text Justify menu to add spacing between
letters (letter spacing) or between words (word spacing).
Using the Paragraph properties, you can set the “Start margin,” “End margin,” and
“First line indent.” The two Spacing properties determine the space before and
after paragraphs.

Options (Classic Text Only)
The Options subpanel appears only when you’ve chosen the Classic text engine.
(These same hyperlink tools are available to TLF text in the Advanced Character
subpanel.) The Link and Target options are used to create hyperlinks. Type a URL
(like http://www.missingmanuals.com) to display text in your finished animation as
a clickable link. Target options are used, as they are in HTML, to tell the browser how
to open the linked web page: _self (the standard option) opens the page in the current browser window; _blank opens the page in a new window; _parent opens the

Chapter 6: Choosing and Formatting Text

www.it-ebooks.info

243

Text
Properties by
Subpanel

page in the parent of the current frame; and _top opens the page in the top-level
frame of the current window.

Container and Flow (TLF Text Only)
The Container and Flow settings control some nifty new text features, such as the
ability to create multiple columns of text within a single container (text box) and the
ability to flow text from one container to another. Using the Behavior menu (Figure 6-25), you can create text containers that are single-line, multiline, or “Customize
for Passwords.” (For details, see page 229.)
There are two color swatches at the bottom of the Container and Flow subpanel,
which you use to select the border and background colors for the text container. Use
the Padding settings to create space between text and the edge of the container.

Figure 6-25

The Container and Flow
subpanel, shown here,
controls several of the
advanced typographic
features that are available
when you use TLF text.

Text flow buttons

More text not shown

Color Effect (TLF Text Only)
The Color Effect subpanel appears when you choose TLF text. The settings here give
you control over the brightness, tint, and opacity of the text and the text container.
Choose the color effect you want to apply, and then use the sliders in the panel
to make your adjustments. As you’ll see in Chapter 17, you can control these same
features using ActionScript.

Display (TLF Text Only)
Use the Display subpanel to add and manage blends and other special effects.
Blends are created by overlapping images. Flash uses mathematical calculations to
create different effects with descriptive names like Darken, Lighten, Multiply, Difference, Add, Invert, Erase, and Alpha. The best way to get a handle on these special
effects is to use them. Create a shape or other graphic object with a color fill or a
pattern. Then create a text field over that shape. With the text container selected,
go to Properties→Display→Blending and choose an option such as Lighten, Screen,
or Erase.

244

FLASH CS6: The Missing Manual

www.it-ebooks.info

Filters
Filters perform a number of color effect chores. They work with both TLF text
and Classic text. So, if you want to add a drop shadow to separate text from the
background, then go to the Filters subpanel. Other options include Drop Shadow,
Blur, Glow, Bevel, Gradient Glow, Gradient Bevel, and Adjust Color. You can apply
multiple filters to your text, so it would be possible to have bevel characters that
cast a shadow. As you pile on special effects, keep in mind that someone may want
to actually read the text.

Text
Properties by
Subpanel

In general, you apply filters to the entire text container. If you want to apply filters
to individual letters, choose Modify→Break Apart to break the text container into
multiple text containers. To turn an individual character into a shape so you can
tween it or distort it to the nth degree, select the individual character and then
choose Modify→Break Apart again. That turns the character into a shape, just like any
other Flash shape and it is no longer editable text. Once you’ve done that, you can
change the stroke and fill color independently. Use Modify→Transform→Envelope to
distort the character. And, of course, you can use the Shape Tween tool to animate
these changes.
Tip

As a designer, the color effects like blends, filters and gradients give you an opportunity to add visual
drama to your project. However, if your work is destined for handheld devices like smartphones and tablets, it’s
best to use these effects sparingly because they gobble up CPU resources, memory, and battery life.

Chapter 6: Choosing and Formatting Text

www.it-ebooks.info

245

www.it-ebooks.info

chapter

Reusable Flash: Symbols
and Templates

7

T

he secret to productivity is to work smarter, not harder. And the secret to smart
work is to avoid doing the same thing more than once. Flash understands. The
program gives you ways to reuse bits and pieces of your animations—everything from simple shapes to complex drawings, multiframe sequences, and even
entire animations. Create something once; reuse it as many times as you like. Reusing animation elements can save you more than just time and effort—Flash lets you
store pieces of animation as reusable master copies that can actually whittle the size
of your finished animation file. That’s great news if you plan to put your animation
up on a website or shoot it out to handhelds. The smaller your file size, the faster it
downloads, which makes you less likely to lose your audience to impatience.

Templates are another work- and time-saving feature in your Flash arsenal. You can
use these predesigned Flash documents as starting points for your own projects.
Even better, you can save documents as templates. You can also save templates
containing the pictures, logos, and other elements that appear in just about all your
documents. Then you don’t have to start from scratch next month when you have
a similar project.
Tip

With Flash Professional CS6, Adobe has included several templates that serve as hands-on learning tools.
Want to learn how to create random movement? Check out the templates in the Animation category. You’ll find
several button examples, as well as techniques for creating rain and snow effects. In the Sample Files category,
some of the examples include handwriting simulations, menu navigation tools, and walking figures. Chapter
23 includes an exercise that shows how to use an “AIR for Android” template that senses the position of the
smartphone or tablet.

247

www.it-ebooks.info

Symbols and
Instances

Symbols and Instances
Copying and pasting is the most obvious way to reuse something you’ve created,
but while that time-honored technique saves time, it doesn’t save space. Say, for
example, you need to show a swarm of cockroaches in the Flash advertisement you’re
creating for New and Improved Roach-B-Gone. You draw a single cockroach, then
copy and paste it 100 times. Congratulations: You’ve got yourself 101 cockroaches…
and one massive Flash document.
Instead, you should take that first cockroach and save it in Flash as a symbol. Symbols
give you a way to reuse your work and keep your animation’s finished file size down
to a bare minimum. When you create a symbol, Flash stores the information for the
symbol, or master copy, in your document as usual. But every time you create a copy
(an instance) of that symbol, all Flash adds to your file is the information it needs to
keep track of where you positioned that particular instance and any modifications
you make to it on the stage.
So, to create the illusion of a swarm of roaches, you drag instances of the symbol
onto the stage. Neither you nor Flash have to duplicate the work of drawing each
roach. You can even vary the roach instances a little for variety and realism (so important in a pesticide ad) by changing their color, position, size, and even their skew.
If symbols offered only file optimization, they’d be well worth using. But symbols
give you additional benefits:
• Consistency. By definition, all the instances of a symbol look pretty much the
same. You can change certain instance characteristics—color and position on the
stage, for example—but you can’t redraw them; Flash simply won’t let you. (You
can’t turn a roach into a ladybug, for example.) For situations where you really
need basic consistency among objects, symbols help save you from yourself.
• Instantaneous update. Suppose you want to change the roach color from
brown to black. Edit the “master” roach stored in your Library, and Flash automatically updates all the instances of that symbol. So, for example, say you
create a symbol showing the packaging for Roach-B-Gone. You use dozens and
dozens of instances of the symbol throughout your animation, and then your
boss tells you the marketing team has redesigned the packaging. If you’d used
Copy and Paste to create all those boxes of Roach-B-Gone, you’d have to find
and change each one manually. But with symbols, all you need to do is change
the symbol in the Library. Flash automatically takes care of updating all the
symbol’s instances for you.
Does that mean you can’t make changes to one of the roaches already on the
stage? No, not at all. You can change an instance without affecting any other
instances or the symbol itself. (You can turn one roach light brown, for example,
without affecting any of the dark-brown roaches.)

248

FLASH CS6: The Missing Manual

www.it-ebooks.info

• Nesting. Symbols can contain other symbols. Sticking symbols inside other
symbols is called nesting symbols, and it’s a great way to create unique,
complex-looking images for a fraction of the file size you’d need to create them
individually. Suppose you’ve drawn the perfect bug eye. You can turn it into a
symbol and place it inside your symbols for roaches, ladybugs, and any other
insect you want.

Symbols and
Instances

Flash lets you create three types of symbols: graphic symbols, movie clip symbols,
and button symbols. As you see in Figure 7-1, Flash stores all three types of symbols
in the Library.

Figure 7-1

The Library is your one-stop shop for symbols. From
this panel, you can create symbols, edit them, and
drag instances of them onto the stage. Note the
icons and descriptions that tell you each symbol’s
type—graphic, button, or movie clip. If you don’t
see the Library panel, press Ctrl+L (⌘-L) or go to
Window→Library. To display all the information in
the Library panel, you may want to undock the panel
by dragging the tab away from the Properties dock.
Then, you can resize it.

Graphic Symbols
You can tell Flash to turn everything from a simple shape (like a circle or a line) to
a complex drawing (like a butterfly) into a symbol. You can also nest graphic symbols. For example, you can nest butterfly wing symbols inside a butterfly symbol,
as shown in Figure 7-2.
A graphic symbol isn’t even limited to a static drawing. You can save a series of
frames as a multiframe graphic symbol that you can add to other animations.

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

249

Symbols and
Instances

Note

Another kind of symbol that contains multiple frames is a movie clip symbol (page 267). But there
are big differences between the two, as described in the box on page 251.

Figure 7-2

If you’re really serious
about paring down the
size of your animation
file, consider nesting
your symbols. Here a
single wing symbol
is used for both the
butterfly’s wings. The
wing instance on the left
was flipped horizontally
(Modify→Transform→Flip
Horizontal). Flash lets you
flip, resize, and recolor
symbol instances, so you
can create surprisingly
different effects using just
a few basic shapes—all
while keeping your
animation’s file size as
small as possible.

Flash gives you two options for creating a graphic symbol:
• You can create a regular image on the stage and then convert it to a graphic
symbol. This is the best approach for those times when you’re drawing an image (or a multiframe animated scene) and suddenly realize it’s so good that
you want to reuse it.
• You can create your symbol from scratch using Flash’s symbol editing mode. If
you know going in that you want to create a reusable image or series of frames,
it’s just as easy to create it in symbol editing mode as it is to create it on your
main animation’s stage and timeline—and you get to save the conversion step.
The following sections show you both approaches.
Converting an existing image to a graphic symbol
If you’ve already got an image on the stage that you’d like to turn into a symbol,
you’re in luck: The process is quick and painless.

To convert an existing image on the stage to a graphic symbol:

250

FLASH CS6: The Missing Manual

www.it-ebooks.info

1. On the stage, select the image (or images) you want to convert.
Flash’s selection tools are described on page 61. Converting a grouped or editable image into a graphic symbol is quick and easy. Figure 7-3 shows three
separate images selected that, all together, form a star.

Symbols and
Instances

2. Select Modify→“Convert to Symbol.”
The “Convert to Symbol” dialog box appears.

Figure 7-3

You use the little grid
labeled Registration to
position the registration
point of your symbol.
Most of the time, it’s fine
to leave the registration
point in the upper-left
corner; see the box on
page 253 for the full story.
If necessary, you can reposition it later by editing
your symbol (page 257).

Frequently Asked Question

Multiframe Graphic Symbol vs. Movie Clip
A movie clip symbol is a series of frames, but a graphic symbol can have multiple frames, too. So what’s the difference
between the two?
Leave it to the Flash development team (the people who let
you add motion to a shape tween and manipulate shapes with
a motion tween) to refer to a multiframe animation clip as a
graphic symbol (instead of a movie clip symbol). The truth is,
there are some big differences between a multiframe graphic
symbol and a movie clip. For the programmer, the biggest
difference between multiframe graphics and movie clips is that
movie clips can be controlled in ActionScript while multiframe
graphics cannot. Here are two other differences:
• A multiframe graphic symbol has to match the animation
to which you add it, frame for frame. For example,
suppose your main timeline has 20 frames and you add
a 15-frame graphic symbol to Frame 1. Frame 1 in the main
timeline shows Frame 1 of your graphic symbol. Frame 2 in
the main timeline shows Frame 2 of the graphic symbol,
and so on. If your main timeline has only five frames,

you’d see only five frames of the graphic symbol. A movie
clip symbol, on the other hand, doesn’t have to match
the animation you add it to frame by frame because
movie clips have their own timelines. So, if you add a
15-frame movie clip symbol to a main timeline with only
a single frame, you still see all 15 frames of the movie clip
symbol. It loops unless it encounters a keyframe with an
ActionScript statement telling it to stop playing.
• A multiframe graphic symbol can’t include sound or
interactivity; a movie clip symbol can. Movie clip symbols
take up just one frame in the main timeline, so you can
drop instances of them into button symbols and other
movie clip symbols to create interactive nested symbols.
Because they’re not tied frame for frame to the animation
you drop them into, they’re able to hang fire while your
animation plays and spring into action only when an
audience member clicks them.
Chapter 11 and Chapter 12 show you how to add sounds and
ActionScript actions to your symbols, respectively.

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

251

Symbols and
Instances

3. In the Name text box, type a name for your symbol.
Because you’ll be creating a bunch of instances of this copy over the course
of the next several hours, days, or weeks (and because you may end up with
dozens of symbols before you’re finished with your animation), you want a
unique, short, descriptive name.
4. Set the Type drop-down menu next to Graphic, and then click OK.
Flash creates the new graphic symbol, places it into the Library, and automatically replaces the selected image on the stage with a selected instance of the
symbol (Figure 7-4). Notice the instance’s single bounding box (the original
three images in this example had three).
Tip

If you’re already poking around the Library panel, you can create a new graphic symbol quickly by
clicking the Library panel’s New Symbol button (at the bottom of the panel) or by clicking the Library panel’s
Options menu, and then, from the pop-up menu that appears, selecting New Symbol. Either way tells Flash to
display the Create New Symbol dialog box.

Figure 7-4

You get two clues that Flash has
converted your image on the stage
to an instance of the newly created
symbol: the cross in the upper-left
corner of the instance (the instance’s registration point) and the
little round circle (the instance’s
transformation point). Flash uses
the transformation point if you
decide to transform the instance,
as described in Chapter 5. You’ll
learn more about these points in
the box on page 253.

Creating a graphic symbol in symbol editing mode
If you want to create a symbol from scratch without going through the conversion
step described on page 250, you can use Flash’s symbol editor—the same symbol
editor you use to modify your symbols.

To create a graphic symbol in symbol editing mode:
1. Select Insert→New Symbol.
The Create New Symbol dialog box shown in Figure 7-6 (top) appears.

252

FLASH CS6: The Missing Manual

www.it-ebooks.info

2. In the Name text box, type a name for your symbol.
Shoot for something unique, short, and descriptive.

Symbols and
Instances

Up to Speed

Registration Point vs. Transformation Point
Flash associates two different points with each symbol you
create: a transformation point and a registration point. Both
reference a specific point in the symbol, but you use them in
very different ways. Here’s the scoop:
• The symbol’s transformation point is the little circle Flash
displays in every symbol and graphic element. Flash uses
the symbol’s transformation point when you transform
a symbol—for example, when you rotate a symbol, it
spins around the transformation point. You can move
the transformation point to any spot in or even outside
of your symbol. The center of your symbol is a good
starting spot for the transformation point, until you have a
reason to place it elsewhere. If you want to reposition the
transformation point, select a symbol or graphic element,
and then click the Free Transform tool. The transformation
point appears as a circle, usually on or near the symbol.
Reposition the point by dragging it to a new location.
• The symbol’s registration point appears as a little
cross on the symbol. The registration point is the set of
coordinates Flash uses to position an instance of a symbol
on the stage. Often called X/Y coordinates, X equals the
distance from the left side of the stage, and Y is the
distance from the top. You can place a symbol precisely
on the stage by typing in the position coordinates in the
Properties panel, as shown in Figure 7-5. You also use

the position coordinates when you position and move
objects on the stage with ActionScript programming,
as explained in Chapter 12. When you create new visual
elements, like shapes and text, Flash automatically places
the registration point in the upper-left corner. That’s a
good place to have the registration points for the symbols
you create, unless you have a particular need to place
it elsewhere. For example, if you want to align several
symbols on their center point, you may prefer to have
the registration point in the center. To reposition the
registration point for a symbol, double-click the symbol
to edit it. The image opens in symbol edit mode, as
described on page 257, and the registration point appears
as shown on the bottom of Figure 7-6. If you want the
registration point centered, move your graphic element
over the registration point, so it’s centered. If you want
the registration point in the lower-right corner, position
your graphic above and to the left of the registration point.
In most cases, you don’t have to think twice about the registration point. Let Flash put it in the upper-left corner and
leave it there. If you’re planning to manipulate the symbol in
ActionScript, be aware that you can reposition the registration
point if that upper-left corner doesn’t work for your project,
as described on page 255.

3. From the drop-down menu, choose Graphic, and then click OK.
Flash displays the symbol editing workspace shown in Figure 7-6 (bottom).
The symbol editing workspace looks very much like an animation workspace,
even down to the background color. Here are the key differences that indicate
you’re in symbol editing mode:
• The name of the symbol you’re currently editing appears in the Edit bar. To
see the Edit bar, select Window→Toolbars, and then turn on the checkbox
next to Edit Bar. There’s no “stage” when you’re editing symbols, so you
won’t see any backstage work area either.

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

253

Symbols and
Instances

• The Back arrow and Current Scene icons in the Edit bar appear clickable,
or active.
• A cross (the registration point for the symbol you’re about to create)
appears in the middle of the symbol editing workspace. The registration
point is the reference point Flash uses to position your symbol on the
stage, as explained in the box on page 253. Technically, you can position
your symbol anywhere you like with respect to the registration point; but
out of the box, Flash puts the registration point for most graphics in the
upper-left corner. For consistency’s sake, you may want to do the same
when you create symbols. Just create your artwork below and to the right
of the registration point.

Figure 7-5

Using the X, Y settings in
the Properties panel, both
of these rectangles are
positioned at 200, 200.
The difference? The small
rectangle (selected) has a
centered registration point,
while the larger rectangle has
its registration point in the
upper-left corner.

Back arrow
Current scene icon
Symbol name
Registration point

4. On the symbol editing workspace, create a graphic symbol.
You can use Flash’s drawing tools, instances of other symbols, or even an imported image (Chapter 10), just as you can on the main stage. As you draw, Flash
displays a thumbnail version of your symbol in the Library preview window, as
shown in Figure 7-7. Note that the use count is zero, until you drag an instance
of the symbol onto the stage. The use count is the number of instances of this
symbol that have been dragged onto the main animation stage.
5. When you’re finished creating your symbol, head to the Edit bar, and then
click the Back arrow or click the current scene icon. (Or use the menu command Edit→Edit Document.)
Flash brings you back to your main animation workspace.

254

FLASH CS6: The Missing Manual

www.it-ebooks.info

Using a graphic symbol (creating an instance of a graphic
symbol)
After you’ve created a symbol, you use it by creating an instance of that symbol and
then placing the instance somewhere in your animation.

Registration point
for both rectangles

Position coordinate
settings

Symbols and
Instances

Figure 7-6

Top: You use the same Create
New Symbol dialog box to create a symbol from scratch as
you do to convert an existing
image to a symbol.
Bottom: Here you see the
symbol editing workspace,
which looks deceptively similar to the regular animation
workspace. The only way you
know you’re in symbol editing
mode is the graphic icon and
symbol name (ladybug) in the
Edit bar and the registration
point (cross) in the middle of
the symbol editing stage.

Follow these steps to add an instance of a graphic symbol to your animation:
1. Make sure the Library panel containing the graphic symbol you want is visible. If it isn’t, select Window, and then turn on the checkbox next to Library.
Flash displays the Library panel.
2. On the timeline, click to select the keyframe and layer where you want to
put the instance.
Flash highlights the selected keyframe.
3. In the Library panel, click the name of the symbol you want to use.
A thumbnail version of the symbol appears in the Library’s preview window.

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

255

Symbols and
Instances

4. Drag the thumbnail onto the stage (Figure 7-8).
Flash creates an instance of the symbol and places it on the stage. You can
transform or recolor this instance, as shown in the following section, without
affecting any other instances or the symbol itself.

Figure 7-7

The ladybug symbol here was just created, so the Library is
showing a use count of 0. The registration point appears in
the upper-left corner. The Library panel provides other details,
including when the symbol was last changed and how it’s
linked to other Flash and ActionScript documents.

Symbol
name

Use
Count

Date
Modified

Symbol
Type

Figure 7-8

Creating an instance of a
symbol is as easy as dragging the symbol from the
Library and dropping it
onto the stage. Flash has
bumped up the use count
for the ladybug symbol
by 1. Because the ladybug
uses spots symbols,
the count for spots has
bumped up to 6.

New Instance

256

Use Count

FLASH CS6: The Missing Manual

www.it-ebooks.info

Tip

You can always convert an instance of a graphic symbol back into an editable image—perhaps because
you want to use a symbol as a starting point for a brand-new image. To convert an instance of a graphic symbol
back into an editable image, first select the instance, and then choose Modify→Break Apart. If your instance
contains nested instances, you may want to choose Modify→Break Apart once for each nested instance to convert
the entire symbol into editable pixels.

Symbols and
Instances

Editing an instance of a graphic symbol
The whole point of graphic symbols is to help you reuse images (and to help Flash
keep down file size while you’re doing it). So it should come as no surprise that you
can’t completely rework the instances you create. You can’t, for example, create an
instance of a ladybug, erase it, draw a toad in its place, and expect Flash to consider
that toad an instance of the ladybug symbol.
Up to Speed

In the Mode
It’s astonishingly easy to get confused about where you are
when you’re working in symbol editing mode. If you think
you’re in your main animation when you’re actually in symbol
mode, for example, you get frustratingly unexpected results
when you try to test your animation by selecting Control→Play
or Control→Test Movie→Test.

The easiest way to find your bearings is to check the Edit bar.
First, make sure it’s visible (Window→Toolbars→Edit Bar).
Then, if your symbol’s name appears in the Edit bar, you’re in
symbol editing mode; if it doesn’t, you’re not.

But while you can’t use Flash’s drawing and painting tools to change your instance,
you can change certain characteristics of an instance, including color, transparency,
tint, and brightness using the Properties panel; and scale, rotation, and skew using
the Transform panel.
Note When you transform or recolor an instance, only that instance changes; the other instances you’ve
added to your animation aren’t affected, and neither is the symbol itself. If you want to change all instances en
masse, you need to edit the original symbol, as described below.

You can also edit an instance by swapping one instance of a graphic symbol for
another. Say, for example, that you’ve created a nature backdrop using multiple
instances of three symbols: a tree, a bush, and a flower. If you decide you’d rather
replace a few trees with bushes, Flash gives you a quick and easy way to do that,
as shown in the following steps:
1. On the stage, select the instance you want to replace.
Flash displays the Properties panel to show instance-related properties. (If
you don’t see the Properties panel, choose Window→Properties to display it.)

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

257

Symbols and
Instances

2. In the Properties panel, click Swap (Figure 7-9).
The Swap Symbol dialog box appears.

Swap Symbol dialog box

Swap button

Figure 7-9

The Swap button is active only when
you have a single instance selected
on the stage. The Swap Symbol dialog
box is misnamed; it should be called
the Swap Instance dialog box. That’s
because you use it to replace an
instance of one symbol with an
instance of another symbol; the
symbols themselves don’t change.

3. In the Swap Symbol dialog box, click to select the symbol with which you’d
like to replace the original. When you finish, click OK.
On the stage, Flash replaces the selected instance with an instance of the symbol
you chose in the Swap Symbol dialog box.
Editing a graphic symbol
Recoloring or transforming an instance changes only that instance, but editing a
symbol changes every single instance of that symbol, immediately, wherever you’ve
placed them in your animation.

The good news about editing symbols, of course, is that it can save you a boatload
of time. Say you’ve added hundreds of instances of your company’s logo to your
animation and the brass decides to redo the logo. Instead of the mind-numbing chore
of slogging through your animation finding and changing each instance by hand, all
you have to do is edit one little image—your logo symbol. The minute you do, Flash
automatically ripples your changes out to each and every instance of that symbol.
The bad news, of course, is that you might edit a symbol by mistake, thinking
you’re editing an instance (page 266). Editing a symbol is for keeps. You can select
Edit→Undo if you realize your mistake in time, but once you close your Flash docu-

258

FLASH CS6: The Missing Manual

www.it-ebooks.info

ment and Flash erases your Undo history, it’s all over but the crying: You’re stuck
with your edited symbol, for better or for worse.

Symbols and
Instances

Tip If the thought of editing a symbol makes you leery—say you’ve got 500 instances of your symbol scattered around your animation and you don’t want to have to redraw it if you goof up the edit job—play it safe and
make a duplicate of the symbol before you edit it. In the Library panel, click the Options menu in the upper-right
corner. Then, from the pop-up menu that appears, select Duplicate. When you do, Flash displays the Duplicate
Symbol window, which lets you give your backup copy a unique, descriptive name (like logo_backup).

Up to Speed

Exchanging Symbols Between Documents
Flash puts all the symbols you create in a Flash document—as
well as all the bitmaps, sound files, and other goodies you
import into that document—into the Library panel, which you
display by choosing Window→Library.
Technically speaking, the stuff you put in the Library is good
only for that Flash document or project (unlike the Common
Libraries, which you access by choosing Window→Common
Libraries, and which always list the same preinstalled files,
no matter which document you have open).
But you can pull a symbol from one document’s library and put
it into another by copying and pasting. To do so:
1. Open the two documents between which you want to
exchange symbols (File→Open).
2. Open the Library panel from which you want to copy
a symbol (Window→Library), and then choose the
document from the drop-down list in the Library panel.

3. In the Library panel, right-click the name of the symbol
you want to copy, and then, from the pop-up menu that
appears, choose Copy.
4. Above the stage, click the tab displaying the name of the
other document.
5. In the new document, click to select the keyframe where
you want to paste the symbol.
6. Choose Edit→Paste in Center. Flash pastes a copy of the
other document’s symbol on the stage.
To open a document’s Library without having to open the
document itself: Select File→Import→Open External Library,
choose the document whose symbols you want to copy, and
then click Open. When you do, Flash opens the document’s
Library (but not the document). With two libraries open, you
can drag symbols directly from one Library to another.

Flash gives you three ways to edit symbols: Edit, Edit in Place, and Edit in New
Window.
• Edit is the most common way to edit symbols, and it’s the method Flash uses
when you right-click a symbol name in the Library and then choose Edit. You
can also use the menu command Edit→Edit Symbols or keyboard shortcut
Ctrl+E (⌘-E). The stage temporarily disappears, to be replaced by a window
showing only the contents of the symbol. If you have the Edit toolbar showing (Windows→Toolbars→Edit Bar), you see the symbol’s name, as shown in
­Figure 7-10. After you finish your edits, click the Scene name or the Back button
to return to the stage.
• Editing in place lets you edit a symbol right there on the stage, surrounded by
any other objects you may have on the stage. (Flash grays out the other objects;
they’re just for reference. The only thing you can edit in this mode is the symbol.)

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

259

Symbols and
Instances

If you’re not ready for it, this option is right up there with the more confusing features the Flash design team has ever come up with. As you can see in ­Figure 7-11,
mixing the symbol editing mode with the appearance of the main stage makes
it incredibly easy to assume you’re changing an instance of a symbol (instead
of the symbol itself), with frustrating results. Double-clicking a symbol on the
stage or selecting Edit→Edit in Place from the main menu or from the pop-up
menu that appears when you right-click an instance on the stage all tell Flash
that you want to edit in place.

Scene

Symbol name

Figure 7-10

When you edit your symbol in its very own window, there’s no
ambiguity: You know you’re editing a symbol (and not merely
an instance). You edit a symbol using the same tools and panels
you use to edit any other image. As you make your changes,
Flash automatically updates the symbol in the Library, as well as
all the instances of that symbol, wherever they may be in your
Flash document.

Back button

Note

One man’s meat is another man’s poison. If you absolutely have to see your symbol in context
(­surrounded by all the other stuff on the stage) to be able to edit it properly, then editing in place is just what
you want.

• Edit in New Window creates a new window tab where you edit your symbol,
as shown in Figure 7-12. Right-click (Control-click) a symbol on the stage, and
then choose Edit in New Window from the pop-up menu. Flash opens the symbol under a new tab, and your work area looks similar to the basic Edit mode.
As you make changes, Flash updates all existing instances to match the newly
edited symbol. This makes it easy to jump back and forth between the symbol
editing workspace and the stage, so you can see how the edited symbol looks
in context. When you’re finished making changes, just click the Close button.

260

FLASH CS6: The Missing Manual

www.it-ebooks.info

Symbols and
Instances

In a nutshell, to tell Flash you want to edit a symbol, do any of the following.
In the Library panel:
• Double-click the symbol, either in the list or in the preview window. The symbol
opens in Edit in Place mode.
• Select a symbol from the list, and then click the Options menu. From the pop-up
menu that appears, choose Edit. The symbol opens in Edit mode, where you
see the symbol by itself.
• Right-click a symbol in the list. From the pop-up menu that appears, choose
Edit, Edit in Place, or Edit in New Window. The pop-up menu lets you select
exactly how you’d like to view the symbol while editing.

Figure 7-11

It’s hard to tell that the
large ladybug (the one
that’s not grayed out)
is a symbol and not just
an instance of a symbol.
(Your one clue: the symbol
name “ladybug” that Flash
displays above the stage.)
Editing a symbol when you
mean to edit an instance
can have pretty serious
consequences, so if you find
yourself second-guessing,
then stick to editing in a
new window, as described
in Figure 7-10.

On the stage:
• Select Edit→Edit Symbols.
• Select an instance of the symbol, and then choose Edit→Edit Selected.

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

261

Symbols and
Instances

• Right-click an instance of the symbol, and then, from the pop-up menu that
appears, choose Edit, Edit in Place, or Edit in New Window.
• In the Edit bar (Window→Toolbars→Edit Bar), click Edit Symbols (the icon on
the right that looks like a jumble of shapes).
No matter which method you choose—editing, editing in place, or editing in a new
window—you get out of symbol editing mode and return to the main stage the same
way: by selecting Edit→Edit Document (Ctrl+E on a PC or ⌘-E on a Mac).

New window tab

Close window button

Figure 7-12

Edit in New Window is one of three ways that Flash gives you to edit a
symbol. Both the Edit and Edit in New Window options give you a nice,
uncluttered view of your symbol.

Deleting a graphic symbol
You can delete the graphic symbols you create. Just remember that when you do,
Flash automatically deletes all the instances of that symbol, wherever you’ve placed
them in that document.

To delete a graphic symbol:
1. In the Library panel, click to select the graphic symbol you want to delete.
Flash highlights the selected symbol’s name and type.

262

FLASH CS6: The Missing Manual

www.it-ebooks.info

2. Right-click the graphic symbol icon, and then, from the pop-up menu that
appears, choose Delete.

Symbols and
Instances

Flash removes the graphic symbol from the Library panel. It also removes all
the instances of that symbol from your animation. Another option is to click the
trash can icon at the bottom of the Library panel.

Multiframe Graphic Symbols
Multiframe graphic symbols are a kind of hybrid symbol, halfway between single
frame graphic symbols and movie clip symbols. Multiframe graphic symbols can’t
contain sounds or actions the way movie clip symbols can, but they can contain
multiple frames, which regular single-frame graphic symbols can’t. As explained in
the box on page 251, multiframe graphic symbols synchronize frame-for-frame to
the animation in which you place them.
Tip

For many common Flash chores, it makes sense to use movie clips instead of multiframe graphics. As a
designer, you have more control over movie clips, and you don’t have to worry about the synchronization issues
that come with multiframe graphics. Movie clips are the symbols to choose if you want animate or control them
with ActionScript. However, one small advantage multiframe graphic symbols have over movie clips is that they
may take up slightly less space in the SWF file when you publish your animation.
Creating a multiframe graphic symbol
Flash gives you the same two options for creating multiframe graphics symbols as
it does for single-frame graphic symbols: You can create a series of frames as usual
and then convert it into a reusable symbol, or you can use Flash’s editing mode to
create a multiframe graphic symbol from scratch and save yourself the conversion
step. This section shows both approaches.

To convert a series of frames to a multiframe graphic symbol:
1. On the timeline, select the frames you want to convert.
You can easily select a series by clicking at one end of the series and then Shiftclicking at the other end. Flash automatically selects all the frames in between.
2. Choose Edit→Timeline→Copy Frames or press Ctrl+Alt+C (Option-⌘-C).
Then choose Insert→New Symbol.
The Create New Symbol dialog box appears.
3. In the Create New Symbol dialog box, turn on the Graphic radio button. Type
a short, descriptive name for your symbol, and then click OK.
The name of your symbol appears in the Library panel and in the Edit bar above
your stage to let you know you’re in symbol editing mode. In addition, Flash
replaces your animation stage with the symbol editing stage. You can recognize
the symbol editing stage by the cross (your symbol’s registration point) that
appears in the middle of the symbol editing stage.

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

263

Symbols and
Instances

4. In the symbol timeline, click to select the first keyframe (Frame 1).
Flash highlights the selected keyframe.
5. Select Edit→Timeline→Paste Frames.
Flash pastes the copied frames in the symbol’s timeline. The Library panel’s
preview window shows you the contents of your new symbol’s first keyframe
(along with a minicontroller, as shown in Figure 7-13).

Figure 7-13

Symbol preview
controls

Get into the habit of previewing your multiframe graphic
symbols in the Library before you add instances of each symbol
to your animation. If you do, you’ll save yourself the hassle that
can result from incorporating instances of a symbol that doesn’t
run properly. To preview your symbol, click the Play button as
shown. Flash displays the contents of each frame of your symbol,
one after the other, in the Preview window.

6. Preview your symbol by clicking the minicontroller’s Play button.
Flash runs a thumbnail version of the symbol in the preview window.
7. Get out of symbol editing mode by choosing Edit→Edit Document.
Flash hides the symbol editing stage and brings you back to your main animation’s
stage and timeline. To create a multiframe graphic symbol from scratch in symbol
editing mode, follow the steps you see on page 252, adding the content for as many
frames as you need in step 5.
Creating an instance of a multiframe graphic symbol
Creating an instance of a multiframe graphic symbol is like creating an instance of a
movie clip symbol, but it’s not identical. When you insert a multiframe graphic symbol
into a timeline, the graphic synchronizes frame-for-frame with that timeline. If the
timeline doesn’t have enough frames, Flash lops off any frames of the graphic that
don’t fit. If the timeline has more frames than the graphic, Flash loops the graphic
frames unless you provide other instructions in the Properties panel. If it’s important
that every frame of the graphic plays, make sure the timeline has enough frames.
The following steps show you how.

264

FLASH CS6: The Missing Manual

www.it-ebooks.info

To create an instance of a multiframe graphic symbol:
1. In your main animation, click to select the keyframe where you want to place
an instance of a multiframe graphic symbol.

Symbols and
Instances

Only keyframes can contain new content (see page 99 for the skinny on keyframes). So if you try to place a symbol in a regular frame, Flash “backs up”
and places your symbol in the keyframe immediately preceding the selected
frame anyway.
2. Make sure you have exactly as many frames after the selected keyframe as
you need for this instance.
If you’re creating an instance of a symbol that contains 10 frames, make sure 10
frames exist, including the selected keyframe. If the symbol contains 20 frames,
make sure 20 frames exist. To add frames after your selected keyframe, choose
Insert→Timeline→Frame (or press F5) once for each frame you want to add.
Warning If you forget this step and add a multiframe graphic symbol to a timeline that doesn’t contain
exactly as many frames as the symbol, Flash doesn’t issue any warnings. Instead, it matches as many of the
instance frames to your timeline frames as it can. If you don’t have enough room on your timeline, Flash quietly
snips off the instance frames that don’t fit. If you have too much room, Flash repeats the instance frames until
all your main animation’s frames are filled.

3. In the Library, click to select the multiframe graphic symbol of which you
want to create an instance.
You can either click the symbol’s icon from the list or click the symbol’s thumbnail
in the preview window. The Library lists the type of both single and multiframe
graphics the same—Graphic—but you can always tell a multiframe graphic by
the minicontroller that appears along with the symbol’s content in the Library’s
preview window, as shown in Figure 7-13.
4. Drag the symbol to the stage.
Flash creates an instance of the symbol and places it in the keyframe you selected in step 1. As you see in Figure 7-14, Flash colors your frames a nice solid
gray to let you know that they now contain content. But Flash doesn’t display
the individual keyframes of your instance in your main timeline. (By the same
token, if your symbol contains multiple layers, you don’t see those on your main
timeline, either. This visual simplification is one of the benefits of using symbols,
as opposed to just copying and pasting frames.) To preview your instance, select
Control→Test Movie→Test.
Note

You can also test an instance of a multiframe graphic symbol by choosing Control→Play, or by dragging the playhead on the main timeline.

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

265

Symbols and
Instances

Editing an instance of a multiframe graphic symbol
If you need the flexibility to individually change each keyframe of a multiframe graphic instance, you’re out of luck, but you can use the Transform tool and the Properties
panel to make tweaks that affect every frame of your multiframe graphics. Use the
Properties panel to change the size, position, and color of your graphic, as shown in
Figure 7-15. Changes you make here affect every frame in the multiframe graphic.

Figure 7-14

The solid gray bar you see beginning with the keyframe (Frame 1) lets
you know that Frames 1–10 now contain content: in this case, an instance
of a multiframe graphic symbol. If testing your animation yields an
unexpected result, check to make sure that the frame span to which
you’ve added the symbol matches your symbol frame for frame.

Figure 7-15

This multiframe graphic
shows a countdown
similar to the ones that
appear before old movies.
In the Properties panel,
the Looping→First option
is set to Frame 49, so that
the countdown begins
with the number 8.

Start on Frame 49

266

FLASH CS6: The Missing Manual

www.it-ebooks.info

Play Once

Flash lets you change the contents of the first keyframe of your instance, just the way
you can an instance of a single-frame graphic (page 257). But Flash automatically
applies those changes to the contents of every keyframe in your instance. Skew the
frog in your first keyframe and turn it blue, for example, and every image in every
frame of your instance appears skewed and blue.

Symbols and
Instances

Using the Properties panel, you can tweak the playback settings for a multiframe
graphic. Under Looping→Options, you can choose between Loop, Play Once, and
Single Frame. In the First box, you can choose the first frame that Flash displays.
For example, suppose you have a nifty countdown multiframe graphic like the ones
at the beginning of old newsreels. Your graphic counts down from 10, but for this
project you’d like to start it at 8, like in the movies. Simply adjust the starting frame
so that it begins when the 8 is showing, as shown in Figure 7-15.
Note

The file 07-1_Multiframe_Countdown.fla, shown in Figure 7-15, is available at www.missingmanuals.
com/cds/flashcs6mm. It shows how multiframe graphic symbols can be made up of several different graphic
elements, layers, and symbols. A second file, 07-2_Movie_Clip_Countdown.fla, shows the differences between
multiframe graphic symbols and movie clip symbols.
Editing a multiframe graphic symbol
You edit a multiframe graphic symbol the same way you edit a single-frame graphic
symbol: by switching to symbol editing mode (page 257). In both cases, Flash immediately applies the changes you make to the symbol to all the instances of that symbol.
Deleting a multiframe graphic symbol
You delete a multiframe graphic symbol the same way you delete any other symbol in
Flash: through the Library panel. Just remember that when you delete a symbol, Flash
automatically deletes all the instances of that symbol, wherever you’ve placed them.

To delete a graphic symbol:
1. In the Library panel, click to select the graphic symbol you want to delete.
Flash highlights the selected symbol’s name and type.
2. Right-click the graphic symbol icon, and then, from the pop-up menu that
appears, choose Delete.
Flash removes the graphic symbol from the Library panel. It also removes all
the instances of that symbol from your animation.

Movie Clip Symbols
A movie clip symbol (Figure 7-16) is a reusable, self-contained chunk of animation,
which you can drop into a single frame in another animation.
Unlike multiframe graphic symbols, you can add sounds (Chapter 11) and actions
(Chapter 12) to movie clip symbols. Also unlike multiframe graphic symbols, movie
clip symbols run independently from the animations to which you add them.

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

267

Symbols and
Instances

So movie clips give you the opportunity to create nonsequential effects like repeating,
or looping, scenes, as well as interactive graphics—for example, buttons, checkboxes,
and clickable images that tell Flash to display something different, depending on
what your audience clicks.

Figure 7-16

Preview controller

When you select a movie clip symbol in the Library, the Library
panel’s preview window shows you the first frame of the
symbol, as well as a minicontroller you can use to play (and
stop) the movie clip right there in the Library before you go
to all the trouble of dragging an instance of the movie clip to
the stage. (You see this same minicontroller when you select a
multiframe graphic in the Library.)

As you’ll see in the following section, movie clip symbols have their very own timelines, so an instance of a movie clip symbol always takes up just one frame in the
animation to which you add it, no matter how many frames the movie clip symbol
actually contains.
Creating a movie clip symbol
Creating a movie clip symbol in Flash is similar to creating a multiframe graphic
symbol (page 263). You can either create a series of frames (including sounds and
actions, if you like) and convert it into a movie clip symbol, or you can use Flash’s
editing mode to create a movie clip symbol from scratch and save yourself the
conversion step.

In fact, as the following steps show, only one minor but important difference exists
between creating a multiframe graphic symbol and creating a movie clip symbol,
and that’s selecting the correct drop-down menu option in step 4.
Warning

Modify→Convert to Symbol works only when you’re converting an image to a single-frame
graphic symbol; it doesn’t let you convert a series of frames into a movie clip symbol. But if you try it, Flash won’t
give you an error. Instead, it’ll chug along happily, pretending it’s creating a movie clip symbol. But in reality, the
symbol you create this way contains just one frame.

268

FLASH CS6: The Missing Manual

www.it-ebooks.info

To convert a series of existing frames to a movie clip symbol:
1. On the timeline, select the frames you want to convert.

Symbols and
Instances

It’s easy to select a series of frames. Click at one end of the series, and then
Shift-click at the other end of the series. Flash automatically selects all the
frames in between. If your frames contain layers, make sure you select all the
layers in each frame.
2. Choose Edit→Timeline→Copy Frames or press Ctrl+Alt+C (Option-⌘-C).
Flash copies the frames.
3. Choose Insert→New Symbol.
The Create New Symbol dialog box appears.
4. In the Create New Symbol dialog box, make sure to choose Movie Clip from
the drop-down menu.
If it’s not selected, click to select it.
5. Type a name for your movie clip symbol, and then click OK.
The name of your movie clip symbol appears in the Library panel, and in the Edit
bar above your stage, to let you know you’re in symbol editing mode. Another
tip-off that you’re in symbol editing mode is the cross, or registration point,
that appears in the middle of the symbol editing stage.
6. In the symbol timeline, click to select the first keyframe (Frame 1).
Flash highlights the selected keyframe.
7. Select Edit→Timeline→Paste Frames.
Flash pastes the copied frames onto the symbol’s timeline and displays the
first keyframe of the new symbol (along with a minicontroller) in the Library
panel’s preview window.
8. In the Library panel, preview your symbol by clicking the minicontroller’s
Play button.
Flash runs a thumbnail version of the movie clip symbol in the preview window.
9. Get out of symbol editing mode by choosing Edit→Edit Document.
Flash brings you back to the workspace and your main animation.
To create a movie clip symbol from scratch in symbol editing mode, follow the steps
on page 252, adding the content for as many frames as you need.
Creating an instance of a movie clip symbol
Because movie clip symbols have their own timelines, they’re completely self-contained. You don’t have to worry about matching your movie clip symbol to your main
animation’s timeline the way you do with a multiframe graphic symbol (page 263);

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

269

Symbols and
Instances

movie clip instances live on a single frame in your main animation, no matter how
many frames the instances themselves contain. As a matter of fact, as you’ll see next,
creating an instance of a movie clip symbol is as easy as dragging and dropping.
To create an instance of a movie clip symbol:
1. In your main animation, click to select the keyframe where you want to place
an instance of a movie clip symbol.
Only keyframes can contain new content. So if you try to place a symbol in a
regular frame, Flash “backs up” and places your symbol in the keyframe immediately preceding the selected frame anyway.
2. In the Library, click to select the movie clip symbol of which you want to
create an instance.
You can either click the symbol’s icon from the list or click the symbol’s thumbnail in the preview window.
3. Drag the symbol to the stage.
Flash creates an instance of the symbol and places it in the keyframe you selected in step 1, as shown in Figure 7-17.

Figure 7-17

Dragging a movie clip
symbol from the Library
to the stage tells Flash to
create an instance of the
symbol. No matter how
many frames (or layers)
your movie clip instance
contains, it takes up
only one frame on your
animation (circled), which
makes movie clips perfect
for creating animated
buttons.

4. To preview your instance, select Control→Test Movie→Test.
You’ll notice that even if you turn looping off in the Control panel (which you do by
selecting Control, and then, from the pop-up menu that appears, turning off the
checkbox next to Loop) your movie clip instance continues to loop. The movie clip

270

FLASH CS6: The Missing Manual

www.it-ebooks.info

behaves this way because it’s running on its own timeline (not the timeline Flash
associates with your main animation). One way to tell Flash to stop looping your
movie clip instance is to add a keyframe to your timeline after the keyframe that
contains your movie clip instance. It can be a blank keyframe or a keyframe with
content other than the movie clip you intend to stop.

Symbols and
Instances

Note Flash automatically loops the movie clip instance (plays it over and over again) until it encounters a
keyframe that removes the movie clip, or until it encounters an ActionScript statement that tells it to stop (like
stop() or goToAndStop(), for example). You can see an example of controlling playback with ActionScript in
Chapter 15.

Editing a movie clip symbol
You edit a movie clip symbol the same way you edit a single-frame graphic symbol:
by switching to symbol editing mode (page 258). In both cases, Flash immediately
applies your changes to all the instances of that symbol.
Editing an instance of a movie clip symbol
Similar to multiframe graphic symbols, Flash lets you change the contents of the
first keyframe of your movie clip instance, just the way you can an instance of a
single-frame graphic (page 257). But Flash automatically applies those changes to
the contents of every frame in your instance. So, for example, if you apply a sepia
tint to the first keyframe, your entire movie clip instance looks old-timey. You can
also apply filters (page 276) and blending effects to movie clip instances.
Design Time

Reuse Deluxe: Repurposing Symbols
When you think about it, it’s the simple, classic shapes you use
most often in drawing.
Sure, it’s great to have a sun, flower, or cockroach symbol
hanging around in the Library, but it’s the ovals, wedges, and
sweeps that you find yourself coming back to again and again.
And because Flash lets you resize, reposition, and recolor each
instance, you can create radically different drawings using the

same handful of simply shaped graphic symbols. Working this
way lets you optimize the size of your finished animation, and,
as a bonus, you get to focus on design at the graphic element
level. (Even accomplished animators can find fresh ideas by
limiting themselves to a handful of shapes.)
Expand and flip a raindrop symbol and then add a tail, for example, and you’ve got yourself a whale, as shown in Figure 7-18.

Button Symbols
The easiest way to make your animation interactive is to add a button someone can
click at runtime to perform a task, like replaying your entire animation, choosing
which of several scenes to play, loading a web page, and so on.
To make creating a button easy, Flash has button symbols (Figure 7-19). A button
symbol has four frames. Each frame has a specific function that helps you control
the appearance of the button as it’s being used by your audience:

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

271

Symbols and
Instances

• Up. In this frame, you draw the button as you want it to appear before your
audience mouses over it.
• Over. In this frame, you draw the button as you want it to appear after your
audience mouses over it.

Figure 7-18.

You’ll find that simple shapes
are the easiest to reuse
because they’re the most
adaptable. In this image, a
raindrop is resized and rotated to become the body of
a whale. Creative repurposing
saves time and reduces the
size of your Flash files.

Figure 7-19

Play
Stop

Because button symbols are like specialized movie clip symbols, you see
the same minicontroller in the Library’s preview window when you click a
button symbol as you see when you select a movie clip or multiframe graphic
symbol. Clicking Play cycles through the button symbol’s four frames, so you
get to see 1) how the button looks before the cursor mouses over it, 2) how it
looks after the cursor mouses over it, 3) how it looks when clicked, and 4) the
button’s clickable area. When you create a button symbol, Flash spots you the
four frames; all you have to do is customize them, as shown in the following
sections.

• Down. In this frame, you draw the button as you want it to appear when your
audience clicks it.
• Hit. In this frame, you draw the active, or “clickable,” area of your button. In
most cases, you want the active area to be identical to the button itself. But in
other cases—for example, if you want to create a bullseye-shaped button that
responds only when your audience clicks the tiny red dot in the center—you
draw that center dot here, in the fourth frame (the Hit frame). You can also use

272

FLASH CS6: The Missing Manual

www.it-ebooks.info

this frame to create invisible buttons, as explained on page 277, or buttons that
are the shape of an image in your animation, like a car.

Symbols and
Instances

For the designer, button symbols are handy. Flash automatically gives you the four
Up, Over, Down, and Hit frames—all you have to do is plug in your drawings and
go. As you’ll see in the following section, Flash also gives you a handful of built-in
graphic effects, called filters, which you can apply to your buttons to get professionallooking results. Button symbols aren’t the only way to provide clickable interactivity
to your projects. ActionScript coders often create their own buttons or use button
components (page 544).
Note

To get your button to actually do something when someone clicks it—to display a different section of
the timeline, for example, or some dynamic text—you need to tie a snippet of ActionScript code to your button.
Chapter 13 shows you how.
Creating a button symbol
When you create a button symbol, you start out basically as if you’re creating any
graphic symbol from scratch (page 252), but since button symbols have those four
possible states, you can create up to four different graphics. When you choose Button in the New Symbol dialog box, Flash gives you a separate frame to hold each
drawing so that you won’t get confused.

In this example, you’ll create a round, red button that turns yellow when your audience mouses over it and green when your audience clicks it.
1. Click Insert→New Symbol.
The Create New Symbol dialog box appears.
2. In the Name text box, type bullseye. Make sure the drop-down menu is set to
Button, and then click OK.
When you create a new button symbol, Flash gives you four named frames
(Figure 7-20). It’s up to you which frames you want to modify, but at the very
least, you need to add a drawing to the Up frame, to show the button before
it’s clicked or moused over. For a more sophisticated button, you’ll also add a
drawing to the Over frame (as shown below) to let someone know when his
mouse is over the button.

Figure 7-20

Flash pops you into symbol editing mode. In the symbol’s timeline, you see
four named frames: Up, Over, Down, and Hit.

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

273

Symbols and
Instances

Tip

Flash comes with a blue million button symbols already spiffed up and ready for you to drop into
your animations. So before you get too carried away drawing your own button, choose Window→Common
Libraries→Buttons to see if Flash already has a button symbol that fits your bill. (You still have to write ActionScript
code to tell Flash what you want to do when your audience clicks your button. Find out how in Chapter 13.)

3. Draw your button as you want it to appear initially by using the Oval tool
to add a red circle to the first keyframe (the Up frame).
Keep the registration point (the cross) in the upper-left corner of your button
image as you draw. When you finish, your workspace should look similar to the
one in Figure 7-21.

Figure 7-21

Your button doesn’t have to
look like a button; it can be
an image, a shape, a line—
anything you like. But most
people are used to circular
buttons, so a circle’s a good
place to start. Notice that as
you create your image, Flash
automatically updates the
Library’s preview window.

4. Right-click Frame 2 (the Over frame), and then, from the pop-up menu that
appears, select Insert Keyframe.
Flash displays a circle in Frame 2 to let you know you’ve successfully added
a keyframe. On the stage, you see a copy of the button you drew in Frame 1.
5. Here’s how you make the button change when a cursor passes over it: On
the stage, select the circle. In the Properties panel, click the Fill Color icon, and
then, from the color picker that appears, choose a yellow swatch.
Flash recolors the circle yellow. If you don’t see the Properties panel, select
Window→Properties. If you still don’t see it, make sure you’ve selected the
circle on the stage.
6. Right-click Frame 3 (the Down frame), and then, from the pop-up menu that
appears, select Insert Keyframe.
Flash displays a circle in Frame 3 to let you know you’ve successfully added a
keyframe (and, therefore, can change the content of the frame).

274

FLASH CS6: The Missing Manual

www.it-ebooks.info

7. Here’s how you draw the button as you want it to appear when a cursor
clicks it: Select the button. In the Properties panel, click the Fill Color icon
once again, and then, from the color picker that appears, choose a green swatch.

Symbols and
Instances

Flash recolors the circle green.
8. Right-click Frame 4 (the Hit frame), and then, from the pop-up menu that
appears, select Insert Keyframe.
Flash displays a circle in Frame 4 to let you know you’ve successfully added
another keyframe. As you can see on the stage, Flash assumes you want the
entire button to respond to a mouse click—and in a lot of cases, that’s exactly
what you do want. But you can make the clickable portion of your button smaller
or larger. To do so:
9. On the stage, click the circle to select it. Then choose Window→Transform
to display the Transform panel.
In the Transform panel, type 50 into the Width and Height boxes, and then press
Enter or Return. Figure 7-22 shows you a scaled-down circle that should look
similar to the one you see on your workspace.

Visible
image

Clickable
area

Transform scale
percentages

Figure 7-22

Normally, you want to draw
the same size shape in the
Hit frame as you do in the
other frames so that the
entire button responds to
mouse clicks. Drawing a
smaller (or even differentshaped) image for the Hit
frame lets you create more
sophisticated buttons: clickable images, for example, or
invisible buttons that let the
content of your frame itself
appear to respond to mouse
clicks (see the box on page
277). Here, the clickable portion of the button is exactly
half the size of the visible
portion.

10. Return to your animation by choosing Edit→Edit Document.
Flash hides your symbol editing workspace and displays your animation
workspace.

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

275

Symbols and
Instances

Using a button symbol (creating an instance of a button
symbol)
You can find the work file from the previous exercise 07-3_Bullseye_Button.fla at
www.missingmanuals.com/cds/flashcs6mm.

To create an instance of a button symbol:
1. Click to select the first keyframe (Frame 1) in your animation.
Flash highlights the selected frame.
2. In the Library panel’s preview window, drag your button symbol’s thumbnail
onto the stage.
On the stage, Flash creates an instance of the button symbol and surrounds it
with a selection box.
3. Test your button instance. To do so, choose Control→Test Movie→Test.
A red circle appears in the middle of the test window (Figure 7-23).
Tip

To test your button instance on the stage, select Control→Enable Simple Buttons. When you do, your
button responds to mouse movement and clicking right there on the stage.

Figure 7-23

Whatever you drew in Frame 1 (the Up frame) appears first.

4. In the test window, drag your mouse over the red circle.
When your mouse nears the center of the red circle, your arrow cursor turns
into a pointing finger, and the red circle turns yellow.
5. With your pointing-finger cursor, click the yellow circle.
The yellow circle turns green.
Note

Chapter 13 shows you how to add an action to your button so that clicking it does something useful.

Editing an instance of a button symbol
You can’t change the individual frames of your button instance individually. But
Flash does let you apply the same changes to all the frames of your button instance.

276

FLASH CS6: The Missing Manual

www.it-ebooks.info

Page 273 shows you the steps you can take to apply color, transparency, and transforms to your button instances. (The steps are identical to those you take to edit a
single-frame graphic instance.) But you can also apply filters, or visual effects, to
your buttons. Filters can turn even a plain oval button into something that looks like
you spent hours tweaking it.

Symbols and
Instances

Frequently Asked Question

Oddly Shaped (and Invisible) Buttons
Why would I want to make my Hit frame smaller than the button itself? Won’t that just make it harder for people to click?
One popular situation when you might want to make the Hit
frame smaller than the button itself is when you’re creating
a hotspot. For example, say you’re creating an interactive
web-based game for kids. On the stage, you’ve drawn several
different animals: a pig, a duck, and a lamb.
The audio file you’ve attached to your animation tells the player
which specific part of each animal to click: the duck’s bill, for
instance, or the pig’s tail. In this case, you want to limit the
clickable portion of the image to the bill (or tail).
A situation when you might consider making the Hit frame
larger than the button is when you want to give your audience
a larger target. Instead of making someone center her cursor
precisely over a teeny-tiny button, for example, you can let her
click as soon as her cursor comes anywhere close to the button.
This option is great for text-only buttons, too.

Finally, you can create invisible buttons by drawing a shape in
the Hit frame and leaving the rest of the button frames empty.
Suppose you have a picture and you want to make a car inside
that picture a clickable button, as shown in Figure 7-24. Bring
the entire picture into your button symbol. In the Hit frame,
trace and fill the portion you want to be clickable—say, the
car. Then delete the original picture, leaving only the filled
shape. Exit symbol editing mode, and then drag your invisible
button over the picture in the main timeline. To help you out
in placing an invisible button on the stage, Flash provides a
transparent blue hotspot shape. You can see this shape when
you’re working in Flash, but it doesn’t appear in your published
animation. For a working example of an invisible button,
download 07-4_Invisible_Button.fla from the Missing CD at
www.missingmanuals.com/cds/flashcs6mm .

Otherwise, only the actual letters are clickable. (Obviously, this
strategy works best when you have only a few buttons on the
stage and they’re not near one another.)

Note

Filters aren’t just for buttons. You can also apply filters to text blocks (Chapter 6) and movie clip

instances.

To apply a filter to a button instance:
1. On the stage, select the button instance.
Flash draws a blue selection box around the instance.
2. In the Properties panel, click the Filters subpanel.
If the Filters subpanel is closed, click the triangular button to expand it.
3. Click the Add Filter button (lower-left corner).
A pop-up menu appears (Figure 7-25), listing the following filter options:
Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

277

Symbols and
Instances

• Drop Shadow. Displays a shadow on the right and bottom edges of the
button.

Figure 7-24

You can tell the car is a clickable button in this
Flash animation, because the cursor changes to the
well-known pointing finger. This clickable hotspot, or
invisible button, was created by placing a graphic the
shape of the car in the Hit frame of a button symbol.

• Blur. Redraws the surface of the button so that it appears soft and blurred.
• Glow. Similar to a drop shadow, creates a fuzzy aura in the color of your
choosing.
• Bevel. Applies brightness and shadow on opposite sides of the button to
create a 3-D effect.
• Gradient Glow. Similar to Glow (above), but lets you specify bands of different colors (instead of just one color).
• Gradient Bevel. Similar to Bevel (above), but lets you choose bands of
different colors for the brightness and shadow.

278

FLASH CS6: The Missing Manual

www.it-ebooks.info

• Adjust Color. Lets you individually adjust the brightness, contrast, saturation, and hue of your button.

Symbols and
Instances

Figure 7-25

When you click the Add
Filter icon in the Filters
panel, this pop-up menu
appears, showing you all
the effects you can add to
your button instance.

4. From the menu, select Glow.
A red, glowing effect appears around your button, and the Filter panel displays
the Glow properties.
5. Click the down arrow next to Blur X, and then drag the slider to 40.
On the stage, the glow diffuses.
6. Click the Shadow Color icon, and then, from the color picker that appears,
click the black swatch.
On the stage, the glow turns from red to black, yielding a subtle 3-D effect
(Figure 7-26).
7. Test your newly edited button by selecting Control→Test Movie→Test.
In the test window that appears, you see your button with the Glow effect
applied.
8. In the test window, move your mouse over your button.
Flash applies filters to the entire instance (not just the contents of the keyframe
to which you apply them), so the Glow effect remains even when you mouse
over the button.
Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

279

Templates

Tip

With filters, you can quickly make a button instance look both unique and spiffy. Flash lets you change
the properties of your filters—for example, you can change the size of a blur or the color of a drop shadow—so the
drop shadow you apply to one instance doesn’t have to look the same as the drop shadow you apply to another
instance of the same symbol.

Figure 7-26

When you apply a Glow
filter to a button, you can
change the horizontal
and vertical width of the
glow (Blur X and Blur
Y), the density of the
blur (Strength), and how
far out the blur extends
(Quality). You can also
choose a different color
for your blur or apply a
Knockout effect (which
leaves the blur but erases
the button) or “Inner
glow” (which erases the
blur and then uses the
blur color to repaint the
surface of the button).

To remove a filter you’ve applied: In the Filter panel, select the filter you want to
remove, and then click the Delete Filter button (trash can).
Tip

Applying a filter isn’t an either/or proposition. You can add multiple filters to the same instance to create
different effects: For example, you can add both a glow and a drop shadow, as shown in Figure 7-27.
Editing a button symbol
You edit a button symbol, the same way you edit a single-frame graphic symbol:
by switching to symbol editing mode (page 258). In both cases, Flash immediately
applies the changes you make to the button symbol itself, as well as all the instances
of that button symbol.

Templates
While symbols let you reuse images and series of frames, templates let you reuse
entire Flash documents. In this section, you see how to use Flash’s prebuilt templates
and how to create your own. In Flash CS6, templates are helpful in several ways:

280

FLASH CS6: The Missing Manual

www.it-ebooks.info

• Use Adobe’s predesigned templates as a project starting point. For example,
the Advertising templates start you off with the stage set to web advertising
standards like 160 x 600 Wide Skyscraper or 728 x 90 Leaderboard. Among
the Media Playback templates, you’ll find templates to create photo albums.

Templates

Figure 7-27

Flash applies filters
in top-down order, so
adding a glow and a drop
shadow yields a different
result than adding a drop
shadow and then a glow.
You can even add the
same filter more than
once to compound the effect. To change the order
of your filters, simply
drag them to reposition
them in the Filter panel.

Design Time

Organizing Your Symbols
If you do a lot of work in Flash, chances are you’re going to
create a lot of symbols. But in Flash, as in life, if you can’t see
what you’ve already got, you’re apt to recreate it or go without
it—both of which defeat the purpose of using symbols for in
the first place.
The answer? Organize your symbols into folders.
Flash lets you create folders inside the Library. You can use
these folders to organize your symbols. For example, you
might want to keep all your movie clip symbols in one folder,
all your graphic symbols in another, and so on. Or you might
want to keep all the symbols related to a composite drawing
(like a cartoon character or a corporate logo) in a separate
folder. Use whatever organization makes sense to you; you
can always reorganize your files and folders later.
To create a folder in the Library:

1. In the Library, click the Options menu. From the pop-up
menu that appears, choose New Folder.
2. A folder named “untitled folder 1” appears in the Library
beneath your symbols.
3. Replace the folder name by typing in a new, more
meaningful name, like logo, spaceman, or intro_scene.
Flash selects the folder name automatically when it
creates a new folder, but if you need to change the name
after the fact, double-click it.
4. Drag all the logo-related symbols into the logo folder,
all the spaceman-related symbols into the spaceman
folder, and so on.
If you need more levels of organization, you can place folders
inside folders.

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

281

Templates

• Use Adobe’s predesigned templates as learning examples. The Animation
and Sample Files templates show how to use advanced techniques such as
tweens, masks, and easing. These are working examples, which you can learn
from by experimenting and analyzing them (as of this writing, these templates
contain no written instructions). Still, if you want to learn how to create random effects with ActionScript, you can study the code in the Scripted Rain or
Scripted Snow templates.
• Create your own templates to save time and ensure consistency. Suppose
you create marketing animations for display on your corporate website. You
always use your company’s logo and copyright notice, the same stage size and
color palette, a copyright notice, the same sound clips of your CEO speaking,
and the same intro and credit scenes. By creating a template with these elements, you can save yourself a lot of time, and you ensure consistency among
your animations (highly important in certain corporate circles).
Flash CS6 comes with a bunch of templates all ready for you to customize. You see
them on the Welcome screen (Figure 7-28) when you start Flash (or choose File→New
and then click the Templates tab). While they’re obviously not specific to your
particular company or project, they can save you time on a lot of basic animations,
including banner ads, slideshows, and presentations. They’re also great examples for
learning new Flash skills. Here’s a quick rundown of the major template categories.
• Advertising templates are sized according to web advertising standards. Other
than setting the stage to a specific size, they don’t provide that much help.

Figure 7-28

When you first start Flash, the major template categories are displayed on the
Welcome screen. If you don’t see the Welcome screen when you start Flash, you
can always open a template using the File→New command and then clicking the
Templates tab.

282

FLASH CS6: The Missing Manual

www.it-ebooks.info

• AIR for Android templates are great learning tools. As you’ll see in Chapter 23,
they include example for handling common mobile device behaviors such as
touch screen gestures and accelerometer events.

Templates

• Animation templates are more helpful both as a starting point and as learning
examples. You’ll find working buttons and examples of graphic masks—a method
where part of an image that’s concealed is gradually revealed. The animation
template examples shown use an ease—that is, an effect that starts off at one
speed and then increases or decreases. The Animation templates also include
several examples that include random movement and timing.
• Banners holds templates similar to the ones in the Advertising group. There are
fewer examples, but they include some ActionScript programming. For example,
the 160 x 600 Simple Button AS3 template includes code to link to a web page.
• Media Playback templates come in two flavors—photo album templates (always
popular) and TV title-safe templates. The TV templates give you a presized stage,
with rectangles marking the safe areas for titles and action. If your work goes
outside the safe area, some TVs may not display all your beautiful animation.
• Presentations are predesigned to help you create PowerPoint-style presentations in Flash.
• Sample Files are a grab bag of templates that are great learning tools. You’ll
find examples that use Flash’s IK Bone tool (Figure 7-29).
Note

Flash’s templates are useful—if you can figure out what they’re supposed to do and how to customize them. You’re at the mercy of the people who created the templates. If you’re lucky, they provided a helpful
name and description that appears in the dialog box where you choose a template. If you’re very, very lucky,
they provided instructions, comments, and notes in the template itself.

Opening a Prebuilt Template
Starting a document from a template is similar to opening an existing document.
There’s one big difference, though. When you use a template to create a new document, the original template remains untouched. It’s as if you opened an existing
document and immediately used Save As to save it under a new name. Here are the
steps for using one of the prebuilt templates that come with Flash:
1. Select File→New.
The New Document window appears.
2. In the New Document window, click the Templates tab.
The New from Template window opens (Figure 7-30).
3. In the Category box, select Animation.
Several animation templates appear in the Templates box.

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

283

Templates

4. At the top of the list, click Animated Button Highlight.
The Preview window shows the stage for the selected template. Sometimes
you won’t see anything but the shape of the stage. For the Animated Button
Highlight, you see the button. The description gives you some hints about the
template and what it is designed to do.

Figure 7-29

Templates in the Sample
File group can help you
master specific tools and
techniques. The IK Stick
Man Sample shown here
shows how to use Flash’s
Bone tool (page 325).

5. Click OK.
Flash opens the template, and you’re ready to roll. Several of the prebuilt templates have instructions, including this one. The instructions are in the top layer
of text on the stage. After you’ve read them, you can delete or hide the layer.
These instructions explain how to change the button’s appearance and behavior.

284

FLASH CS6: The Missing Manual

www.it-ebooks.info

With many templates, the best way to start is with a test drive. Watch the animation,
then examine its timeline, symbols, and any ActionScript code that makes it work.
In the Animated Button Highlight template, press Ctrl+Enter (⌘-Return) to see how
the animation works in the Flash Player test window. It’s pretty basic: There’s one
big button on the center of the stage labeled “click”. When you mouse over the
button, its appearance subtly changes—it starts to blink. Click the button, and its
appearance changes again—it stops blinking and has a pressed-down appearance.
The Output panel down near the timeline reads, “Button clicked”.

Categories

Template
tab

Templates

Preview

Templates

Figure 7-30

Flash offers a ton of
templates you can use to
jump-start the animation
process. They don’t all
come with descriptions
or instructions, but you
can find hints within
the template file. This
section shows you how
to customize the Photo
Slideshow template to
create a spiffy slideshow
in just a couple of
minutes.

Description

Close the Flash Player window and go back to the stage. Click the Timeline tab, and
you can start to explore the mysteries of this template. For example, select the button on the stage, and then check out the Properties. You see the button is a movie
clip symbol rather than a button symbol. Double-click the button on the stage, and
it opens so you can see the timeline for the symbol, as shown in Figure 7-31. This
particular template uses some Flash tools that you’ll learn about later in this book:
ActionScript (page 407) and timeline labels (page 523). But that’s one of the cool
things about templates—you don’t have to know exactly how they work to use them.
In many cases, you can make simple modifications without getting knee-deep in
the mechanics.

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

285

Templates

Customizing the Photo Album Template
The Simple Photo Album template (Figure 7-32) is a perfect example of a template
you can use without completely understanding all the ActionScript code and other
techniques that make it work. You can even customize it, which this section shows
you how to do.

Figure 7-31

Open the button symbol in the
Animated Button Highlight template,
and you see why the button behaves
the way it does. Layer 3 contains
ActionScript code and timeline labels.
Layer 2 holds the text that appears on
the button. Layer 1 holds the button
shape with the color changes that
display the highlights.

Here are the steps for customizing the template with your own photos:
1. Choose File→New→Templates and then, under Category, choose Media
­Playback. Under Templates, choose Simple Photo Album, and click OK.
The template opens, showing text, buttons, and an image. The brief instructions
for using the template appear in red below the stage.
2. Press Ctrl+Enter (⌘-Return) to test the animation.
Flash Player shows an image that looks like video color bars with the big number 1. The text above the image says “Image Title 1”. Three familiar-looking
buttons control the animation. The center button is a Play/Pause button, and
the other buttons move the album forward or backward one image.
3. Close the Flash Player window.
When Flash Player closes, you’re back in Flash Professional.
4. In the timeline, click the Show/Hide button for the instructions.
A red X appears when the instructions are hidden.
5. Click the Show/Hide button for the Controls layer.
A red X appears when the three control buttons are hidden. When you’re investigating a new template, you can learn what’s on each layer by toggling the
Show/Hide button for each layer. In this case, you learn that the controls are
on one layer and that the images and text are on the Images/Titles layer. The
Matte layer is a rectangle that’s partially hidden by the image. When the image

286

FLASH CS6: The Missing Manual

www.it-ebooks.info

is visible, it looks like a border around the image. The background creates the
dark-gray stage color.

Templates

6. Drag the playhead to Frames 2, 3, and 4.
Each frame on the timeline corresponds with one of the images. That means
you can swap your own images for the numbered color bar pics.
7. Move the playhead to Frame 1, and then click the color bar image on the
stage.
When the image is selected, the Properties panel shows that it’s a bitmap, and
it’s an instance of image1.jpg.

Figure 7-32

The Simple Photo template
displays photos one by one. Your
audience can move through the
photo collection using the Play/
Pause and the Back and Forward
controls. It’s a perfect example of
a template that can be used for
many different projects.

8. Examine the Position and Size properties.
Adobe may change the templates from time to time, but the position is probably something like X: 70 and Y: 35. Those settings indicate the position of the
upper-left corner. The size properties are probably about: W: 500 and H: 376. If

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

287

Templates

you want to add your own pics, they should be about the same size or at least
the same proportions: 500 x 376 pixels.
9. Prepare your own images for a new album.
You can resize photos or images within Flash, but you’ll probably have best results if you crop your images before you bring them into Flash using a program
like Photoshop, the GIMP, or iPhoto.
10. Choose File→Import→Import to Library and then select your photos and
click Open.
Shift-click or Ctrl-click to select more than one photo for importing. After you
click Open, the Import to Library window closes, and your photos are added
to the Library.
11. In the Library, select your photos and drag them to the Sample Images folder.
Click to open the Sample Images folder, and you can see the individual color bar
photos. You might as well put your own pics in there, too, as shown in Figure 7-33.

Figure 7-33

The album photos are stored in the Sample Images folder in the Library. Here you see a combination of the photos that came with the template and new photos that have been added: car,
duck, gremlin, puppy, and rose.

288

FLASH CS6: The Missing Manual

www.it-ebooks.info

12. Select the instance of image1.jpg on the stage.
Make sure the playhead is on Frame 1 in the timeline and the Properties panel
says “Instance of: image1.jpg” as shown in Figure 7-34.

Instance name

Swap button

Templates

Figure 7-34

Flash makes it easy to replace one Library symbol
for another. Select the
symbol on the stage you
want to replace and then,
in the Properties panel,
click the Swap button. A
new window appears, like
the Swap Bitmap window
shown here. Choose your
replacement symbol from
the list.

Sample images folder open

13. In the Properties panel, click the Swap button.
The Swap Bitmap window opens.

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

289

Templates

14. Open the Sample Images folder and select one of your new images. Then
click OK.
Your image appears on the stage. If it doesn’t look exactly right, you may need
to tweak the size or position settings.
15. Set the size and position to match the settings you noted in step 8.
This example had a position of X: 70 and Y: 35, and a size of W: 500 and H: 376.
16. Repeat the swapping process for each photo you want to add.
Each frame should display one of your photos.
17. For each frame, double-click the top title and type your own title for the
image.
You can double-click with the Selection tool (V) to open the text for editing.
18. Press Ctrl+Enter (⌘-Return) to test the animation.
Your customized animation plays, showing your own photos and text.
The preceding steps work great if you want to create a photo album with exactly the
same number of pics as the template. Suppose you want to add one more image to
the album. You can do that easily and without digging into the ActionScript code
that makes the album work. All you have to do is extend the timeline in a few places.
The top two layers in the timeline are named Instructions and Actions. You can delete the Instructions layer once you’re done reading it. The Actions layer holds the
ActionScript code for the album. You can learn more about writing your own code
on page 407, but for now, you can leave the Actions layer the way it is. The next
layer moving down is the Controls layer. You want the Play/Pause and Forward and
Back controls to appear with every photo, so you need to extend the Controls layer.
Select Frame 5 and then press F5 to insert a frame (page 100). Do the same for the
Matte layer and the Background layer. You need a new keyframe in the Images/Titles
layer because you want both to change, so press F6. The newly created keyframe
holds that last image and title in the album. All you need to do now is swap them
for the new photo. You can repeat this process to add as many photos as you want
to the album (Figure 7-35).

290

FLASH CS6: The Missing Manual

www.it-ebooks.info

Create Your Own Template
Once you start cooking in Flash, you’ll have a bunch of animations that you want
to turn into templates. As they say, why reinvent the wheel? Templates are great
timesavers, and it’s easy to create your own. For now, you may want to experiment
with a file from the Missing CD (www.missingmanuals.com/cds/flashcs6mm), such
as 07-5_Photo_Gallery.fla. This example, shown in Figure 7-36, is a lightbox-style
photo gallery. Click a thumbnail image, and it flips around a bit and then fills the
stage. Another click, and the photo shrinks back to a thumbnail. The gallery holds
nine photos total. If you save the photo gallery as a template, you can open it and
swap the sample photos with your own masterpieces.

Templates

Figure 7-35

Here the timeline in the
Simple Photo Album
template is extended to
accommodate a new image
and title. New frames were
added to the Controls, Matte,
and Background layers. A
new Keyframe was added to
the Images/Titles layer.

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

291

Templates

First, open the standard .fla file. It’s all ready to go, and it even has some instructions
in the top layer that appear above the stage. If you want to see the photo gallery in
action, press Ctrl+Enter (⌘-Return).

Figure 7-36

The Photo Gallery
template is another predesigned Flash document
that you can download
from the Missing CD.
Follow the steps in this
section to turn it into a
reusable template. Then
you can swap the gallery
photos with your own.

To save the Flash document as a template, choose File→Save As Template. A dialog
box appears with a warning that explains that the “SWF history” will be cleared when
the file is saved as a template. Go ahead and click the Save As Template button. The
next thing you see is the Save as Template box shown in Figure 7-37, where there’s
room for a Name, Category, and Description. The Preview window shows the stage
for the template. Fill in the details you want, and then click Save. Flash saves your
file as a template. The next time you choose File→New and click the Templates tab,
you’ll see your saved template along with all the others.

292

FLASH CS6: The Missing Manual

www.it-ebooks.info

Templates

Figure 7-37

Use the Save as Template dialog box to give your
template a name, a category, and a description.
This information comes in handy when you or
someone else tries to figure out how to use your
creation.

Design Time

Building a Better Template
Sometimes, you’ll find yourself creating a template almost
by accident. For example, imagine that you’re hard at work
on one animation when your boss comes in, peeks over your
shoulder, and tells you to create another one “just like that one”
for another client. Choose File→Save As Template, continue with
the instructions on page 291, and you’re on your way.
But if you know beforehand that you’re creating a template,
you can plan for its reuse. And planning always results in a
more useful template. Here are a few planning tips for creating
a template you’ll use over and over again:
• Include only reusable stuff. If you save a working
animation as a template (complete with company-specific
elements), you’ll need to delete any unusable elements
each time you reuse the template. Consider up front which
elements apply across the board, and include only those
in your template.
• Name your layers. Giving your layers meaningful names
that describe what each layer contains (like actions,
sounds, background, buttons, and so on) is always a good

idea. But it’s even more important when you’re creating
a template, because it gives you (or your colleague, or
whoever’s reusing the template two weeks from now)
an easy way to find and change the elements that need
to be changed.
• Document, document, document. Have pity on the person
who tries to reuse your template a month from now,
and tell him up front what the template’s for (a product
demonstration combined with an order form, for example)
and what needs to be changed (the company logo, demo
movie clip, and three form fields). The quickie description
you type when you create your template is rarely enough.
Instead, provide an Instructions layer at the top of the
timeline. Add a labels layer with words that help other
people understand the animation’s structure. If you’re
including ActionScript code, use comments to explain
how the code works and how someone can make simple
changes.

Chapter 7: Reusable Flash: Symbols and templates

www.it-ebooks.info

293

www.it-ebooks.info

chapter

Advanced Tweens with
the Motion Editor

8

T

weens have always been a big tool in Flash’s animation toolbox, and, as explained in Chapter 3, these days you have more control over tweens than ever.
Flash’s motion tween (page 103) can do more than just show a car moving
down a street—it can make the car stretch out and turn blazing red when it’s going
really fast and scrunch up when it stops. It can even make the car’s shadow change
position as the car and sun move across the screen.
You accomplish these sophisticated tweens by making multiple property changes at
multiple points in time. Want precision control over every aspect of a tween? Turn
to the Motion Editor. This chapter shows you in detail how to apply and fine-tune
your motion tweens, focusing in particular on Motion Editor control. You’ll start with
a refresher on motion presets, which are simply predesigned tweens that you can
apply to objects with a couple of mouse clicks. Then you’ll learn some of the different
ways you can edit your tweens on the stage, in the timeline, and using the Motion
Editor. Along the way, you’ll learn how to apply filters for special effects and how
to create more realistic motion (easing).
Note

If you need a primer on motion tween basics, or tweens in general, head back to page 103.

Applying Motion Presets
Designing a perfect tween can be a lot of work. It’s not so much that it’s difficult,
but creating a complex motion tween where several properties change at different
points in time can be time-consuming. Fortunately, right out of the box, Flash gives

295

www.it-ebooks.info

Applying
Motion
Presets

you a head start. Open the Motion Presets panel (Window→Motion Presets), and you
see a handful of predesigned tweens, as shown in Figure 8-1. Initially, the Motion
Presets panel comes with two folders: Default Presets, where the Adobe-designed
presets live, and Custom Presets, where you can store tweens you’ve perfected as
motion presets (see page 298). Just click a motion preset to see a minipreview at
the top of the panel.

Figure 8-1

Motion presets are saved tweens that you can
attach to a symbol or text field with a couple of
mouse clicks. Flash comes with several Adobedesigned motion presets, and you can save and
reuse your own as you work.

Preview
window

Open/close
folder

Save selection
as preset
New
folder

Remove
item

Apply preset

Not only are motion presets useful design tools, but they’re also great learning tools.
By dissecting some of the professionally designed presets that come with Flash,
you can see how certain effects are created. After you’ve applied presets in your
project, you can modify them, examine them, and steal some of their ideas for your
own tweens. To get started, the following steps show how to apply and modify a
motion preset called flyin-pause-flyout. As with most presets, the name gives you
a pretty good hint at the action.
First, the easiest part: applying a motion preset. Like any motion tween, a preset
can be applied only to a symbol or a text field. For this exercise, you can draw your
own simple circle, or you can use the Missing CD document 08-1_Flyin_Preset.fla
from www.missingmanuals.com/cds/flashcs6mm.

296

Flash CS6: The Missing Manual

www.it-ebooks.info

1. Open the Motion Presets panel by choosing Window→Motion Presets.
The Motion Presets panel is small, so you can easily let it float over your work
area while you’re making a selection, and then close it after you’ve applied a
preset. You won’t need it again until you need another preset. If you’re working
in the Essentials workspace, the Motion Presets panel appears at the bottom of
the collapsed panels to the right of the stage.

Applying
Motion
Presets

2. Select the symbol you want to tween; in this case, your circle or the car
from the example file.
The symbol or text field you tween has to be by itself in a layer in the timeline.
If the layer holds more than one object, then Flash creates a new layer for the
object before it applies the tween. If the object can’t be tweened (perhaps it’s
not a symbol), you see a warning like Figure 8-2.

Figure 8-2

If you try to apply a motion tween to an object
other than a symbol or a text field, you see this
warning.

3. In the Motion Presets panel, click the flyin-pause-flyout preset, and then
click Apply.
A motion path appears attached to the object on the stage, and a blue tween
appears in the main timeline, as shown in Figure 8-3.
4. Press Enter to preview your tween in Flash.
More often than not, you’ll make changes to a preset motion after you apply
it. Start by taking a look at how the motion preset behaves. The flyin-pauseflyout preset blurs the symbol while it’s moving, giving it a sense of speed. It
slows for a bit and then speeds on. As you’ll learn in this chapter, once you’ve
applied the preset you can change the position of the tweened symbol, its
size, and even its appearance. For example, you can increase or decrease the
blurriness of the image.
5. Modify the tween just as you would any tween you created from scratch.
For example, often the tween is working right, but you need to fine-tune the
position of both the object and the motion path. With the Selection tool, drag
a box around both the object and the motion path to select everything. Then
you can drag the whole kit and caboodle to a new position on the stage.

Chapter 8: Advanced Tweens with the motion Editor

www.it-ebooks.info

297

Applying
Motion
Presets

Note

In different places, this book explains how to make changes to the tween using the motion path
(page 300), the timeline (page 307), the Motion Editor (page 311), and the Properties panel (page 107).

Car symbol
blurred

Motion
Path

Tween in
main timeline

Default Presets

Figure 8-3

After you apply a tween
to a movie clip or text
field, you see a motion
path attached to the
tweened object. A blue
tween appears in your
animation’s timeline,
complete with preset
property keyframes.

Property
keyframe

Once you’ve applied a tween using a motion preset, it’s no different from a tween
you create from scratch. Also, there’s no connection between the tween and the
presets panel. If you make changes to the tween in your animation, it has no effect
on the one stored in the Motion Presets panel. The opposite is true, too. Unlike with
symbols in the Library, making changes to or deleting the tween in the Motion Presets
panel has absolutely no effect on animations to which you’ve applied the preset.

Saving a Custom Motion Preset
Setting up the perfect motion tween can take time. Perhaps you’ve got a text banner with some 3-D effects. Or maybe you spent time getting a basketball to bounce
just right. With all that time invested, you want to be able to reuse that work, and as
usual, Flash helps you do just that. You can save your carefully crafted tween as a
motion preset, and then, in the future, apply it to new symbols and text fields with
a click or two. Furthermore, because you modify the tweens created by presets,
they’re very versatile and adaptable to different uses. For example, a badminton
shuttlecock might not bounce like a basketball, but it’s probably faster to apply the
basketball-bounce preset to the shuttlecock and then tweak it a bit than to create
a new motion tween from scratch.

298

Flash CS6: The Missing Manual

www.it-ebooks.info

Saving a preset is easy, and you have a couple of ways to do the job. Which one you
use may depend on your own preferences or where your mouse happens to hover
at the moment. You can choose one of these methods to save a motion preset:

Modifying
a Motion
Preset

• Right-click the tween or motion path, and then choose “Save as Motion Preset”
from the pop-up menu.
• Select the tween or motion path, and then click the “Save selection as preset”
button on the Motion Presets panel (Figure 8-1).
In either case, a dialog box opens where you name the preset and then click OK. Once
that’s done, your newly named preset appears in the Custom Presets folder in the
Motion Presets panel. (Your custom preset won’t have an animated preview like the
ones that come with Flash, but you can create one as instructed in the box below.)
Frequently Asked Question

DIY Preview
Can I create a preview for my custom motion preset?
If you’ve gone to the work of creating a custom motion preset,
you may want it to have its own nifty preview animation just
like the presets Adobe designed. As it turns out, you can do
that easily. First, publish your preset to create an SWF file
that shows the animation. (SWF files are final files created to
display animations. The details for publishing SWF files are
on page 677.) Then place the SWF file in the folder that holds
your motion presets.
That last bit is the tricky part. The motion presets storage
location is different for different computers, as shown in the
following examples. (The words in brackets, like 
and , represent the disk drives and user names

on your computer, while  represents the locale or language for the computer; for example “en” is used for English.)
• Mac OS X: /Users//Library/
Application Suppor t /Adobe/Flash CS6//
Configuration/Motion Presets/
• Windows 7 and Vista: \Users\\
AppData\Local\Adobe\Flash CS6\\Configuration\
Motion Presets
• Windows XP: \Documents and Settings\\Local Settings\Application Data\Adobe\Flash
CS6\\Configuration\Motion Presets\

Deleting motion presets
If you decide that a particular motion preset isn’t worthy, you can delete it from the
Motion Presets panel. In the Motion Presets panel, click to select the offending preset, and then click the trash can icon at the bottom of the panel. The stored preset
disappears from the panel, but throwing it away has no effect on any tweens that
were created using the preset.

Modifying a Motion Preset
As discussed earlier in this chapter, Adobe gives you a bunch of snazzy motion
tweens with Flash. But one designer’s perfect tween is another designer’s, well…
nearly perfect tween. Fortunately, you can customize presets after you apply them. In

Chapter 8: Advanced Tweens with the motion Editor

www.it-ebooks.info

299

Modifying
a Motion
Preset

fact, tweaking a motion preset is great learning ground for designing and perfecting
your own tweens. Editing a motion preset is no different from editing a tween you
created yourself, so the following sections “Changing the Motion Path” (below) and
“Editing a Tween Span” (page 307) apply to both motion presets and the tweens
that you create from scratch.

Changing the Motion Path
Whether you use a motion preset or create your own tween, chances are you’ll
want to tweak the motion path. Perhaps the ball doesn’t bounce in just the right
places, or that car looks like it’s driving off the road. The motion path looks like a
line t­ railing off from the tweened object. As you drag the playhead in the timeline,
you’ll notice that the tweened object follows the motion path. If you need a practice
file, download 08-2_Motion_Path.fla from the Missing CD (www.missingmanuals.
com/cds/flashcs6mm).
You can change this path on the stage using the same Selection tool that you use
to modify any line:
• Move the entire motion path. With the Selection tool, drag a box around any
part of the path. Then drag everything to a new spot.
• Move the starting point for the motion path. With the Selection tool, drag the
diamond-shaped selection point at the beginning of the motion path to a new
location. The end of the path remains anchored where it was, while the motion
path stretches or shrinks to accommodate the move.
• Move the ending point of the motion path. Select the diamond-shaped end
point of the path and drag it to a new location. The starting point of the tween
remains anchored in place, and the motion path adjusts to the move.
• Create a curve in the motion path. First, make sure the motion path is not
selected, by clicking some empty spot on the stage. Then with the Selection
tool, point to the path; when you see a curve appear next to the cursor arrow,
drag to create a curved path (Figure 8-4). You can reshape the path by dragging different points along the path.
• Change the tweened object’s position at any point of the motion path. In the
main timeline, move the playhead to the frame where you want to reposition
the tweened object, and then drag the object to a new position. Flash creates
a new property keyframe in the timeline and adjusts the motion path to the
new position. To use this method to move the start or end point, make sure that
the playhead is on the first or last frame of the tween. This action also creates
a diamond-shaped control point in the motion path. You can use the point and
the accompanying control handles to change the shape of the motion path. It’s
similar to any line you draw using the Pen tool (page 68).
The example file 08-2_Motion_Path.fla includes a wheel with the bounce-smoosh
tween applied. The animation would be much more interesting if the wheel rolled

300

Flash CS6: The Missing Manual

www.it-ebooks.info

along the high step, dropped to the ground, and then bounced in a forward motion.
Here’s how to change the path for that effect:

Modifying
a Motion
Preset

1. Move the playhead to Frame 1 and make sure nothing is selected. Then drag
the wheel so it sits on the step, as shown in Figure 8-5.
If the entire path moves with the wheel, you’ve selected both the path and
the object. To deselect everything, click an empty spot or press Shift+Ctrl+A
(Shift-⌘-A).
2. With the Selection tool, adjust the curve so that the wheel appears to roll
along the top of the stairstep.
When you move the cursor close to the path, it changes to show a curved line
next to the arrow. Drag to adjust the curve in the motion path. The solid line
shows the general arc of the motion, while the small dots show the actual position of the tweened object at different points in time.

Figure 8-4

Use the Selection and Subselection tools to modify a
motion path just as you would any other line.

3. Adjust the end of the motion path so the wheel moves to the right as it
bounces.
You can stretch the path to the right side of the stage, giving the wheel a feeling
of increased forward motion as it bounces.

Chapter 8: Advanced Tweens with the motion Editor

www.it-ebooks.info

301

Modifying
a Motion
Preset

4. Preview the animation and fine-tune it as necessary.
If you got it perfect the first time, great! If not, try zooming in a little and finetuning the motion path as described in step 2.

Figure 8-5

To move the starting point of a motion path, you
can drag the square end point to a new position.

Deleting a Motion Path
You can delete a motion path from a tween by simply selecting it and then pressing Delete. The consequence, of course, is that your tween isn’t going anyplace.
The tweened object remains stranded at its starting point until you provide further
instructions. For example, you can copy and paste in a new path, as described next.

Copying and Pasting a Motion Path
Flash gives you tools to create perfect shapes like circles, rectangles, polygons, and
stars, not to mention the precise control that comes with the Pen tool. You can use
any of these drawing tools to create a motion path. If you need a path that matches
a perfect shape or is extremely complex, it’s faster and easier to use Flash’s drawing
tools, rather than dragging tween objects around the stage to modify a motion path.
First you need to create the path with one of the tools that creates a stroke—that

302

Flash CS6: The Missing Manual

www.it-ebooks.info

is, any of the shape tools, the Pen, the Pencil, or the Line tool. Then, you paste that
stroke into an existing tween that doesn’t have a motion path.

Modifying
a Motion
Preset

Note A file with a completed version of this project, 08-3_Path_Orient.fla , is available at www.
missingmanuals.com/cds/flashcs6mm.

Here are the steps:
1. In a new Flash document, create two layers, each with 48 frames.
After you create the second layer, Shift-click to select the 48th frame in both
layers, and then press F5 to add new frames on both layers.
2. Create a text field with the words not oriented , and then rename the layer
not oriented .
Make the text nice and bold and about 32 points in size. Double-click the layer
name so you can edit it.
3. Right-click a frame in the timeline of the “not oriented” layer, and then
choose Create Motion Tween from the pop-up menu.
You now have a motion tween with no motion and no tween, because you haven’t
yet made any changes to the tweened object’s properties.
4. In the other layer, use the Oval tool to draw a circle, and then rename that
layer circle.
Set the oval fill color to none by clicking the swatch with the Paint Bucket, and
then, in the upper-right corner of the panel with color swatches, click the square
with a stroke through it. Make the circle about 200 pixels in diameter. If necessary, you can set the size in the Properties panel.
5. Use the Eraser tool, with a small eraser size, to erase a little bit of the circle.
You can’t use a closed shape as a motion path, so you need to break the path
at some point. When you’re done erasing, your stage should look something
like Figure 8-6.
6. Using the Selection tool, drag a box around the circle to select the entire
circle. Copy it (Ctrl+C or ⌘-C), click the “not oriented” tween layer, and then
paste it (Ctrl+V or ⌘-V) into the tween.
As soon as you paste the circle into the tween layer, the text field attaches
itself to the path. At this point, it’s easier to examine your tween if you hide the
original circle by clicking the Show/Hide button in the “circle” layer (Figure 8-6).
7. Press Enter or Return to preview the animation.
Your not oriented text field moves in a circular motion, but the text isn’t oriented
to the circle. It remains right-side up and oriented to the stage. That looks a

Chapter 8: Advanced Tweens with the motion Editor

www.it-ebooks.info

303

Modifying
a Motion
Preset

little odd, but don’t fret. You’ll learn how to orient the text to the circle in the
next section.
You can use any stroke as a motion path, even complex strokes created using the
Pen tool with multiple complex Bezier curves. Just make sure you’re not using a
closed path. Even though the circle isn’t a closed path, the motion of the text looks
like it’s making a complete circle. When the movie clip loops, no one in your audience will ever know there’s a break in the circle.

Figure 8-6

If you want a motion path that’s a perfect circle, square,
star, or polygon, it’s easiest to create the path with one of
Flash’s shape tools and then paste it into your tween.

Circle, but not a closed path

Show/hide buttons

Orienting Tweened Objects to a Motion Path
Orienting text fields and symbols to a motion path is as simple as clicking a checkbox.
In this section, you’ll learn how to do that, as well as another handy technique—­
copying and pasting a motion from one layer to another in the same animation. When
you’re done, you’ll have one Flash file with two examples of circular motion. In one,
the text field is oriented to the circle; in the other, it’s not (Figure 8-7).
1. Click the Insert Layer button in the timeline’s lower-left corner.
A new layer appears in the timeline.
2. Rename the new layer oriented .
Double-click the layer, and then type the new name.

304

Flash CS6: The Missing Manual

www.it-ebooks.info

3. Click the “not oriented” layer name to select all the frames in that layer,
and then copy the frames (Edit→Timeline→Copy Frames).

Modifying
a Motion
Preset

When you click the layer name, Flash automatically selects all the frames in the
layer. You can also Ctrl-drag (Control-drag) over the frames to select multiple
frames.

Figure 8-7

The text field on the top follows the motion path in a circular motion. The text field on
the bottom is oriented to the circular path, so the top of the text field always points to
the middle of the circle.

4. Click the first frame of the “oriented” timeline, and then paste the frames
(Edit→Timeline→Paste Frames).
When you paste frames into the timeline, Flash inserts the pasted frames, pushing any existing frames on down the timeline.
Tip

You can also right-click the timeline to see a shortcut menu that has both the Copy Frames and Paste
Frames commands.

5. Shift-drag the end of the “oriented” timeline to the 48th frame so it matches
the length of other layers.
At this point, your oriented timeline is almost identical to the not-oriented layer.
6. Edit the text field to read “oriented.”
With the Text tool still selected, you can resize the text field to fit the text by
double-clicking the box in the text field’s upper-right corner.

Chapter 8: Advanced Tweens with the motion Editor

www.it-ebooks.info

305

Modifying
a Motion
Preset

7. Click the motion path, and then, in the Properties panel, turn on the “Orient
to path” checkbox.
If the “Orient to path” checkbox isn’t showing, click to open the Rotation subpanel in the Properties panel, as shown in Figure 8-8. Notice that in the timeline,
Flash has added a property keyframe to every frame of the tween, since the
rotation of the text field changes in every single frame.

Figure 8-8

Here the Rotation panel is set to
align a symbol to the motion path.
Other options (not set) control the
direction, angle, and number of
rotations.
Number of times
to rotate

Angle in degrees
Rotation direction

Orient to path
checkbox

8. Preview your animation (Ctrl+Enter or ⌘-Return).
Your animation has two text fields that follow a circular path. The text that says
“oriented” is oriented toward the circle and rotates as it makes its rounds. The
text that says “not oriented” remains upright while it follows the motion path.
Other things you can do in the Rotation subpanel
The Rotation subpanel in the Properties panel has a few other settings in addition
to “Orient to path.” You can use the Direction drop-down menu to choose clockwise
(CW) or counterclockwise (CCW) rotation for a tweened symbol or text field. This
rotation refers to the tweened object rotating around its center point, not to its path
around the circular motion path; in other words, it makes a text field or symbol spin
during the tween. Above the Direction drop-down menu, you can set the number
of times the object spins and its angle at a particular point in time.
Note If you turn on “Orient to path,” these other settings are reset, as shown in Figure 8-8. Vice versa is
true, too. Setting Direction to any setting other than “none” deselects the “Orient to path” option.

306

Flash CS6: The Missing Manual

www.it-ebooks.info

Swapping the Tweened Object
Suppose you create the perfect tween for a logo or a text banner. It spins, it moves
in 3-D, and even the transparency changes so it fades in and out at just the right
moments. Then your client informs you of a big change—there’s a new company
logo or different text. Before you pull your hair out, read on to see how easy it is to
swap the object of a motion tween. Remember, a motion tween is applied to a single
object, so it’s simply a matter of shifting all the property value changes over to a new
movie clip or text field. To swap a symbol for a tweened object, follow these steps:

Editing a
Tween Span

1. In the original tween, select the symbol.
The symbol’s properties appear in the Properties panel.
2. In the Properties panel, click the Swap button.
The Swap button appears beneath the symbol’s name and type.
3. In the Swap Symbol box, select the new symbol, and then click OK.
The new symbol replaces the old symbol and performs all the same property
changes.

Editing a Tween Span
The tween span in the timeline deserves a closer look (Figure 8-9), since it gives you
a good overview of what’s going on in a tween. When you create a motion tween,
Flash colors it blue to set it off from the other layers, so you can easily find your
way around. Property keyframes are diamond-shaped in the timeline to distinguish
them from the circle-shaped standard keyframes. Clicking anywhere on the tween
selects the entire tween and moves the playhead to that frame in the tween. What if
you need to select a single frame in a tween? Perhaps you want to copy a tweened
symbol’s properties at that point in the timeline. In that case, Ctrl-click (⌘-click)
the timeline to select a single frame. Then, right-click the frame and choose Copy
Properties from the shortcut menu.
When you apply a motion tween to an object, Flash automatically sets aside a certain
number of frames for the tween, marking them with the blue highlight. If there’s only
one keyframe in the layer, Flash uses all the layer’s frames for the tween. Otherwise,
if there are several keyframes on a layer, Flash uses all the frames between two
keyframes. So, being the clever designer you are, you take this into account when
you create your motion tweens; you lengthen or shorten the available space in the
timeline to make your tweens just the right length. Still, there are times when you
need to make a tween longer or shorter after the fact. The main thing to consider
when you change the number of frames in your tween is the effect the change has
on your carefully positioned property keyframes. For example, suppose you have
the perfect tween for a basketball bouncing, but it seems to be running too slowly.
You want to speed up the bouncing motion but keep the relative positions of the
property keyframes the same. In that case, use the first option in Table 8-1—drag

Chapter 8: Advanced Tweens with the motion Editor

www.it-ebooks.info

307

Editing a
Tween Span

the end of the timeline. In another case, you may want to trim a few frames off the
end of your timeline, making it shorter, but you don’t want the property keyframes
to change position at all. To do that, Shift-drag the end of the timeline.

Figure 8-9

The tween layer is a light blue
to distinguish it from the other
layers. The small diamond-shaped
markers are property keyframes.

Tween layer

Playhead

Property
keyframe

Table 8-1 Want to lengthen or shorten the timeline of your motion tween? Here are the commands and the way they
affect the property keyframe.

308

Effect on property
keyframes

Action

How to do it…

Make a motion tween
longer or shorter.

Drag the end of the timeline.

Property keyframes move proportionately, keeping their relative positions along the tween.

Keep a tweened object
on the stage after its
motion is complete.

Shift-drag the end of the
timeline.

Has no effect on property
keyframes.

Remove frames from
a tween.

Ctrl-drag (⌘-drag) to select
the frames to be deleted.
Then press Shift-F5 to remove
frames.

The number of frames between
property keyframes stays the
same, except for the segment
where the frames are removed.

Insert frames into a
tween.

Ctrl-drag (⌘-drag) to select the
number of frames to insert in
the timeline. Then right-click the
selected frames. Choose Insert
Frame from the timeline.

Inserts frames at the point of
selection. Keyframes before
the insertion point remain in
the same position. Keyframes
beyond the insertion point
move down the timeline.

Move a tween span in
the same layer.

Drag the tween span to a new
point in the timeline.

The relationship of all the keyframes stays the same; however,
the move erases the existing
frames at the new location.

Flash CS6: The Missing Manual

www.it-ebooks.info

Effect on property
keyframes

Action

How to do it…

Change the breakline
between two adjacent
tween spans.

Drag the breakline to a new
point.

Property keyframes move proportionately, keeping their relative positions along the tween.

Delete a tween span.

Right-click the tween span, and
then choose Remove Frames
or Clear Frames to replace the
selection with standard frames.

Deletes all the property
keyframes.

Editing a
Tween Span

Viewing and Editing Property Keyframes in the Timeline
Property keyframes appear in the tween span at the point when any property
changes. Those properties can include the following:
• Position shown as X/Y coordinates in the Properties panel.
• Scale shown as H/W (height and width) coordinates.
• Skew, created with the Transform tool.
• Rotation around the transformation point.
• Color, including tint, brightness, and alpha (transparency).
• Filters, like Drop Shadow, Blur, and Glow.
Suppose you want to change the width of a symbol or text field in the middle of
a motion tween. So you drag the playhead to the point in the timeline where you
want the change to happen. Then, with the tweened object selected, you make
the width change using the W setting in the Properties panel. Flash automatically
adds a diamond-shaped property keyframe to the tween span to mark the change.
As seen on page 307, a single tween span can end up with bunches of property
keyframes scattered all up and down the timeline. Single property keyframe markers can represent more than one property change, too; for example, you may have
both a color change and a scale change in the same frame. Sometimes when you’re
working with your tween, you want to zero in on property keyframes for specific
types of changes. Perhaps you want to double-check all the color property keyframes. In that case, right-click the timeline, and then choose View Keyframes from
the shortcut menu, as shown in Figure 8-10. Toggle the different options until only
the Color option is checkmarked.
Tip

As you’re trying out different effects with the Motion Editor, you may experiment your way from a
good motion tween to a not-so-good motion tween. Don’t forget about the History panel (Windows→Other
Panels→History), where you can backtrack to a previous (and better) point in your work. Just drag the arrow
handle on the left side of the panel back to where things looked good.

Chapter 8: Advanced Tweens with the motion Editor

www.it-ebooks.info

309

Editing a
Tween Span

Copying Properties Between Property Keyframes
There may be times when you want to duplicate the properties in one property
keyframe to another elsewhere in the tween span, or perhaps to an entirely different
tween span. For example, it’s a great way to freeze the action for a certain number
of frames. (Create two motion keyframes with identical properties. Insert frames
in between the keyframes to lengthen the amount of time the action freezes. Or
remove frames to make it shorter.)

Figure 8-10

You can select which property keyframes you want marked in
the timeline. Right-click a tween span, and then choose View
Keyframes to see this menu.

Frequently Asked Question

No Longer a Tween
Can I change a tween to a frame-by-frame animation?
Yes. Sometimes you may want to work with the individual
frames inside a tween. Perhaps you want to copy and use
them in another scene. Before you can do that, you need
to convert the tween to a frame-by-frame animation. What
you’re basically doing is changing every frame in your tween
to a keyframe that contains a copy of the tweened object with
all the adjusted position, scale, rotation, and color properties.

Keep in mind, though, that doing so substantially increases the
size of your Flash animation.
Right-click the tween span you want to convert. Choose “Convert to Frame by Frame Animation” from the shortcut menu.
The blue tween highlight disappears from the timeline and
is replaced with keyframes lined up like dominoes, as shown
in Figure 8-11. These are standard keyframes, mind you, not
property keyframes.

Start by Ctrl-clicking (⌘-clicking) the property keyframe you want to copy to select
a single frame. Right-click that frame, and then choose Copy Properties from the
shortcut menu. Head over to the destination frame where you want to paste the
310

Flash CS6: The Missing Manual

www.it-ebooks.info

properties and select that single frame using a Ctrl-click (⌘-click). Then, right-click
that selected frame; you can then choose Paste Properties to paste in all the properties, or Paste Properties Special, where you can specify which properties to paste.

A Tour of
the Motion
Editor

Figure 8-11

Standard
Motion
layer
tween span

Tween convert to
frame-by-frame

When you convert a tween to
frame-by-frame animation,
each and every frame holds a
standard keyframe. Here the
“oriented” layer has been
converted to a frame-byframe animation.

A Tour of the Motion Editor
The Motion Editor is like a powerful microscope that lets you examine a motion
tween’s innards. Combining the features of the timeline and the Properties panel,
the Motion Editor focuses on a single tween span, showing you its workings at a
seemingly molecular level. Not only that, but the Motion Editor also gives you the
power to make a change to any tweenable property at any point in time. With all
this firepower, you can create very complex tweens and control them with better
precision than ever before.
To open the Motion Editor, go to Window→Motion Editor. The Motion Editor won’t
show its stuff unless you select either a tweened object on the stage or a tween span
in the timeline. (If you want to experiment with an existing tween, you can download
08-4_Motion_Editor.fla from the Missing CD page at www.missingmanuals.com/
cds/flashcs6mm.) At first glance, the Motion Editor may look a little intimidating,
with lots of properties, numbers, widgets, and graph lines. Don’t be put off—it’s not
tough to master these elements and bend those motion tweens to your iron will. If
you’ve used Flash’s custom easing feature before (it’s been around since Flash 8),
you have a head start.
Tip Using the Essentials workspace, which this book uses throughout, the Motion Editor appears as a tab
below the stage, next to the timeline (Figure 8-12). If you have room, though, you may want to drag the tab to a
new location—like a second monitor. Giving the Motion Editor more room makes your work easier and faster.

There’s a lot going on with the Motion Editor, so it’s best to introduce yourself a
section at a time. At the very top, there are labels for each of its sections:
• Below the Property label, you see the same properties that you’ve used in the
Properties panel, like the X/Y position coordinates, the W/H (width and height)
properties, and so on.
Chapter 8: Advanced Tweens with the motion Editor

www.it-ebooks.info

311

A Tour of
the Motion
Editor

• The Value settings should look familiar by now. For each property, you can click
and type a new value, or you can drag to scrub in a value.
• The Ease tools (covered on page 320) let you speed up or slow down specific
portions of your tweens. For example, you could make a moving car start off
slowly and then gain speed.
• The triangle buttons under Keyframe give you a way to jump forward and
backward among the property keyframes. You use the diamond button to add
and delete property keyframes.
• The Graph gives you a visual representation of the way properties change over
time, showing the property values as they increase and decrease. The vertical
axis displays property values, while the horizontal axis measures time—just the
way things are in the main timeline. The squares on the graph represent property keyframes. The graph isn’t just some way to show you the geeky innards
of your tween; it’s a design tool. You can drag the graph elements around to
make changes in your animation. (More on that on page 320.)

Property

Value

Ease

Keyframe

Graph

Figure 8-12

At first, the Motion Editor
may seem more like a
tool for math geeks than
one for graphic artists.
Give it a chance, though.
Master a couple of Motion
Editor principles, and
you’ll enjoy the control
and precision it provides.

Workflow for Common Tweens
You won’t see anything at all in the Motion Editor unless you select a tween span in
the timeline or a tweened object on the stage. Most of the time, you want to set up
the basic framework of your tween in the main timeline before you work with the Motion Editor. That way, you can establish the timing for the major events in the tween,
using some of the steps described on page 307. Using a famous cartoon example,
you might have a coyote chase a roadrunner run off a cliff at Frame 6; then up to
Frame 12, the coyote hangs in midair, feet churning; from Frame 12 to Frame 18, the

312

Flash CS6: The Missing Manual

www.it-ebooks.info

coyote drops to the desert floor; and so on. After you have the basic timing for these
major positions worked out, you can turn to the Motion Editor to perfect the details.
The Motion Editor breaks down all the tweenable properties into five categories:

A Tour of
the Motion
Editor

• “Basic motion” is where you change the X, Y, and Z properties, positioning
tweened objects in two and three dimensions. (You can move only movie clips
and text fields in three dimensions, so those are the only types of objects to
which you can apply the Z property.)
• Under Transformation, you tween properties like Scale X (width), Scale Y
(height), Skew X, and Skew Y.
• Color Effect includes properties for Alpha, Brightness, Tint, and Advanced Color
(a combination of color effects).
• Use the Filters panel to apply filters like Glow, Blur, and Drop Shadow.
• Eases give you the ability to speed up or slow down property changes at specific
points in the timeline. The details are on page 320.
Within each of those categories you can do the following:
• Add and remove property keyframes (page 313).
• Move property keyframes to change values and timing (page 314).
• Fine-tune and smooth property changes using Bezier curves (page 315).
• Add and remove color effects and filters (page 315).
• Apply easing to change the timing of property changes (page 320).
Tip

Keep in mind that a visual effect, like the aforementioned coyote, can be composed of several different tweened objects. The spinning legs can be a movie clip that stretches as gravity takes effect—the legs keep
spinning but become elongated. Facial features like the mouth and eyes can be separate tweened objects on
different layers, giving you the opportunity to create lots of different facial expressions.

Adding and Removing Property Keyframes
In the Motion Editor, every property has its own graph line, as shown in Figure 8-13.
Move from left to right along that graph line, and you’re marking the passage of
time. Like the main timeline, it’s measured in frames on a scale at the top of the Motion Editor. The vertical axis of the graph tracks changes in value for that particular
property. The units used differ according to the property. For example, if it’s the
Y coordinate in the “Basic motion” panel, the value relates to the vertical position
of an object on the stage, and it’s measured in pixels. If it’s the alpha value in the
Color Effect group, it’s a percentage indicating the transparency (0%) or opacity
(100%) of an object.

Chapter 8: Advanced Tweens with the motion Editor

www.it-ebooks.info

313

A Tour of
the Motion
Editor

You apply tweens to values by placing property keyframes along the timeline;
Flash calculates the changes for all the values between two property keyframes
(­Figure 8-13). To add a property keyframe, move the playhead to the frame where
you want to record a change in value, and then click the diamond-shaped button
under Keyframe. This button is a toggle: If there aren’t any keyframes at that position,
Flash creates one. If there’s a keyframe at that position, Flash removes it.

Figure 8-13

Each property has a graph
where the horizontal axis
marks time in frames and
the vertical axis shows
the change in property
values.

Add Property
Keyframe

Property
value

Time

There are other ways to add property keyframes to a graph line. One of the quickest
is simply to right-click at a point in the graph line and then choose Add Keyframe
from the shortcut menu. Another way to add keyframes is to drag the playhead to
a specific frame, and then make a change in a property’s value. Flash automatically
creates the property keyframe.
The Motion Editor uses a solid line in the graph to indicate values in between keyframes—values that are changing. A dashed line indicates that the values of the
property aren’t changing—static, in Flash-speak.

Moving Property Keyframes
When you work with tweens, timing is everything. Whether you’re controlling the
movement of a jumping cheetah or changing the color of a building as it explodes,
you control the timing by moving property keyframes left and right along the timeline.
You reposition property keyframes in the Motion Editor’s graph by dragging them
with the Selection or Subselection tools. By moving the property keyframe up and
down, you increase or decrease the value of that property. If you drag a property

314

Flash CS6: The Missing Manual

www.it-ebooks.info

keyframe left or right along the graph’s timeline, you change the frame (time) at
which the property change happens.

A Tour of
the Motion
Editor

There’s another way you can move property keyframes along the timeline—with roving keyframes. Using this method, Flash keeps track of the relationship of keyframes
even as you make changes to the timeline. See the box on page 324 for the details.
Tip

Sometimes when you move a property keyframe, the entire graph line moves. That’s because you’ve
somehow selected more than one property keyframe. To deselect all the property keyframes, just click an empty
spot on the graph, and then try your move again.

Fine-Tuning Property Changes
In the Motion Editor, the basic motion properties X, Y, and Z go everywhere hand in
hand. Whenever you change one of the properties, the Motion Editor registers the
values for the other two. It’s Flash’s way of keeping tweened objects pinned down
in time and space. The basic motion properties are also the only properties that you
can’t fine-tune using Bezier line tools.
For any properties other than the basic motion properties, you can use Bezier controls
in the Motion Editor graph to create smooth changes that increase or decrease over
time. It’s just like editing a line that you draw on the stage. The property keyframes
can be either sharp-angled corner points where a value changes abruptly, or they
can be gradual curves. Initially, property keyframes are corner points. Right-click
a property keyframe to change a corner point to a curve, as shown in Figure 8-14.
If there are property keyframes on both sides of the one you click, you can choose
whether to add a single Bezier control handle (“Smooth left” or “Smooth right”)
or add two handles (“Smooth point”). If you right-click a property keyframe that’s
already a curve, you can turn it back into a corner point.

Figure 8-14

Right-click a property keyframe to change a corner point to a curve. The menu
shows different options depending on the position of the property keyframe.

Adding and Removing Color Effects
Your tween span has no color effects until you apply them (in the Properties panel
or the Motion Editor). To add a color effect using the Motion Editor, position the
playhead on the frame where you want to make a change, click the + button, and

Chapter 8: Advanced Tweens with the motion Editor

www.it-ebooks.info

315

A Tour of
the Motion
Editor

then choose the effect you want to add: Alpha, Brightness, Tint, or Advanced Color.
Once you choose an effect, its subpanel appears under Color Effect. Click the Value
setting to the right of the property name, and then type a new value.
Note Alpha sets the transparency for an object. If you want to apply a combination of alpha, brightness,
and tint, use the Advanced Color option.

To remove a color effect, click the – button, and then choose the name of the effect
from the pop-up menu. Flash removes the property changes from the tweened
object, and the effect’s subpanel goes away.

Using Filters in Tweens
Flash includes a handful of standard filters that you apply to movie clips and text
fields, and when you apply filters using the Motion Editor, you can change the values
of these filters over time. Want a drop shadow to change its angle as the sun moves
across your animation? You can do it with the Motion Editor (Figure 8-15).

Figure 8-15

Filters sometimes have
multiple properties. The
Drop Shadow filter shown
here has properties for
the shadow’s blurriness,
strength, quality, and
angle. Not shown, there
are even more properties
for the color and type of
shadow created.

Don’t be afraid to experiment with the filter effects. A single filter can create dramatically different effects, as shown in Figure 8-16.

Customizing Your Motion Editor View
Working with Flash, you fight a constant battle to get a good view of the stage, the
timeline, and all the panels and windows. It’s a balancing act where you’re constantly
expanding this and shrinking that. Adding the Motion Editor to the mix just makes the
problem tougher. It’s so packed with properties, graphs, and widgets that it requires
tweaking to achieve a workspace that works for you. If you plan to do a lot of work
in Flash and you don’t have a two-monitor system, think seriously about upgrading
to one. With two monitors, you can leave your Motion Editor open on one monitor
and keep your stage and main timeline open on another. To move the Motion Editor,
or remove it from a docked position, drag it by the tab with its name on it.

316

Flash CS6: The Missing Manual

www.it-ebooks.info

Initially, Flash gives you a fairly skimpy view of each property. Some of the panels
are closed, depending on the kinds of changes in your tween. To open and close
panels, click the triangle toggle buttons, as shown in Figure 8-17.

A Tour of
the Motion
Editor

Figure 8-16

You don’t have to settle for the first effect a filter gives you. The Drop Shadow filter,
for example, gives some remarkably different effects.
Top: When you first apply a drop shadow, it looks like this.
Middle: Adjusting the inner shadow gives the car a more 3-D look.
Bottom: The Knockout property makes the car look like a paper cutout.

Open/Close property panel

Figure 8-17

Don’t be afraid to make
adjustments to the
Motion Editor to improve
your workspace. In
the bottom-left corner
are three settings that
change the size of all the
graphs, the expanded
graph, and the number
of frames shown in the
timeline.

Expanded graph

Graph size

Viewable frames

Chapter 8: Advanced Tweens with the motion Editor

www.it-ebooks.info

317

A Tour of
the Motion
Editor

Getting the best view property graphs
Unlike some windows, you can’t change the amount of horizontal space occupied
by labeled sections like Property, Value, and Ease, but you can change the vertical
space in a number of ways. That vertical space is what’s important when you’re trying
to get a good view of the property graphs while you perfect, for example, a custom
ease (page 323). You can expand a single property graph by clicking anywhere in
the panel to the left of the graph. That graph remains expanded until you click the
panel again. Two settings in the lower-left corner of the Motion Editor control the
height of graphs. A third setting controls the number of frames displayed in the
Motion Editor timeline:

• Graph Size sets the height of all the graphs.
• Expanded Graph Size sets the height of the one expanded graph.
• Viewable Frames sets the number of frames showing in the graph timeline.

Changing Transparency with the Motion
Editor
Now it’s time to turn some of that Motion Editor theory to practice. By now, you
know how to tween dimensions (page 107) and position (page 103); now you’ll learn
how to change the transparency of a tweened symbol. As shown in Figure 8-18, the
Missing CD file 08-5_Tween_Alpha.fla shows an animated sign for a car company,
but you can use your own symbol if you prefer. In the sample file, the sign spins and
bounces as it gets bigger, giving the impression that it’s coming at the audience.
In the following steps, you adjust the transparency so that the sign goes from an
alpha value of 20 percent to a value of 100 percent, making it completely opaque
at the end of the motion.
Note Techies often refer to transparency as the alpha channel. Typically, computer video has RGB channels
for red, green, and blue. To store information about the opacity and transparency of an image, programmers
needed another channel, and they dubbed it the alpha channel, because they needed another letter and why
not start at the beginning of the alphabet?

1. Drag the playhead to Frame 1, and then click the layer to make sure that the
motion tween is selected.
Your sign is back to its starting position on the motion path. When you select
the motion tween, the words “Motion Tween” appear at the top of the Properties panel.
2. Click the Motion Editor tab next to the Timeline tab.
If you don’t see the Motion Editor tab, choose Window→Motion Editor to make
it visible, as shown in Figure 8-19.

318

Flash CS6: The Missing Manual

www.it-ebooks.info

3. In the Motion Editor window, find the Color Effect section, and then click
the + button to add an alpha color effect to the tween.

A Tour of
the Motion
Editor

If some of the panels are expanded, you may not see the Color Effect panel right
away. Either close the open panels by clicking their expand/collapse triangles,
or use the scroll bar to find the Color Effect panel. When you click the + button,
a shortcut menu gives you four color-related choices: Alpha, Brightness, Tint,
and Advanced Color. After you choose Alpha, a new subpanel opens, showing
an alpha amount as a percentage.

Motion editor

Motion path

Tweened symbol

Figure 8-18

The Motion Editor is made up
of numerous subpanels. Each
subpanel gives you access
to tweenable properties.
Here the Rotation Z property
is set to 1296. You can click
and type a value or drag to
“scrub in” a value.

Basic motion
subpanel

Rotation Z

4. Next to “Alpha amount,” change the value to 20%.
You can click the number and type 20, or you can scrub the value until 20 appears
in the box. Notice how the graph to the right changes as you change the value.

Chapter 8: Advanced Tweens with the motion Editor

www.it-ebooks.info

319

Easing
Tweens

5. Click the Timeline tab, and then drag the playhead to the last frame.
By moving the playhead to a new location, you can enter a different alpha value
to create the tween.

Motion editor tab

Figure 8-19

The Motion Editor is Command Central for tweaking
every little detail in your
motion tween. It’s made up
of several panels that give
you access to properties,
effects, and filters. Click the
triangles to expand and collapse the different panels.
Click the + and – buttons
to add and remove effects
and filters.

Click triangle to
expand/collapse

Alpha amount value

6. Click the Motion Editor tab, and then change the Alpha amount to 100%.
Setting the Alpha amount to 100% makes the sign symbol completely opaque.
7. Test your animation in Flash or using the Flash Player.
At this point, the animation looks pretty much the same whether you run it
inside Flash (Enter) or you compile the animation and test it in the Flash Player
(Ctrl+Enter or ⌘-Return). Position, size, and alpha properties are all visible inside
Flash, but that’s not always the case with some filters, components, timeline
effects, and ActionScript code.

Easing Tweens
When Flash creates a tween, it doesn’t use an artist’s eye; it uses an accountant’s
calculator. If a cartoon roadrunner sprints across the desert, it moves exactly the
same distance in each frame, even though we all know that cartoon roadrunners
start slowly, build up speed, and then slow as they skid to a stop, usually with a little
thwang motion at the end. It’s up to you to add realistic (or, if you prefer, cartoonistic)
motion to your animations, and fortunately, the Ease tools are there to help. When
you apply an ease to one of the properties in your tween span, Flash recalculates
how much of a change takes place in each frame. Suppose you want an object, like
a moving car, to roll gradually to a stop. You can apply an ease that makes the car

320

Flash CS6: The Missing Manual

www.it-ebooks.info

move farther in the first few frames, and then shorter distances in the final frames
until it stops, as shown in Figure 8-20.

Easing
Tweens

Figure 8-20

These two tweens are onion-skinned to
show the car in several different frames.
The tween on the top has no ease. The
Simple (Fastest) ease was applied to the
tween on the bottom.

Applying an Ease Preset
Flash comes with several ease presets, as shown in the menu in Figure 8-21. Ease
presets aren’t limited to changing the position of an object; you can apply them
individually to specific properties. For example, if you have a lamp shining a yellow
light, you can make that light blink on and off by applying a Square Wave ease to the
alpha value (transparency) of the light. (A square wave is binary; it’s either on or off.)

Figure 8-21

Flash gives you ease presets that you apply in the Motion Editor’s
Eases panel.

There are a couple of steps for applying an ease preset. First, you need to add the
ease preset to the Motion Editor’s Eases panel. Then you apply the ease to one or
more properties, using the drop-down menus that appear in the Ease section of
each property. Here are the step-by-step details for adding the Square Wave ease to
make a light blink. You can create your own lamp and light, or you can use the simple
desk lamp provided in 08-6_Ease_Tween.fla found at www.missingmanuals.com/
cds/flashcs6mm. In either case, make sure the light emanating from your lamp is a
movie clip on its own layer, and give yourself about 48 frames for the tween span.

Chapter 8: Advanced Tweens with the motion Editor

www.it-ebooks.info

321

Easing
Tweens

1. With the light’s tween selected, as shown in Figure 8-22, open the Motion
Editor (Window→Motion Editor).
The Motion Editor panel opens, with the Eases panel at the bottom.

Figure 8-22

Apply the Square Wave
ease to the alpha value
(transparency) of an object,
and you can make it
repeatedly disappear and
reappear. The technique
is used here to make this
lamp blink.

2. In the Eases panel, click the + button to add a new tween, and then choose
Square Wave from the shortcut menu.
When you click the + button, you see the Eases menu (Figure 8-21). After you
select the Square Wave ease, a subpanel for Square Wave appears under the
Eases panel (with any other eases belonging to the tween span).
3. In the Square Wave property subpanel, set the value to 6.
Eases have a related value, but the function of the value may be different depending on the ease. The Square Wave’s value controls the number of changes.
In this case, it controls the number of times your lamp blinks on or off.
4. In the Color Effect panel, click the + button, and then choose Alpha from
the pop-up menu.
An Alpha subpanel appears under the Color Effect panel.
5. In the Motion Editor’s timeline, move the playhead to the last frame of the
tween, and then set the alpha value to 0.
Without any easing, this causes the light to gradually dim from 100% to 0%.

322

Flash CS6: The Missing Manual

www.it-ebooks.info

6. In the Color Effect→Alpha panel, in the Ease section, choose Square Wave,
as shown in Figure 8-23.

Easing
Tweens

The Square Wave ease is applied to all the Color Effect properties. You can see
that the Alpha property subpanel is also set to Square Wave. You can apply an
ease in some of the category panels, like the Transformation category, where
it applies to all the properties in that category, or you can apply it individually
to each property.

Eases panel

Eases drop-down menu

Figure 8-23

Once you’ve added an ease to the Eases panel,
you can apply it to any property, using the Ease
drop-down menu.

7. Test your animation.
The light flashes from on to off and then back again. It changes six times, matching the value in the Square Wave subpanel.
After you’ve applied an ease to a property, the graph shows two lines, as shown in
Figure 8-24. The solid line shows any property changes that were originally in that
tween span. The dotted line shows the property changes after you apply the tween.

Original tween value

Figure 8-24

The solid line in this
graph shows the original
change in value. The dotted line shows the change
in value after you’ve
applied an ease.
Value applied by square wave

Creating a Custom Ease Preset
You can create your own ease presets and store them in your Flash file. Once you’ve
created a preset, you apply it just as you would any other ease preset. Flash names
your preset for you, so you’ll have to remember what your 3-Custom and 5-Custom
ease presets do. Flash saves the presets in your Flash file, so you can use them with

Chapter 8: Advanced Tweens with the motion Editor

www.it-ebooks.info

323

Easing
Tweens

any property and they’ll be there the next time you open the file. However, you
can’t use your custom ease in other Flash documents; they’re available only in the
document in which you created them.
To create a custom ease, click the + button in the Eases panel, and instead of choosing one of Adobe’s predesigned ease presets, choose Custom at the bottom of the
menu. A custom preset appears in the panel with any other eases you may be using
in your document. There’s a line in the graph ready for you to edit (Figure 8-25).
You use Flash’s standard line and Bezier tools to change the shape of the line, and
subsequently change the values of any property, once the ease is applied. Page 71
has some tips on editing Bezier curves that were created with the Pen tool. You can
use those same techniques with Motion Editor graphs.

Figure 8-25

Use Flash’s Bezier tools to
modify the graph line in
a custom ease preset. It
may take some trial and
error to become proficient
in designing custom ease
presets.

Frequently Asked Question

The Keyframe Rovers
What’s a roving keyframe…and why do I care?
Roving keyframes are a concept that migrated from Adobe’s
After Effects program to Flash. Roving keyframes apply only
to properties in the “Basic motion” category (X, Y, and Z).
You can think of a roving keyframe as a keyframe that’s not
tied down to a specific frame. You’re letting Flash move that
keyframe horizontally along the timeline so the speed of a
motion remains consistent throughout the tween.
As for the second part of your question, roving keyframes are
especially helpful if you’ve messed with the motion path on the
stage by dragging the tweened object to different locations.

324

Often, this type of editing changes the path segment in a way
that affects its timing.
You can change an entire motion path to roving keyframes by
right-clicking the motion path on the stage, or right-clicking
the tween span in the timeline and then choosing Motion
Path→“Switch keyframes to roving” in the shortcut menu.
Using the same technique, you can remove all the roving keyframes by choosing Motion Path→“Switch keyframes to nonroving.” If you want to convert a single keyframe, select the
single frame in the timeline with a right-click (Control-click),
and then choose the option from the Motion Path submenu.

Flash CS6: The Missing Manual

www.it-ebooks.info

chapter

Realistic Animation
with IK Bones

9

E

verywhere you look in the real world, you see things that are linked together: a
dog and its tail, a ribbon and a bow, a train engine and its caboose. And then,
of course, there’s that song about the thigh bone connected to the hip bone.
When objects are connected, they move differently than they do in isolation, since
the movement of each linked part influences the movement of the others. Flash
gives you a special tool—the Bone tool—that lets you link these kinds of objects,
so when you move the hip bone, the thigh bone automatically moves in a realistic
manner. The animation tool you use is appropriately called a bone; specifically an
IK bone. IK stands for inverse kinematics, which is the type of animation algorithm
at work here, but you don’t have to remember that. You can just call them “bones,”
and know that you’re using the same technology that computer game developers
use to make onscreen characters move realistically.
In this chapter, you’ll learn about the two different ways you can use Flash’s IK Bones
tool—with symbols, and with shapes. When you use bones with symbols, you link one
symbol to another. For example, suppose you have a train in your animation. Each
car is a separate, carefully drawn symbol. Using bones, you can link the engine to
the coal car, the coal car to the boxcar, and so on, all the way down to the caboose.
The other way you can use bones is with shapes. In the past, if you wanted to draw
a snake, you’d have a hard time getting that snake to squirm and slither properly.
You’d have had to painstakingly reposition, distort, or even redraw several versions
of the snake to make a good animation. Now you can draw a snake, place bones
inside that single shape, and then bend the shape into realistic poses, which makes
it easy to reposition or pose your snake for some realistic slithering and sliding.

325

www.it-ebooks.info

Linking
Symbols with
Bones

When you use bones in your animation, you spend a lot of time creating “poses”
where each element is in just the right position. Flash Professional CS6 has tools
to make the posing process go smoothly. You can use constraints and pins, for example. If those options sound restrictive…well, they are. The purpose of these tools
is to keep your animated elements from flopping around, making it much easier to
create the proper pose.
Note When you use IK Bones, make sure you start off with an ActionScript 3.0–compatible document. For
example, after you go to File→New, choose ActionScript 3.0, Air, “AIR for Android,” or “AIR for iOS.” If you choose
ActionScript 2.0, you get no bones.

Linking Symbols with Bones
What better way to show how IK bones link one symbol to another than with a chain
made up of separate links? Just to show that all the linked symbols don’t have to be
identical, you can throw in a padlock at the end. If you want to get a feeling for the
end result, then open the file 09-2_Simple_Bones_Done.fla. If you’re ready to start
earning your bones, then open the file 09-1_Simple_Bones.fla. You’ll find both files
on the Missing CD page at www.missingmanuals.com/cds/flashcs6mm.
1. Open the Flash document 09-1_Simple_Bones.fla .
There are six hollow ellipses on the stage that look like the links in a chain. In the
Library, there are two movie clips: link and padlock. The links on the stage are
different colors. Click a link to select it, and then in the Properties panel under
Color Effect, you see that it’s colored using the Tint color effect.
2. Drag the padlock symbol from the Library and position it on the stage so the
lock’s shackle overlaps the rightmost link in the chain, as shown in Figure 9-1.
Before you start linking symbols together, you need to make sure you have
every symbol on the stage. You can’t add new symbols to the bones layer after
you’ve created a bone with the IK Bone tool.
3. Select View→Snapping→“Snap to Objects” to turn “Snap to Objects” off.
It’s easier to position bones precisely in objects if you turn off the cursor’s
snapping action.
4. Click the Bone tool (or press M, the hot key for the Bone tool).
The Bone tool is in the middle of the Tools palette, and there are two tools under the Bone icon. The one on the top is the Bone tool; the one on the bottom
is the Bind tool. The cursor for the Bone tool is a bone and a plus sign. When
the Bone tool is over an object to which you can attach a bone, the solid black
bone turns into a hollow bone.

326

flash CS6: The Missing Manual

www.it-ebooks.info

5. Click the left side of the leftmost link and, while holding the button down,
drag to the right until you reach the left side of the next link, as shown in
Figure 9-2.

Linking
Symbols with
Bones

You may want to zoom in so that you can carefully place each bone. You drag
to create a bone. The first place you click creates the head of the bone; when
you release the mouse button, you create the tail of the bone. The head, indicated by the large circle, becomes the registration point for the bone, and the
symbol to which it’s attached. That means that the bone symbol pivots around
the head of the bone. When you create a series of bones, known in Flash-speak
as an armature, the first bone is known as the root bone. The head of the root
bone takes on special importance, since it’s the registration point for the entire
armature or family of symbols.

Figure 9-1

With “Snap to Objects” turned off, it’s easier
to ­position bones and their registration points
accurately.

Figure 9-2

Each bone has a head (your first click) and a tail
(where you release the mouse button).

Head

Tail

Chapter 9: Realistic Animation with IK Bones

www.it-ebooks.info

327

Linking
Symbols with
Bones

Root bone

If you glance at the timeline, you notice that adding the first bone creates a new
armature layer (also called pose layer) in the timeline (Figure 9-3). Similar to a
motion tween layer, the pose layer has special properties.

Cursor shows no bone symbol

Figure 9-3

When you create a bone, Flash automatically creates an “armature” or pose layer. The pose layer is similar to a motion tween
layer, but with a couple of twists to make it work with bones.

6. From the tail of the first bone, drag to create another bone that connects
to the next link in the chain.
You can attach bones to either the head or the tail of the first bone. In this
case, you attach a second bone to the tail. As you drag, notice that the cursor
shows a “no” symbol (a circle with a line through it) when you’re over the empty
stage or some other object where it’s not possible to link your bone. It turns
back to a + when the cursor is over a suitable target. In this case, that target
is another symbol.
When you link to a new symbol, Flash automatically repositions the transformation point to the point where the bones connect. The transformation point is
the point around which the symbol rotates.
7. Repeat this process for the remainder of the chain links until you finally
connect the last bone to the padlock’s shackle.
In this animation, all the links in the chain are instances of the same symbol, but
often you’ll use bones with lots of different symbols. For example, if you were
applying bones to the symbols that make up a human body, there’d be separate symbols for the head, neck, torso, parts of the arms and hands, and so on.
Tip If necessary, you can switch to another tool, like the Hand tool, to get a better view of your work. You can
then go back to the Bone tool and add more bones. The one thing you can’t do is add new symbols or drawings
to the pose layer.

328

flash CS6: The Missing Manual

www.it-ebooks.info

8. In the pose layer, click Frame 30, and then press F5 to create a frame.
The pose layer extends to become 30 frames long. You can make the pose layer
any length you wish, and you can add and remove frames from the pose layer
as you would any other layer.

Linking
Symbols with
Bones

9. With the Selection tool, click Frame 5, and then drag the padlock to a new
position (Figure 9-4).
The pose layer is similar to a motion tween layer (page 103). When you reposition the padlock in Frame 5, Flash creates a tween to animate the motion from
Frame 1 to Frame 5. The frame where you create a new pose is marked with a
small diamond, and it’s called a pose frame.
The bones connecting all the links in the chain and the padlock constrain the
movement of each symbol, giving the entire family of symbols a connected
sense of motion. Not only that, but it’s also easier for you, the artist, to position
the symbols, because they really are connected to one another.

Figure 9-4

Pose the chain by
dragging the lock or by
dragging individual links.
When you drag a link, the
links up to the top rotate
around their transformation points; the links
down to the lock don’t
rotate.

10. Click Frame 10 and reposition one of the middle links in the chain.
Bones have a parent-child relationship. When you move one of the middle links,
the motion is different, in that the links on the tail end of the chain move as one

Chapter 9: Realistic Animation with IK Bones

www.it-ebooks.info

329

Linking
Symbols with
Bones

group. With a little practice, you’ll learn to use the parent-child relationship of
the bones to quickly pose linked symbols.
11. Every five frames or so, continue to pose the chain and padlock.
Experiment to get a feeling for the motion. You can create a new pose by dragging either a bone or the symbol attached to the bone. You can use either the
Selection tool or the Bone tool to create a pose. If you want a quick preview,
press Enter to see the animation play. You can make it swing back and forth,
like a chain attached to a wall or a door, or you can make it move like a snake
charmer’s cobra. Try some different techniques and positions.
12. Press Ctrl+Enter (⌘-Return) to test the animation.
The chain links and the padlock move. The head of the root bone acts as an
anchor. The entire armature can pivot around the head, but it remains fixed at
that point.

Changing the Pose Layer
Creating just the right motion is more art than science. Think about how many movement details there are in a running cheetah, or a swinging pendulum, or a slithering
snake. Chances are, you’ll fiddle with the pose layer after you finish using the Bone
tool. For example, you may want to slow down or speed up the action. You may
want to hold the armature (that is, all the linked bones and their related symbols) in
a certain position for a few beats, and then continue the motion. You may want to
smooth the motion or make it more erratic. You can make those changes by changing the relationship of the pose frames in the pose layer. For example, adding or
removing frames changes the timing of the animation. Copying and pasting frames
can freeze the action for an interval.
For most actions, you need to select specific frames in the pose layer before you
cut, copy, paste, and so on. In many respects, you manage the pose layer and its
frames the same way you manage other layers. Its behavior is similar to that of
motion tween layers. The pose layer is colored green so you can distinguish it from
normal layers and tween layers, which are shaded with other colors. There’s also a
little figure of a person to the left of the layer name. Each frame with a small diamond
is a pose frame. These frames are similar to keyframes in a normal standard layer;
they mark a point in the timeline where you’ve defined exactly how the animated
object is positioned. Flash is responsible for positioning (tweening) the other frames.
Here’s the lowdown on some common operations you can perform in the pose layer:
• Speed up or slow down animation. Move the cursor to the end of the pose layer.
When the cursor is over the right edge, the cursor changes to show arrowheads
pointing left and right. Drag to extend or shorten the pose layer. Flash inserts or
removes frames, making the playing time longer or shorter. As much as possible,
Flash keeps the pose frames in the same position relative to one another. Of
course, if you really shrink the layer, all the pose frames get bunched together.

330

flash CS6: The Missing Manual

www.it-ebooks.info

• Select frames. Click to select a single frame in the pose layer. Double-click to
select all the frames in the pose. Click and drag to select a sequence of frames.
Selected frames show a different highlight color. Once the frames are selected,
you can copy, paste, or delete them.

Linking
Symbols with
Bones

• Remove frames. After you’ve selected the frames you want to remove, rightclick (or Control-click) the selected frames. A shortcut menu appears, displaying
options related to the pose layer, as shown in Figure 9-5. Click Remove Frames
to remove all the selected frames. (This action removes the standard frames in
the pose layer as well as the pose frames.)

Figure 9-5

Right-click the Armature layer, and you see this
context menu. You can change the timing in a pose
layer by inserting or removing frames.

Selected frames

Remove frames

• Insert a pose. The pose layer has two types of frames. The pose frames, which
display a small diamond, are like keyframes for the armature, where you position every part of the armature just the way you want. The other frames are
tweened frames, where Flash determines the position of the armature. You can
turn a tweened frame into a pose frame in a number of ways. First, move the
playhead to the frame you want to change, and then press F6. Flash turns the
frame into a pose frame. You can also right-click the frame in the pose layer and
then choose Insert Pose from the shortcut menu. Inserting a pose doesn’t add
any frames to the timeline; it simply converts the frame at the playhead to a pose.
• Clear a pose. If you want to clear a specific pose frame in your timeline but
leave the rest of it intact, click the frame you want to change. You don’t need
to Ctrl-click (or ⌘-click) in this case. The playhead moves to the clicked frame.
Right-click (or Control-click), and then choose Clear Pose from the shortcut
menu. This action removes the pose but doesn’t remove the frame. The position
of the armature changes because it’s now controlled by the closest pose frames
before or after the displayed frame. If you want to clear several pose frames at
once, you can Ctrl-drag (⌘-drag) to select several frames, right-click, and then
choose Clear Pose to convert the pose frames to standard frames. Clearing a
pose doesn’t remove frames from the pose layer.
Chapter 9: Realistic Animation with IK Bones

www.it-ebooks.info

331

Linking
Symbols with
Bones

• Copy a pose. If you want your carefully positioned armature to remain in the
same position for a few frames, one way to do that is to copy the desired pose
and then paste it back into the pose layer. The frames in between two identical
pose frames will all be the same. To copy a pose, Ctrl-click (⌘-click) to select
a frame in the pose layer, right-click it, and then choose Copy Pose from the
shortcut menu.
• Cut a pose. Similar to copying a pose, except that it actually removes the pose
from the frame at the playhead. You can then paste it somewhere else (earlier
or later) in the pose layer. To cut a pose, Ctrl-click (⌘-click) to select a frame in
the pose layer, right-click it, and then choose Cut Pose from the shortcut menu.
• Paste a pose. When you copy or cut a pose, the next logical action is to paste
that pose into the pose layer on a different frame. Ctrl-click (⌘-click) to select
the frame where you want to place the pose. Then, right-click (Control-click)
and choose Paste Pose from the shortcut menu.

Frequently Asked Question

Combining Bones and Tweening
How do I tween color, dimensions, and other properties when
I use IK Bones?
There’s one important difference between a pose layer and a
motion tween layer: A pose layer tweens only the position of
the symbols or shapes; you can’t tween colors, dimensions,
or any of the other properties that you can change in a motion tween. If you want to change those properties, too, the
solution is to create your animation in the pose layer, and then
wrap the entire animation in a movie clip or graphic symbol
(Modify→“Convert to Symbol” or F8).

Once the bone’s animation is contained in a symbol, you can
add it to your main timeline as you would any symbol. Just
drag it onto the stage. At that point, you apply a motion tween
to the entire movie clip or graphic. This trick also lets you use
filters or blends on the animation.
So wrapping your pose layer in a movie clip or graphic symbol
gives you the best of both worlds: IK Bones’ help in creating an
animation and all the power of a motion tween to transform
your animated object.

Creating Branching Armatures
In the lock and chain example earlier in this chapter (page 326), the armature linked
symbols together in one long chain. Often, though, you want to create an armature
that branches out at different points. The classic example is a human body. The
less classic example, as in this case, is a robot. For this exercise, start with a new
copy of the file 09-3_Branch_Armature.fla from the Missing CD page at www.­
missingmanuals.com/cds/flashcs6mm.
In this example, you’ll operate on a robot with a somewhat human shape. As shown
in Figure 9-6, the armature for the robot isn’t quite complete.
1. Open the file 09-3_Branch_Armature.fla . If you don’t see the robot’s bones
(armature), use the Selection tool to click the robot’s chest.
When you click the robot with the Select, Subselect, or Bone tools, you see the
armature that holds it together.
332

flash CS6: The Missing Manual

www.it-ebooks.info

2. In the “right arm” layer, click the Show/Hide button (beneath the eye icon)
twice to hide and then unhide the layer.

Linking
Symbols with
Bones

All the pieces for the arm on the right are in a separate layer from the pose
layer and the armature. You can’t draw directly in a pose layer with an existing
armature, but you can add symbols from another layer to an existing armature,
which is what you’ll do in the next step.
3. With the bone tool, click the thick circle in the root bone, and then drag a
new branching bone to the right shoulder, as shown in Figure 9-6.
When you connect from the root bone to the upper arm (technically called the
humerus), the symbol is automatically moved from the “right arm” layer to the
pose layer, and the bone is connected.

Figure 9-6

The root bone (circled) goes from the upper torso to the neck. Branch bones are
already created to the left arm and down to the hips. Here a new branch is being
created to the right shoulder.

Root bone
Bone tool
Branch bones

4. Continue to create bones for the robot’s right arm and hand.
As each bone is added, the connected symbol is moved from the “right arm”
layer into the pose layer.
You can add bones that branch from the head or tail of any bone, and, as you see
in this example, you can create multiple branches from the same joint. So if you
want to create a spider, for example, you can create eight legs that all connect to
the same joint.
Note

One thing you can’t do is reconnect the tail of a bone to an existing bone. For example, you can’t
connect a bone from the hand to the hipbone.

Controlling the Degree of Rotation
Bodies, even robot bodies, have their limits. You don’t want your robot flapping
around like a rag doll. In terms of IK Bones, that means you don’t want every bone in
the robot armature to have full movement to rotate 360 degrees. Constraining rotation is one of the ways you can create realistic movement when you’re using bones.
Once you put constraints on rotation, it’s easier for you to set up pose frames, too.

Chapter 9: Realistic Animation with IK Bones

www.it-ebooks.info

333

Linking
Symbols with
Bones

Also, by turning off “Joint: Rotation,” you can prevent bones from pivoting around
specific joints. If you want to provide a certain degree of motion around a point,
you leave the “Joint: Rotation” turned on, but constrain the motion by providing a
minimum and maximum number of degrees for rotation.
Tip When you work with more complex armatures with lots of branching bones, it’s sometimes hard to
control all the flopping parts. When you’re just getting started, it’s helpful to save (File→Save As) multiple copies of your file with different names, like robot_arms_down.fla or robot_running.fla. Save a few versions where
you’re happy with the poses. Then if things get out of hand as you’re working on your file, you have a saved file
as a backup.

In the next few steps, you’ll see how to prevent rotation and how to constrain rotation:
1. In the 09-3_Branch_Armature.fla from the previous section, click the bone
you created in step 3 on page 333.
When you select the bone that connects the root bone to the top of the right
arm, the Properties panel shows settings specific to that bone. There are four
subpanels: Location, “Joint: Rotation,” “Joint: X Translation,” and “Joint: Y
Translation.”
2. In Properties→“Joint: Rotation,” click to turn off the Enable checkbox.
Once you turn off the Enable checkbox for “Joint: Rotation,” the armature won’t
pivot around that joint. You want the robot’s arms to pivot around a joint near
the shoulder, not in the center of the torso.
3. With the bone still selected, click the Child button at the top of the Properties panel (shown in Figure 9-7), to select the bone that connects to the
right forearm.
The humerus bone is selected, and the Properties panel shows the related
settings.

Selected bone

Child bone

Child button

Figure 9-7

You can use the four
buttons at the top of the
Properties panel to traverse
the bones in an armature.
From left to right, the buttons are Previous Sibling,
Next Sibling, Child, and
Parent.

334

flash CS6: The Missing Manual

www.it-ebooks.info

4. Drag the selected bone to examine its movement.
The horizontal bone from the torso to the top of the arm remains locked in
place, in effect creating a shoulder. The humerus pivots around the joint at the
top of the bone. It can pivot a full 360 degrees.

Linking
Symbols with
Bones

5. Under Properties→“Joint: Rotation,” click the Constrain button.
With a check in the Constrain checkbox, the Min and Max settings come to life.
6. Enter a value of –45 in the Min box and a value of 45 in the Max box.
Min and Max settings are displayed as degrees. You can click and type in a value,
or you can scrub in a value. Scrubbing is a good option, because Flash shows
the joint’s angle as you scrub, as shown in Figure 9-8. With the constraints, the
robot arm has a more appropriate range of movement. (Well, appropriate for
a robot, not what you’d want in a major league pitcher.)

Figure 9-8

As you type or scrub in a Min and Max “Joint: Rotation” value, Flash shows you the angle of rotation
superimposed over the joint.

Angle of Rotation Constrain

Min:

Max:

If you want to create a well-behaved robot, you can repeat these steps to turn off
or constrain the rotation in the other joints. Once you’ve done that, you can make
your robot dance a jig by creating different poses in the pose layer.

Moving Bones
No matter how talented or lucky you are, it’s unlikely you’re going to get your IK
Bones animations exactly right the first time you set them up. You can, and probably will, edit the pose layer (as shown on page 330), and edit the armature (as
described in this section).
Here’s a good example of a problem and solution continuing from the exercise begun
on page 326. If you drag the padlock down as far as it can reach, it ends up beyond
Chapter 9: Realistic Animation with IK Bones

www.it-ebooks.info

335

Linking
Symbols with
Bones

the bottom of the stage. The next few steps show how to move the entire chain and
padlock up higher in the animation.
Here are the steps to move the entire armature to a new location:
1. Open the Flash document 09-1_Simple_Bones.fla .
If you haven’t done the steps on page 326, do so now. Then continue here with
step 2.
2. Click the first frame in the pose layer.
The playhead moves to the first frame in the layer.
3. Select the root bone.
The root bone is the first bone you created, and in this case, you need to actually
select the bone; just selecting the symbol attached to the bone won’t do the trick.
A selected bone is highlighted in a different color. The color depends on your preference settings in Edit→Preferences→General (Flash→Preferences→General).
When you move the root bone to a new location, the other bones (sometimes
referred to as children or child bones) move with the root.
When you select any bone, the Properties panel displays settings related to the
bone. The subpanels include Location, “Joint: Rotation,” “Joint: X Translation,”
and “Joint: Y Translation” (Figure 9-9).

Figure 9-9

Traverse armature buttons
Name
Location

Joint Rotation

Joint: X Translation

Joint: Y Translation

336

flash CS6: The Missing Manual

www.it-ebooks.info

Select a bone, and you see these settings in the
Properties panel. Click the buttons at the top to
change the selection to a different bone. Use the
“Joint: Rotation” setting to let a bone pivot—or
restrict the way a bone pivots. Turn on the “Joint:
Translation” settings if you want to move a bone
on the stage.

4. In Properties→“Joint: Rotation,” click to turn off the Enable checkbox.
When you first create a root bone, “Joint: Rotation” is turned on and “Joint: X
Translation” and “Joint: Y Translation” are turned off. These initial settings keep
the entire armature rooted to one spot on the stage.

Linking
Symbols with
Bones

Turning off “Joint: Rotation” on this bone prevents the entire armature from
spinning around when all you want to do is move it.
5. In Properties→“Joint: X Translation,” turn on the Enable checkbox. Do the
same in Properties→”Joint: Y Translation.”
With “Joint: X Translation” and “Joint: Y Translation” turned on, you can move
the root bone and the entire armature along the X and Y axes.
6. Drag the root bone up to the top center of the stage.
The root bone and the armature move slowly as you drag them to a new location. There may be some rotation around the joints of some of the child bones
as you move the armature. You can prevent this movement by turning off “Joint:
Rotation.” Remove the checkmark from Properties→“Joint: Rotation”→Enable.
7. Turn Properties→“Joint: Rotation” back on. Turn both Properties→“Joint: X
Translation” and Properties→“Joint: Y Translation” back off.
Now that you’ve moved the armature, these changes reset the properties of
the root bone to their previous settings.
8. Drag the padlock and some of the links on the chain.
Notice that the armature’s movement and action hasn’t changed, just the
­location.
In these steps, you changed the location of the chain in Frame 1. If you move the
playhead along the timeline, you see that this move didn’t change the chain’s position
in the other pose frames. This setup probably isn’t what you want for this particular
animation, but it shows a point: One way to create movement about the stage when
you’re working with an armature is to move the root bone between poses. Another
way to animate movement is to wrap your armature inside a movie clip or graphic
symbol, and then use a motion tween to create movement around the stage.

Repositioning Symbol Instances
You don’t always want your symbols to move in lockstep. There are times when you
want some of the symbols to rotate on their own or even move away from the rest
of the armature. For example, suppose you have a clown cartoon character who
keeps losing his hat. The hat bounces around his head at different angles and perhaps even flies off, only to snap back into place. When you connect symbols to one
another using bones, you can reposition the symbols independently using the usual
transform tools. For example, you can “break” the chain in the previous example, as

Chapter 9: Realistic Animation with IK Bones

www.it-ebooks.info

337

Linking
Symbols with
Bones

shown in Figure 9-10. Select the Transform tool, and then rotate one of the links in
the middle of the chain. The link pivots around its transformation point. Using the
Transform tool to rotate an instance of a symbol doesn’t change the length of the
bones in the armature.

Figure 9-10

Top: To reposition a symbol relative to the bone armature, use the Transform tool.
Bottom: The link has pivoted around its transformation point, but it still moves with the rest of the
armature.

Changing the Length of a Bone
If you want to move the symbol, including its transformation point, you have to
change the length of the connected bones. That’s also a job for the Transform tool.
Select the Transform tool, and then move the cursor over the symbol that you want
to move. Drag the symbol to a new position. As an alternative, you can use the
Selection tool to move a symbol; just press Alt (Option) as you drag.
Flash doesn’t display the armature when you use the Transform tool. When you’re
done, select the symbol to see how the length of the bones have changed to accommodate the move, as shown in Figure 9-11.
Note

Test the file 09-2_Simple_Bones_Done.fla to see examples of the different bone techniques. Examine
the armature to see movement and joint constraints. The last few frames of the animation show bones that were
“lengthened,” which makes the chain links appear disconnected.

338

flash CS6: The Missing Manual

www.it-ebooks.info

Deleting Bones
Deleting bones from an armature is a pretty straightforward procedure. Just select
the bone, and then press Delete. The bone disappears, along with any child bones
connected to it. The symbols that were connected by the bone remain in the pose
layer, but they’re no longer connected to the armature, so they aren’t animated with
the other symbols.

Perfect
Posing with
Control
Handles

Figure 9-11

Top: Use the Transform tool to move an instance of a
symbol that’s part of an armature. When the cursor
changes to a cross with arrowheads, you can move
the symbol.
Bottom: The bones linking the symbol change in
length to accommodate the move.
Transform tool,
move cursor

Bones changed
length

Perfect Posing with Control Handles
As you work with IK Bones, you spend your time creating a pose, moving down the
timeline, and creating another pose. Anything that helps you arrange an armature
faster makes you more efficient. One problem you encounter when you’re trying
to force your animation into the perfect pose is that all those bones and attached
symbols tend to fly and flop all over the place. As explained earlier, the “Joint: Rotation” and “Joint: Translation” settings help you control and constrain movement.
Want to keep a joint from spinning? Turn off “Joint: Rotation.” Want to restrict the
rotation? Leave rotation turned on, but also turn on the Constrain checkbox and
enter a Min and Max value as explained on page 333. But what about that last joint?

Chapter 9: Realistic Animation with IK Bones

www.it-ebooks.info

339

Perfect
Posing with
Control
Handles

The “Joint: Rotation” settings affect the head of a bone, but there’s no way to set
the Min and Max rotation for the joint at a bone’s tail.
For an example of this dilemma, open 09-4_Chris_Army_Knife.fla. You see a handy
multitooled knife like the one made famous by a certain Alpine nation (Figure 9-12).
If you move the knife blade, it opens just the right amount and closes neatly into the
knife’s handle. Click the bone along the knife blade and in the Properties panel, you
see that “Joint: Rotation” and Constrain are both turned on, and Min and Max values
are set. The scissors don’t behave nearly as well. The short scissor blade spins like a
top, because the tail of the last bone creates the joint where the two scissors blades
meet. What’s the difference between these two examples? It’s that little green dot
at the end of the knife blade. In essence, you overcome the last bone dilemma by
creating another bone and attaching it to a “dummy” symbol—in this example, a
green dot. When it’s time to publish your animation, you can make that green dot
disappear by going to the Library panel and editing the symbol. Set the fill Alpha
to 0, and all the green dots in your animation become invisible. Later, if you want
your handles back for posing, you reverse the process.

Figure 9-12

Top: The knife blade on the right is constrained, so it
opens and closes realistically. The short blade on the
scissors is not constrained, so it rotates 360 degrees.
Bottom: Use a movie clip symbol (green dot) to create a
dummy handle, and then add a bone from the scissors
joint to the handle. With an extra bone in place, you can
constrain the scissors’ rotation.

If you’re in the mood for some practice, drag another green dot out of the library
and place it near the tip of the short scissors blade. Create a new bone from the scissors joint to the green dot. At that point, send the short scissors blade to the back
(Modify→Arrange→“Send to Back”). The knife looks better that way. Lastly, adjust
the “Joint: Rotation Constrain” settings for the scissors so they behave properly.
Homemade control handles like these have many uses. In the knife example, they
give you a way to move the blades even when they’re hidden behind the red knife
handle. If you want to rotate part of your armature with precision, create an extralong bone for your control handle. The further the handle is from the rotating joint,
the more precise your control.

340

flash CS6: The Missing Manual

www.it-ebooks.info

Note

The finished knife project 09-05_Chris_Army_Knife done.fla is available on the Missing CD
(www.missingmanuals.com/cds/flashcs6mm).

Baby Steps
with Pins

Baby Steps with Pins
Flash CS6 has another time-saving feature for IK Bones—pinning. This feature lets
you literally pin the tail of any bone to a point on the stage, preventing the armature
from flying and flopping while you arrange a pose. Best of all, pinning a tail joint
couldn’t be simpler, so it’s fast and easy to use. To practice with a simple example,
open 19-6_Pin_Bones.fla from the Missing CD (www.missingmanuals.com/cds/
flashcs6mm). The animation consists of three popsicle sticks, connected with an
armature. The armature makes use of homemade control handles like the ones described in the previous section. With the help of pins, you can make the stick figure
crab-walk across the stage.
To pin the tail of a bone to the stage, follow these steps:
1. With the Select tool (V), click the bone.
2. Move the cursor to the tail of the selected bone.
3. When the cursor changes to a pushpin, click the tail of the bone.
Pinning fixes the tail in place but lets the bone rotate around the spot. The pin feature
works like a toggle, so you can turn it off with the same steps. Tail joints that are
pinned show a big X over the joint, as shown in Figure 9-13. You can pin more than
one tail joint in the armature. Get used to quickly pinning and unpinning joints, and
your posing sessions will go much faster.

Figure 9-13

Move the cursor over the tail of a selected bone, and it turns into a pushpin. Click to toggle
pinning on and off. Here the left leg is pinned, making it easier to arrange the other bones
for the walking popsicle sticks.

Chapter 9: Realistic Animation with IK Bones

www.it-ebooks.info

341

Making
Shapes Move
with Bones

To make the sticks walk across the stage, move the playhead two or three frames
down the timeline where you want to create a new pose. Pin the tail of the left leg
in place, and then rearrange the pose by raising the right leg as if it’s beginning a
step (Figure 9-13). Move down the timeline a few more frames and bring the right
leg down to its new foothold further to the right. Now, pin the tail of the right leg in
place and unpin the left. Create a couple of poses to bring the left leg down. Repeat
the process a few times, and the popsicle sticks will walk off the edge of the stage.
You could make the three sticks walk across the stage without the help of pins, but
it would take a bit longer. Consider a more complex, legged model, like a person or
a dog, with hips, shoulders, knees, and elbows. With just a couple of clicks, pinning
gives you a quick way to freeze parts of the armature in place while you fiddle with
the rest.
Note

The finished walking sticks animation is named 19-7_Pin_Bones done.fla on the Missing CD
(www.missingmanuals.com/cds/flashcs6mm).

Making Shapes Move with Bones
There are two ways to use bones. You can use IK Bones to link symbols together,
creating a chain of objects (as described on page 326), or you can add bones to the
inside of a shape, making that shape bendable and flexible. It’s kind of like dressing
up a group of bones inside a costume. Though both of these methods rely on an
armature made up of bones, the techniques you use to make them work are quite
different.
You can add bones to a single shape, or you can add bones to more than one shape.
The word “group” isn’t used here, since you can’t combine the shapes using the
Group commands. The way you add bones to more than one shape is to select all
the shapes that you’re going to include before you add the first bone. Flash then
automatically places those selected shapes in the pose layer.
In this exercise, you’ll animate a snake by placing several bones inside it. Unlike a
robot, snakes don’t have limbs, but you can still give them plenty of bones. Download 09-8_Shape_Bones.fla from the Missing CD page at www.missingmanuals.
com/cds/flashcs6mm.
1. Open 09-8_Shape_Bones.fla .
The lovely rattlesnake is made up of several shapes: a body, a tongue, and two
eyes.
2. Zoom in on the front section.
To place bones precisely inside a shape, it helps to zoom in for a close view. Then,
if you need to get a view of a different part of the shape, you can use the Hand

342

flash CS6: The Missing Manual

www.it-ebooks.info

tool to reposition the object on the stage. As mentioned earlier, it also helps to
turn off object snapping (View→“Snapping→Snap to Objects”).

Making
Shapes Move
with Bones

3. Press Ctrl+A (⌘-A) to select the tongue, the body, and the eyes.
You can add bones to more than one shape, but you can’t group those shapes
with the Modify→Group command when you add the bone. Instead, you have
to select all the shapes you want to include in the IK shape object.
4. With the Bone tool, drag to create a bone from the snake’s head to the
tongue.
When you create the first bone, Flash converts all the selected shapes and
the bone into an IK shape object and places the object in a pose layer. Why
start with the head? Your first click sets the transformation point for the entire
armature—better to center the snake on its head rather than its forked tongue.
5. Create a bone from the root bone down the body of the snake.
You can attach bones to both the head and tail of the root bone. You can also
create branches in shapes. (Page 332 describes creating branching armatures
when linking symbols.)
6. Create several more bones inside the body of the snake down to the tail.
Use a total of about eight or nine bones for the snake’s armature (Figure 9-14). If
you use too many bones, it’s more work for you when you try to pose the snake.
Too few bones, and you won’t be able to create the desired snaky slithering.

Figure 9-14

The root bone in the snake starts at the
head. One bone extends to the tongue. The
rest of the bones extend down the body of
the snake to the tail.

7. In the pose layer, click Frame 50, and then press F5.
The green pose layer shows 50 frames for you to create some snaky movement.
8. Create several poses to animate the snake so that it moves across the stage
from left to right.
Here are some suggestions: In Frame 1, start with the snake offstage to the left.
In Frame 5, pose the snake with just the head coming on to the stage. In Frames

Chapter 9: Realistic Animation with IK Bones

www.it-ebooks.info

343

Making
Shapes Move
with Bones

10, 20, 30, and 40, pose the snake in different S-shaped curves to simulate snake
propulsion across the stage. In Frame 45, show just the snake’s rattle with the
rest of the snake body already offstage. In Frame 50, move the snake entirely
off stage to the right.
9. Test the animation.
If you’re not pleased with the movement at any stage, then try to reposition the
adjacent poses or create more intermediate poses.
You use the pose layer to animate the position and location of the armature. In many
ways, the pose layer seems like a motion tween; however, you can’t use the pose
layer to tween properties like color, transparency, or dimensions. If you want to
change these properties, you need to select the pose layer, and then wrap it in either
a movie clip or a graphic symbol. There are more details in the box on page 332.

Working with Control Points
When you place bones inside shapes, Flash automatically creates control points
around the contour of the shape, as shown in Figure 9-15. The control points establish
the perimeter of the shape as you create different poses. Some shapes, especially
more complex and branched shapes, can get contorted in unexpected ways. You can
solve the problem by repositioning the control points. With the Subselection tool,
click the boundary of the shape. The control points and the edge of the shape appear
highlighted. Then just drag the control points to adjust the shape. Control points at a
curve show Bezier-style curve control handles that you can use to modify the curve.

Bound to
single bone

344

Square
control point

flash CS6: The Missing Manual

www.it-ebooks.info

Figure 9-15

Flash automatically creates control points around
the edge of shapes when
you add bones. You can
change the contour of a
shape by dragging the
control points.

When you add bones to a shape, Flash binds the control points on the perimeter of
the shape to the nearest bone. In some cases, a control point may be bound to more
than one bone, as shown in Figure 9-16. If the control points aren’t configured the
way you’d like, you can edit them using the following techniques:

Making
Shapes Move
with Bones

• View control points bound to a bone. Choose the Bind tool in the Tools panel,
and then click a bone in the armature. The selected bone shows a red highlight.
The control points bound to the selected bone are highlighted in yellow. The
other control points in the armature are colored blue.

Triangular
control point

Figure 9-16

When a control point is
a triangle, that means
it’s bound to more than
one bone.

Bound to
two bones

• View bones bound to a control point. Choose the Bind tool in the Tools panel,
and Flash displays the bones and control points in the armature. Square control
points are bound to a single bone. Triangular control points are bound to more
than one bone. Click a control point, and it shows a red highlight. Bones bound
to the control point are highlighted in yellow.
• Bind a control point to a bone. Choose the Bind tool in the Tools panel, and
then click a bone. The control points bound to the bone appear highlighted in
yellow. With the Bind tool, Shift-click a control point that doesn’t show a yellow
highlight, and Flash binds it to the selected bone.
• Remove (unbind) control points from a bone. Use the Bind tool to select a
bone. Ctrl-click (Option-click) a control point that’s highlighted in yellow. The
control point changes from yellow to blue, indicating that it’s no longer bound
to the selected bone.

Chapter 9: Realistic Animation with IK Bones

www.it-ebooks.info

345

Apply Spring
to a Motion

• Bind a bone to a control point. Select a control point with the Bind tool, and
then drag to the bone you want to bind to. As an alternative, Ctrl-clicking
(Option-clicking) acts as a toggle, binding and unbinding control points to
adjacent bones.
• Remove (unbind) a bone from a control point. Select a control point with
the Bind tool, and then drag away from the shape to unbind the control point.
As an alternative, Ctrl-clicking (Option-clicking) acts as a toggle, binding and
unbinding control points to adjacent bones.

Apply Spring to a Motion
An A-flat played on a guitar sounds different from an A-flat on a trumpet. The note
may be the same, but the differences in overtone and timbre make music beautiful
and endlessly entertaining. Motion in the real world is like a symphony orchestra. A
pencil, a feather, and a cooked noodle may move the same distance and arrive at
the same resting point, but the subtleties of their motion are entirely different. Your
audience subconsciously recognizes these differences. When you want to fine-tune
a motion’s subtleties in Flash, turn to the Spring properties: Strength and Damping,
which you find in the Properties panel when you select an IK Bone.
Here’s a simple experiment that shows how Spring works. If you want to skip the
first few steps for creating a rectangle shape with bones, use the file 09-9_Spring_­
Settings.fla from the Missing CD (www.missingmanuals.com/cds/flashcs6mm).
1. Choose File→New→ActionScript 3.0.
A new Flash document opens.
2. Select the Rectangle tool (R) and then make sure object drawing mode (J)
is toggled off.
A simple shape works great for this demonstration.
3. In the Properties panel, set Stroke to None and Fill to a color of your choice.
Again, simplicity works just fine.
4. Draw a skinny, horizontal rectangle across the top of the stage, as shown
in Figure 9-17.
In this animation, one side of the rectangle drops to the floor. The shape of
the rectangle and the fluidity of the motion change depending on the Spring
properties.
5. Select the Bone tool (M), and then add two bones to the shape.
Make the bone on the left shorter than the bone on the right.

346

flash CS6: The Missing Manual

www.it-ebooks.info

6. In the timeline, click Frame 24 and then press F5. With the Selection tool (V),
drag the right end of the rectangle down to the bottom of the stage.

Apply Spring
to a Motion

Make sure that you’re in the final frame of the animation (Frame 24) and that
the rectangle is pulled tight with no bends in it, as shown in Figure 9-17.

Figure 9-17

You apply Spring properties
to individual bones in a
armature. The settings
affect the motion and interaction between the bones.
Spring makes a child bone
resist the movement of a
parent bone. How much
resistance? Well, that’s up
to you and the Strength
and Damping properties.

7. Press Enter (Return) to preview the motion.
On the stage, the movement of the rectangle is similar to a pencil. The shape
remains pretty much unchanged through the entire motion.
8. Select the bone on the right, and then change Properties→Spring→Strength
to 70 (Figure 9-18).
A setting of 70 makes the relationship between the parent and child bones
pretty loose.
9. Press Enter (Return) to preview the motion.
This time, the motion is more fluid. The rectangle flutters more like a feather or
some other flexible object.
You apply Spring properties to individual bones, and they change the way the shape
moves. There’s a reaction when the parent bone moves. The child bone resists
the movement, and that resistance changes the shape. See Figure 9-19. Set the
Spring→Strength property to 0, and the joint is rigid. Set the value to 100 and the
joint is very loose. Damping affects the motion, too. In the real world, movement like
springiness is often more dramatic initially and then gradually loses its power until
the object comes to rest. Think about a jack-in-the-box when it pops out. There’s

Chapter 9: Realistic Animation with IK Bones

www.it-ebooks.info

347

Apply Spring
to a Motion

lots of movement at first, but then there’s a little less distance with each bounce. In
Flash, you use the Damping setting to set the difference between the initial movement and the movement when an object comes to rest.

Figure 9-18

Use the Strength setting to determine how
loose the joint is between two bones. Use
the Damping setting to control the timing of
the bouncy motion. Specifically, the damping
affects how the movement diminishes over
time.

Spring Strength
subpanel

Damping

Figure 9-19

If you turn on onionskinning and change the
display to outlines, you
can see the curve in the
“rectangle” at different
positions in its journey.

348

flash CS6: The Missing Manual

www.it-ebooks.info

Animating an Armature with ActionScript

Animating
an Armature
with
ActionScript

Though it’s not covered in this book, you can use ActionScript 3.0 to animate
IK Bones armatures. The IK armature has to be connected to either shapes or movie
clip symbols. You can’t use ActionScript to animate graphic symbols. To prepare
an armature for use with ActionScript, create a pose layer with only a single pose.
If there’s more than one pose in the layer, then you can’t use it with ActionScript.
1. Select a frame in the pose layer.
The settings for the pose layer appear in the Properties panel (Figure 9-20).

Figure 9-20

Change the Properties→Options→Type to Runtime if you want to use ActionScript to
control the movement of your IK Bones armature.

2. In Properties, under Options→Type, choose Runtime from the drop-down
menu.
When you first create an armature, Properties→Options→Type is set to
­Authortime, meaning you create the animation in the timeline as you design
the animation. Once you change it to Runtime, you can use ActionScript code
to control the movement of the armature and its elements.
3. Change the instance name for the armature to amtrChain .
You can change the name of the armature to match your ActionScript naming
conventions. Initially, Flash gives the armature instance the same name as the
pose layer. You can change the name in either the layer in the timeline or in the
Properties panel.

Chapter 9: Realistic Animation with IK Bones

www.it-ebooks.info

349

www.it-ebooks.info

chapter

Incorporating
Non-Flash Media Files

10

F

lash gives you a ton of drawing and painting tools you can use to create original
artwork, as you saw in Chapter 2 and Chapter 5. But if you’ve already got some
cool logos or backgrounds that you created in another program (like Adobe
Illustrator and Photoshop), you don’t have to redraw them in Flash. All you have
to do is pull them into Flash—import them. Once you do, you can work with them
nearly as easily as you do the images you create directly on the stage.
This chapter introduces you to the different types of graphics and still images that
Flash lets you work with. You’ll learn how to import files while preserving just the
features you need in Flash. (If you’re looking for tips on how to work with audio and
video media, turn to Chapter 11.)
Note

After you’ve incorporated non-Flash media into your animation, you can control that media using
ActionScript. For more details, flip to Chapter 12.

Importing Graphics
Theoretically, you can cut or copy graphic elements from any other program you
have open, paste them into Flash, and then tweak them. For example, say you’ve
created a drawing in Autodesk SketchBook Pro. In SketchBook, you can choose
Edit→Copy. Then, in Flash, you can choose Edit→“Paste in Center” to transfer the
image from SketchBook to your stage, and then edit it using Flash’s drawing and
painting tools. When you import or paste an image onto the stage, Flash stores a
copy in your Library, as shown in Figure 10-1.

351

www.it-ebooks.info

Importing
Graphics

Copying and pasting usually works, and it’s quick and easy. It’s not surprising that
Adobe tweaked Flash so that Cut and Paste work smoothly with its own programs—
Illustrator, Photoshop, and Fireworks. In fact, the cut-and-paste process opens the
same Import dialog box that you’d see if you’d used the File Import command. That
handy tool helps you import graphics exactly the way you want them in Flash. On
the other hand, using non-Adobe programs, you may get hit-or-miss results by using
the system Clipboard. Flash may decide to flatten (group) the drawing, limiting your
ability to edit it. Flash may also decide to ignore certain effects (like transparency
and gradients) so that the image you paste onto your stage doesn’t quite match
the image you cut or copied.

Figure 10-1

After you import a
bitmap, Flash throws a
backup copy of the image
into the Library as a
convenience so you have
the option of dragging
another copy onto the
stage without going
through all the trouble of
importing the file again.
To see the properties of
your newly imported
bitmap, click the information icon.
Properties button

A safer alternative: In your non-Adobe programs, save your graphic elements as
separate files, and then import those files into Flash. Flash lets you import most
popular graphics file formats, including .jpg, .gif, .png, and .bmp formats. If you’re
a Flash veteran, you may notice that the list of importable file formats is actually
shorter than it used to be. Adobe has retired some older and less-common formats,
like Macromedia Freehand, Silicon Graphics, Targa, and Windows metafiles. If you’re
working in one of these formats, you need to save your files in one of the formats
listed in Table 10-1.
One of the major improvements in recent versions of Flash is the way it imports
Adobe Photoshop and Adobe Illustrator files. These programs use layers much like
the layers in Flash, as explained on page 135. When you import Photoshop and Illustrator files into Flash, you can choose which layers you want to import, and the
program converts them into Flash layers. Say you’re creating a business presentation
and you’ve got a Photoshop file of a map. The Photoshop (.psd) file has the map on
one layer, city names on another layer, and stars on another layer to highlight where
you’ve had increased sales. Flash imports the map, the city names, and the stars on
separate layers, making it easy for you to show and hide these elements separately

352

flash CS6: The Missing Manual

www.it-ebooks.info

in your Flash animation. Also, if you need to make changes after you pull Photoshop
or Illustrator files into Flash, you can edit the shapes and text within Flash.

Importing
Graphics

Table 10-1 Graphics file formats you can import into Flash
File Type

Extension

Note

Adobe Illustrator

.ai

Instead of automatically pulling these files in
as flat, rasterized bitmaps, Flash lets you set
import settings that help preserve the original
images’ layers and editable text.

Portable Network
Graphic

.png

Instead of automatically importing PNG files
created in Fireworks as flat, rasterized bitmaps,
Flash lets you set import settings that help
preserve the original images’ layers, editable
objects, and editable text.

Photoshop

.psd

You must have QuickTime 4 (or later) installed
before you can import Photoshop files into
Flash.

Adobe FXG

.fxg

This is Adobe’s new open source, MXML-based
file format. It works well with Photoshop,
Illustrator, Flash, and Flex. For more details, see
the box on page 354.

AutoCAD DXF

.dxf

Flash imports 2-D DXF files, but not 3-D DXF.
Font confusion can happen when Flash tries
to match AutoCAD’s nonstandard font system.
Flash imports only ASCII (text-based) DXF
files. Binary DXF files have to be converted to
ASCII before they’re imported to Flash.

Windows Bitmap

.bmp, .dib

If you’re running a Mac, you must have
QuickTime 4 (or later) installed on your
computer to import Windows bitmap files into
Flash.

Flash and FutureSplash
(pre-Flash)

.swf

These are Flash movies that have been
published (also known as compiled) for
distribution.

Graphic Interchange
Format (including
animated GIF)

.gif

This format, originally developed by
CompuServe (one of the earliest online information services), is good for simple drawings.

Joint Photographic
Experts Group

.jpg, .jpeg

The most popular format for displaying photos
on the Web.

QuickTime Image

.qtif

You must have QuickTime 4 (or later) installed
before you can import QuickTime Image files
into Flash.

Tagged Image File

.tif, .tiff

You must have QuickTime 4 (or later) installed
before you can import TIFF files into Flash.

Chapter 10: Incorporating Non-Flash Media Files

www.it-ebooks.info

353

Importing
Illustrator
Graphics
Files

Note

If you’re looking for third-party graphics files to import into Flash, check out the box on page 382.

Frequently Asked Question

New File Formats for Flash? Why?
With all the file formats floating around, why did Adobe create
two new ones: XFL for Flash and FXG for images?
It’s a reasonable question. If you use Flash, you’re expected
to keep track of dozens of different types of files and understand their capabilities and shortcomings. Over the
years, Flash has matured from a simple animation tool to an
application-building tool. Branches of that growth include
Flex and AIR—development tools that use Flash files to create
full-blown applications. Adobe created the new file formats
to accommodate the needs of these new app-building tools.
At the same time, there’s an industry trend toward open-source
tools and file formats. In the past, companies like Microsoft and
Adobe created proprietary file formats that only their programs
could open. Once the competition figured it out, the company
would come out with a new version, protecting their corner of
the market. This system wasn’t so great for the consumer. The
trend these days is to develop file formats made of separate
components that are compressed like a ZIP file, often using the
XML scripting language to define the separate parts. Microsoft
went this direction when creating file formats for Office 2007
and 2008, and now Adobe is using a similar method for Flash
and other programs.
Flash Files (.fla and .xfl). Now, when you save a Flash file
(File→Save), the program automatically stores it in the new
format and squashes it using ZIP compression. You can see for
yourself—use a tool like WinZip or StuffIt to open a Flash file.
(You may need to change the file extension to “.zip” before
you can open it.) Once it’s open, it looks like Figure 10-2. Flash

developers who work in teams will love this approach. Artists
can design buttons and widgets somewhat independently of
programmers who write the ActionScript code. Then, each team
member can pop her work into the Flash document without
messing up any other part of the project. Folks who develop
Flash extensions and add-ons will also be fans of the new,
easily accessible file format.
When you save your Flash documents (File→Save), you can
choose Flash CS6 Uncompressed Document (*.xfl) from the
“Save as type” menu. When you choose this option, Flash forgoes the compression. Instead, it saves your file as a folder with
subfolders to hold all of its parts (called assets). For example, a
Library subfolder holds any symbols you’ve created. This setup
makes asset swapping and sharing even easier.
FXG file format. There’s more than one way to operate on a
Flash animation. For example, you can use Flash Professional
with all its bells and whistles. If you’re a designer but not a
programmer, you may want to use Flash Catalyst. On the other
hand, if you’re a developer and a programmer, you may want
to use Flash Builder. These last two tools are useful when an
entire team is working on a project. Adobe developed the FXG
file format to ease the cooperation between these programs,
as well as Photoshop, Illustrator, Flash, and Flex. FXG uses
XML-type descriptions to define an image. Technically, this
code is a subset of Flex’s MXML language. To see the innards of
an FXG file, open it using Notepad or TextEdit. You’ll find text
descriptions of the image. It looks a little like the code that
underlies web pages, because XML and HTML have shared roots.

Importing Illustrator Graphics Files
Flash lets you import graphics files you’ve created with another image-editing program (like Adobe Illustrator or Photoshop) and then stored on your computer. After
you import a graphics file, you can either edit the image it contains using Flash’s
tools and panels, or just add it directly to your animation.

354

flash CS6: The Missing Manual

www.it-ebooks.info

Note

Table 10-1 (page 353) shows you a complete list of all the different graphics file formats you can
import into Flash.

Importing
Illustrator
Graphics
Files

As you see in the steps below, after you’ve imported a graphics file, Flash stores a
copy of the image in the Library panel (page 30) so you can add as many instances
of the image to your animations as you like.

Library folder

Photos stored in
the Library folder

Figure 10-2

Flash Professional CS6
uses a new file format
that’s easier for everyone
to open and understand. Here a Flash file
is uncompressed and
opened in WinZip, so
you can see its contents
stored in separate folders.
These images are part
of the Photo Gallery file
(07-5_Photo_Gallery.fla
on the Missing CD page
at www.missingmanuals.
com/cds/flashcs6mm).

Of course, there’s no such thing as a free lunch. Depending on the format of your
graphics file (see page 353), Flash either pulls the image in as a collection of editable shapes and layers—which you can work with just as you work with any image
in Flash—or as a flattened bitmap, which limits your editing choices a bit. (Page 364
gives you tips for working with flattened bitmaps.) Flash does its best to give you all
the bells and whistles of the original file format. Flash really excels when you import
a file from one of Adobe’s Creative Suite programs, like Illustrator. As the example
below shows, you get to choose the way Flash imports layers, shapes, and text. As
a result, if you’re importing Illustrator files, Flash lets you go ahead and modify the
shapes (vector graphics) and edit the text after import.

Chapter 10: Incorporating Non-Flash Media Files

www.it-ebooks.info

355

Importing
Illustrator
Graphics
Files

Tip

Adobe Illustrator files are frequently saved for printing on paper using a color space called CMYK (cyan,
magenta, yellow, black). Before you import these files, use Illustrator to convert them to the RGB (red, green,
blue) color space used by Flash. To check and change the color space setting in Illustrator, choose File→Document
Color Mode. Less frequently, you may find Adobe Photoshop files using the CMYK color space. In Photoshop, to
check and change the color space, go to Image→Mode RGB.

Up to Speed

Flash/QuickTime Cross-Pollination
Since the good old days of Flash 4, Flash has enjoyed a symbiotic relationship with Apple’s QuickTime. Back then, you could
import a QuickTime movie into Flash and then add some Flash
content (for example, buttons that web surfers can press to
start and stop the QuickTime movie). And you still can import
QuickTime movies into Flash and link the two together, as you
see on page 396.
But the relationship between Flash and QuickTime goes beyond video integration—it also affects your ability to import

media files into Flash. If you have QuickTime installed on your
computer, for example, Flash lets you import more types of
graphic file formats than it does if you don’t have QuickTime
installed (see Table 10-1 for details).
The bottom line is, if you’re working with others who use both
Macs and PCs, it’s well worth installing QuickTime. When this
was written, the current version was QuickTime 10. Fortunately,
QuickTime is easy to install. It’s free, too. To download a copy,
visit www.apple.com/quicktime/download .

1. Choose File→Import→“Import to Stage.”
Your standard file dialog box appears. If you’re using a PC, it looks like
­Figure ­10-3, for example.

Figure 10-3

You can import a graphic
to the stage and the
Library, as you see in the
numbered steps, or just to
the Library (by choosing
File→Import→“Import
to Library”). Either way,
you first have to tell Flash
which file contains the
graphic you want to import—and that’s exactly
what you do here, in the
Import dialog box.

356

flash CS6: The Missing Manual

www.it-ebooks.info

Note

Looking for an Adobe Illustrator practice file? Go to the Missing CD (www.missingmanuals.com/cds/
flashcs6mm) and download either 10-1_Sports_Car.ai or 10-2_Stutz_Bearcat.ai.

Importing
Illustrator
Graphics
Files

2. In the “File name” field, type the name of the Adobe Illustrator (.ai) file
you want to import (or, in the file window, click the file to have Flash fill in
the name for you).
Use the drop-down menu at the bottom to see all the different types of files
you can import. Initially the drop-down menu is set to All Formats.
3. Click Open.
The Import dialog box disappears, and then Flash displays an extra Import
­Settings window that lets you tell it how much editability you want to preserve:
whether you want it to convert the original frames into Flash frames or Flash
layers, to pull in all the frames or just a few, to include invisible layers or not,
and so on. Figure 10-4 shows the Import Settings windows you see when you
import files created with Adobe Illustrator.
4. When you see the “Import to Stage” dialog box (Figure 10-4), click to select
one or more of the following options, and then click OK.
• Select Illustrator Artboard. You can create multiple artboards within an
Illustrator file. They’re similar to having multiple pages in a word processing document. Use the drop-down menu to choose which artboard (page)
you want to import.
• Check Illustrator layers to import. Flash gives you a scrolling list of all the
layers in the Illustrator file, with icons and labels describing the contents
of the layers. Place checkmarks next to the layers and artwork you wish to
import. To the right of the scrolling list, you see Layer Import Options that
change depending on the content of the layer.
On the right site of the Import window, you see “Layer import options for ‘’:”
or Group, or Text, or whatever you selected on the left. Here’s your opportunity to
fine-tune the import process. Suppose you have a drawing of a car. You can import
the wheels as movie clips with the registration points centered, so you can create
rotating wheels in your Flash animation. Here are examples of the import options:
• Layer import options for paths. If the layer includes lines and shapes, you
can choose to import the content as an editable path, meaning that you can
change it later within Flash. Or you can import it as a bitmap, which gives you
fewer editing options.
• Layer import options for text. You have three options for importing text.
Choose “Editable text” if you want to edit or rewrite the text. Choose “Vector
outlines” if you want to change the shapes of letters in the same way you change
the shapes of polygons and circles within Flash. Choose Bitmap if you’re happy
with the text as is and don’t plan to change it other than perhaps tweaking the
color and size a bit.
Chapter 10: Incorporating Non-Flash Media Files

www.it-ebooks.info

357

Importing
Illustrator
Graphics
Files

Tip

If you see a yellow triangle with an exclamation point (!), Flash is warning you that one of the graphic
elements may not be imported as expected. For example, you may see an incompatibility warning if you try to
import text that has been rotated in Illustrator. Click the layer, and Flash explains that the best option is to import
the text as vector outlines. Once you fix the problem, the warning sign disappears.

Figure 10-4

When you try to import
certain types of vector
files, Flash lets you
specify how much editability you’re willing to
sacrifice for good-quality
images. Here you see the
dialog box Flash displays
when you try to import
an Adobe Illustrator file.

• Create movie clip. Use this option to instantly turn the graphics in the selected
layer into a Flash movie clip symbol. Check the box, and then give the clip an
Instance name that’s used for the copy of the movie clip symbol that Flash
places on the stage. If your Illustrator artwork uses effects like filters or blends,
choose the “Create movie clip” option. In Flash, only movie clips can have filters
and blends. At the bottom of the “Import to Stage” dialog box, you see options
that affect all the layers you’re importing.
• Convert layers to: Flash Layers/Keyframes/Single Flash Layer. This option
tells Flash to keep the layering structure of the original file intact, to place the
content of each layer in a separate layer or keyframe. If you don’t need to work
with the image’s layers separately, you can flatten the content of all layers onto
a single Flash layer.
• Place objects at original position. This option keeps the different elements in
a graphic positioned the same way they were in Illustrator.

358

flash CS6: The Missing Manual

www.it-ebooks.info

• Set stage to same size as Illustrator artboard/crop area. Turning on this box
automatically changes the Height and Width document settings in Flash to
match the page settings in the Illustrator file you’re importing.

Importing
Photoshop
Graphic Files

• Import unused symbols. Illustrator has a Symbols panel that’s similar to Flash’s
Library. Turn on this option if you want to import all the symbols in the Illustrator
panel, even if they don’t appear in the document’s page.
• Import as a single bitmap image. Sometimes you’re not interested in multiple
layers, editable shapes, and editable text. All you want is a single picture in your
Library that you don’t want to change. Turn on this box to import the Illustrator
file as a single bitmap picture.
After you’ve made your choices and then clicked OK, the Import settings window
disappears. Flash imports your file, placing it on the stage (or in multiple frames
and layers, based on the options you selected above) and in the Library, as shown
earlier in Figure 10-1.
Tip

You can import files into your Library without placing them on the stage. Just choose File→Import→“Import
to Library.”

Importing Photoshop Graphic Files
Photoshop files have a special relationship with Flash, and the import process is
very similar to importing Illustrator files, described on page 354. The Import dialog
box (Figure 10-5) has the same look and layout, but when you look closely at the
options, you see some differences. That’s not surprising, since Photoshop specializes
in raster or bitmap images, while Illustrator focuses on vector graphics (sometimes
called drawings).
The “Import to Stage” dialog box for Photoshop files shows you a scrolling list of
Photoshop layers. Turn on the checkbox for each layer you want to include in the
import process. Click the layer name to highlight the layer, and you see options listed
on the right. The options differ depending on the content of the layer.
Here’s the rundown on the import options you find in the Photoshop “Import to
Stage” dialog box:

Import Options for Bitmaps
• Import this layer as. You have two choices for importing bitmap layers. Choose
“Bitmap image with editable layer styles” if you want to tweak the layer settings
in Flash. If all you need is a picture, choose “Flattened bitmap image.”
• Create movie clip for this layer. Use this option to instantly turn the graphics
in the selected layer into a Flash movie clip symbol. Turn on the box, and then

Chapter 10: Incorporating Non-Flash Media Files

www.it-ebooks.info

359

Importing
Photoshop
Graphic Files

give the clip an Instance name (which Flash uses for the copy of the movie clip
symbol it places on the stage).
• Publish settings. You can adjust the quality of bitmaps as you import them
into Flash. This option gives you control over the size of your Flash files, which
is important when you’re posting Flash movies on the Internet (better quality
equals bigger files). Using the Compression drop-down menu, you can choose
between Lossy and Lossless. If you choose lossy compression (similar to JPEG
images), you get a compact file size at the risk of degraded image quality.
Lossless compression retains all the digital information, even when resized. As
with JPEG images, you can adjust the quality of lossy compression images by
setting them to match your Flash publish settings (page 681) or by entering a
number in the Custom box.

Figure 10-5

When you import Photoshop graphics, Flash gives
you a boatload of control
over the process. Using
the “Import to Stage”
dialog box, you can tweak
the settings on individual
layers of the Photoshop
file so you get exactly the
tools you need for your
animation.

Import Options for Text
• Editable text. Photoshop places text on separate layers from photographs so
that the text can be edited, like it’s in a word processor. Choose this option if
you want to edit text after you’ve brought it into Flash.
360

flash CS6: The Missing Manual

www.it-ebooks.info

• Vector outlines. The letters in text are drawn on the screen in the same way
that circles and polygons are drawn. If you want to be able to modify those
letters as if they were any other shape, choose “Vector outlines” as your import
option. You’ll be able to distort your letters in all sorts of fun ways, but you won’t
be able to edit them like editable text.

Importing
Fireworks
Graphics

• Flattened bitmap image. This option turns your text into a bitmap picture, like
a photograph. You can’t do much more than tweak the color and resize it a bit.

Other Photoshop Import Options
The “Import to Stage” dialog box has several other options you can adjust before
you import files:
• Create movie clip for this layer. Select one or more layers, and you can turn
them into a Flash movie clip symbol.
• Merge layers. Below the scrolling list of layers is a Merge Layers button.
­Shift-click or Ctrl-click (⌘-click) to select multiple layers, and then click Merge
Layers. Flash creates a new merged layer right in the scrolling list that you
can import into your Flash document. (This process doesn’t affect the original
Photoshop file on your computer.)
• Convert layers to: Flash layers/Keyframes. This option tells Flash to keep the
layering structure of the original file intact, to place the content of each layer in
a separate layer or keyframe.
• Place layers at original position. This option keeps the different elements in
a graphic positioned the same way they were in Photoshop.
• Set stage to same size as Photoshop canvas. Turn on this box to automatically
change the Height and Width document settings in Flash to match the page
settings in the Photoshop file you’re importing.

Importing Fireworks Graphics
Fireworks is another program that’s part of Adobe’s Creative Suite family. Fireworks’s
specialty is performing all sorts of graphics tricks for people who design websites. It
has tools for creating buttons, rollover images, and other web graphics. For example,
Fireworks can take a photo file and shrink it down to a very small file size, so it’ll
look fine on a website, but maybe not so great in print. Fireworks creates most of its
magic using the standard web language (HTML), and graphics files (JPEG, GIF, PNG),
with a little JavaScript for programming chores. Although Flash produces SWF files
and uses ActionScript for programming, these two programs play well with each
other, and you’ll often find reasons for swapping files back and forth between them.
Note

Flash and Fireworks have a working relationship that precedes the Adobe era. Both were published
by Macromedia until Adobe purchased the company.

Chapter 10: Incorporating Non-Flash Media Files

www.it-ebooks.info

361

Importing
Fireworks
Graphics

Fireworks is a hybrid in that its working file format (PNG) holds both photographic
images like Photoshop and vector drawings like Adobe Illustrator. Designers often
create complex images in Fireworks that may include photographs, text, and shapes.
They save their work in PNG files, but they export the files to smaller, simpler formats
to use on the Web. Flash can import almost any of the files that Fireworks saves or
exports. This section shows you how.

Workaround Workshop

Importing Unimportable Graphics
If you’re not importing Adobe Illustrator, Photoshop, or Fireworks files, don’t expect perfection when you’re importing
complex graphics. That’s especially true if you’re trying to
preserve the ability to edit your graphics in Flash. Flash does
the best it can, but there are an awful lot of variables involved,
from the specific effects you applied, to the graphics, to the
specific version of the program you used to create them.
If the graphics you import into Flash don’t look or behave the
way they do in the original program, try one or more of the
following:

• Try using the Clipboard. First, choose Edit→Preferences→
Clipboard (Windows) or Flash→Preferences→Clipboard
(Mac) to display the Preferences window. You can choose
the color depth and resolution for the image you’re cutting
and pasting. Higher numbers are more likely to match the
original artwork, while lower numbers reduce the file size.
• Return to the original program and see if you can simplify
the image. Reduce the number of colors you’re using, as
well as the number of layers, and flatten (group) as much
of the image as you can. Then try the import process again.

• Ungroup the imported image. You do this by selecting the
image on the stage, and then choosing Modify→Ungroup.

Tip
The PNG (Portable Networks Graphic) file format is a standard that was developed to replace GIF files
on the Internet for both copyright and techie reasons. In Fireworks, you can save files as PNGs, or you can export
files as PNGs. Exported files are very small and great for use on websites.

There are three ways to bring graphics from Fireworks into Flash. Before you choose
a method, ask yourself a couple of questions: Do I want the entire image or do I just
want parts of it? Do I want the image in one solid chunk or do I want to animate
individual pieces? After you know the answer to those questions, choose one of
these methods for importing the graphic:
• Use Flash’s File→Import command to import a complete Fireworks graphic.
Whether you saved it as a GIF, JPG or PNG the image will be imported as a
flattened bitmap—that is, one solid image. Even if it had separate layers in
Fireworks, that’s not the case once it’s imported into Flash.

362

flash CS6: The Missing Manual

www.it-ebooks.info

• Drag images from Fireworks to Flash, as shown in Figure 10-6. Before you drag,
select the graphics you want to copy. Make sure any graphics you want to copy
are visible and on unlocked layers. As with the Import method, you graphic in
Flash is a flattened bitmap. The advantage of this option is you can pick can
choose the parts of the image you need in Flash.

Adobe Fireworks

Importing
Fireworks
Graphics

Figure 10-6

With Adobe Creative Suite
programs, like Fireworks,
you can drag and drop
graphics from one
program to another. An
Import dialog box opens,
letting you choose among
the import options.

Adobe Flash

• Copying and pasting works, too, and sometimes it’s easier than arranging your
windows for a drag operation. The same rules apply; make sure any graphics
you want to copy are visible and on unlocked layers. Sometimes, you’ll want
the pieces of a Fireworks graphic to be separate objects in your Flash animation. For example, if you have a car, you may want to animate the wheels so the
they turn. In that case, choose Edit→Copy as Vectors in Fireworks. Then choose
Edit→Paste in Flash. A dialog box, like the one in Figure 10-7 appears. Choose
the Paste Using AI Importer preferences. Translation: I want to import this as if
it were an Adobe Illustrator file. Check the box Maintain layers. That way, each

Chapter 10: Incorporating Non-Flash Media Files

www.it-ebooks.info

363

Editing
Bitmaps

the elements is appear in Flash timeline layers. At this point, work with the
graphics just as if you created them in Flash. That means you can move them
to different layers or you can turn them into symbols for animation.

Figure 10-7

If you want to import a Fireworks graphic but as individual elements on
separate layers, use the Edit→Copy as Vectors command in Fireworks.
Then when you Edit→Paste the image into Flash, you see this dialog box
giving you different options for the way the graphic is added to your Flash
animation.

Editing Bitmaps
Depending on the graphics file format you import into Flash, you may be able to
edit the image using Flash’s tools, or you may not. If Flash recognizes the image as
a vector image, with distinct strokes and fills, you’re good to go. Just open the Tools
panel, choose a selection, drawing, or painting tool, and then get to work.
But if the image comes through as a bitmap, then you need to do a bit of finagling,
because Flash treats bitmaps as big blobs of undifferentiated pixels. (See the box
on page 365 for more details.)
With bitmaps, Flash’s selection tools don’t work as you might expect. Say, for instance, you import a scanned-in photo of the Seattle skyline. Flash treats the entire
photo as a single entity. When you click the Space Needle, Flash selects the entire
scanned-in image. When you try to use the Lasso tool to select the half of the image that contains Mount Rainier, Flash selects the entire image. When you try to
repaint the sky a lighter shade of gray, Flash paints around or behind the imported
bitmap, but not the sky.
Fortunately, Flash gives you a few options when it comes to working with bitmaps:
You can break them apart, you can turn them into vector graphics, or you can turn
them into symbols. The following sections describe each option.

Turning Bitmaps into Fills
Breaking apart a bitmap image transforms the image from a homogenous group
of pixels into an editable fill. You still can’t click the Space Needle and have Flash
recognize it as a distinct shape (you can do that only with vector art), but you can

364

flash CS6: The Missing Manual

www.it-ebooks.info

use the Selection, Subselection, and Lasso tools to select the Space Needle, and
then either cut it, copy it, move it, repaint it, or otherwise edit it separately from the
rest of the scanned-in image.

Editing
Bitmaps

To break apart a bitmap:
1. On the stage, select the bitmap image you want to break apart.
Flash displays a selection box around the image.
2. Choose Modify→Break Apart.
Flash covers the image with tiny white dots to let you know it’s now a fill.
At this point, you can use the Selection, Subselection, and Lasso tools to select portions of the image (something you couldn’t do before you broke the bitmap apart).
Up to Speed

Vector vs. Bitmap Images
Flash lets you import and work with two different types of
graphics files: vector and bitmap. You can’t tell what type an
image is by looking at it—the difference is in the structure of the
information that makes up the image. Here are the main points:
Computer programs, including Flash, store vector graphics
(such as the original artwork you create on the stage) as a
bunch of formulas. Vector graphics have the advantage of being pretty modest in size compared with bitmaps, and they’re
scalable. In other words, if you draw a tiny blackbird and then
decide to scale it by 500 percent, your scaled drawing will still
look like a nice, crisp blackbird, only bigger.
In contrast, computer programs store bitmap, or raster, graphics (such as a digital or scanned-in photo) as a bunch of pixels.
Bitmap doesn’t refer just to files with the Windows bitmap
(.bmp) extension; it refers to all images stored in bitmap format, including gif, .jpg, .png, and .tif. (You can find a complete
list of the file formats Flash lets you import on page 353.)

The good thing about bitmap graphics is that they let you
create super-realistic detail, complete with complex colors,
gradients, and subtle shadings. On the downside, bitmaps typically take up a whopping amount of disk space, and they’re not
particularly scalable: If you scale a photo of a blackbird by 500
percent, it appears blurry because all Flash can do is enlarge
each individual pixel: It doesn’t have access to the formulas it
would need to draw the additional pixels necessary to keep
the detail crisp and sharp at five times the original image size.
Why do you care whether a graphics file is a vector or a bitmap?
Because you work with imported bitmap files differently in
Flash than you do with imported or original vector files. As you
see on page 364, you need to break bitmap images apart before
you can crop them in Flash. Depending on your export settings,
you may need to optimize the bitmaps to reduce the size of
your finished animation. (Chapter 20 provides the details.)

Turning Bitmaps into Vectors
Tracing a bitmap transforms it into a vector graphic. You can check out the box
above for a rundown of the differences between the two, but basically, turning a
bitmap into a vector gives you three benefits:
• It can produce a cool, stylized, watercolor effect.
• It may reduce the file size associated with the image (but only in cases where
the image doesn’t have a lot of different colors or gradients).

Chapter 10: Incorporating Non-Flash Media Files

www.it-ebooks.info

365

Editing
Bitmaps with
Photoshop

• It turns a nonscalable image into a scalable image—one you can “zoom in” on
without it turning all fuzzy on you.
Note The fewer colors your bitmap has, the more faithful your bitmap-turned-vector is likely to be to the
original. Tracing a bitmap of a hand-drawn sketch done in black charcoal, for example, is going to result in a
vector graphic that resembles the original bitmap much more closely than a bitmap trace of a scanned-in photo.
(Even photos that look to the naked eye as though they have only a handful of colors usually contain many, many
more at the pixel level.)

To trace a bitmap, select the bitmap you want to turn into a vector graphic, and then
select Modify→Bitmap→Trace Bitmap. Figure 10-8 shows you an example.
Turning bitmaps into symbols
Suppose you want to add an old-timey sepia color to a photo or you want your
bitmap to gradually fade and then disappear. You can’t change the color, brightness, or transparency (alpha) of an imported bitmap, but you can change them for
a symbol. So if all you want to do is tint or fade a bitmap, you can use a quick and
easy fix, and transform it into a symbol.

To turn a bitmap into a symbol:
1. Select the bitmap, and then choose Modify→“Convert to Symbol.”
The “Convert to Symbol” dialog box appears.
2. In the “Convert to Symbol” dialog box, choose Movie Clip from the dropdown menu, and then click OK.
In the Properties panel, click the drop-down list next to Color Effect to set the
symbol’s brightness, tint, and alpha (transparency) settings. If you convert bitmaps to movie clip symbols, then you can apply filter effects in the Properties
panel (page 276). If you don’t intend to apply a filter and you want to create the
smallest possible file size, choose Graphic from the drop-down menu.
Note

For the skinny on symbols, check out Chapter 7; for more on color, brightness, and transparency, see

Chapter 5.

Editing Bitmaps with Photoshop
Photoshop is a much more powerful tool than Flash when it comes to editing
bitmap images. If you have experience with Photoshop, Fireworks, or some other
image editor, you probably prefer using it for some chores. These days, that’s not
hard to do provided you have the programs installed on your computer. Right-click
(­Control-click) the bitmap image in Flash’s Library and choose Edit with Photoshop.
If you prefer another image editor, such as Fireworks, click the Edit With option
and find the program you want to use. In either case, your bitmap editor of choice
366

flash CS6: The Missing Manual

www.it-ebooks.info

opens with the image ready for editing. When you’re done, save and close the file
and return to Flash, where you see the changes already in place. No File Import
commands needed. With each version of the Creative Suite, Adobe adds features
to make this kind of round trip editing easier.

Editing
Bitmaps with
Photoshop

Figure 10-8

Top: Here’s the way a scanned-in image looks as a bitmap.
Middle: Here’s how it looks after Flash has traced it (turned it into
vector art). Depending on your settings, the results may be artistic
than, rather than realistic. Here the color threshold and the minimum
area are both set to 60.
Bottom: With the layer set to show outlines, you see the edges for
each swath of color.

Chapter 10: Incorporating Non-Flash Media Files

www.it-ebooks.info

367

Importing
a Series of
Graphics
Files

Importing a Series of Graphics Files
At times, you may have a series of graphics files you want to import into Flash. Say,
for example, you have a series of images you took with a digital camera showing
a dog leaping through the air to catch a tennis ball. If you import all these images
into Flash, one per frame, you’ve got yourself an animation. (How herky-jerky or
smooth the animation appears depends on how many images you have; the more
images, the smoother the animation.)
If you give your graphics files sequential names like dog_01.gif, dog_02.gif, dog_03.
gif, and so on, Flash is smart enough to recognize what you’re trying to do and asks
if you want to import the entire series.
To import a series of graphics:
1. Make sure the names of the files you want to import end with sequential
numbers.
For example, file1.bmp, file2.bmp, and file3.bmp.
2. Choose File→Import→“Import to Stage.”
The Import dialog box you see in Figure 10-9 (top) appears.

Figure 10-9

When you tell Flash to
open the first in a series
of sequentially numbered
files (top), the program
asks if you’d like to
import the entire series
(bottom). This trick works
only if the numbers
appear at the end of the
filename just before the
extension and if you don’t
skip any numbers in the
series. And since Flash
begins importing with the
numbered file you chose,
it doesn’t go back and
pick up files containing
lower numbers.

368

flash CS6: The Missing Manual

www.it-ebooks.info

3. In the Import dialog box, click to select the first file in the series, and then
click Import.

Importing
a Series of
Graphics
Files

The confirmation dialog box you see in Figure 10-9 (bottom) appears.
4. Click Yes.
The confirmation dialog box disappears, and Flash imports the series of files.
In the timeline, you see one image (and one keyframe) per frame.
If you check the Library panel (Window→Library), you see that Flash has placed
each of the image files in the Library.
Design Time

Using Bridge as a File Manager
A Flash chapter that discusses different graphics file formats
isn’t complete without a mention of Bridge, Adobe’s program
for managing media files of all types (Figure 10-10). If you
got Flash as part of an Adobe Creative Suite collection, you
probably have Bridge installed on your computer. If you think
you’re perfectly happy managing files with Mac’s Finder or
Windows’s Explorer, you don’t know what you’re missing.
Bridge is much more powerful and customizable than either of
those handy and necessary utility programs. Because Bridge is
devoted to media files and because Adobe has the proprietary
key to some of the most important file formats (Photoshop and
Illustrator), Bridge is a more powerful graphics program than
your typical OS utility.
Like Finder and Explorer, you can select a file from a thumbnail
in Bridge, and then launch a program to open it. But Bridge is
much more versatile and flexible when it comes to organizing
media files and showing you the files you want at a given moment. Bridge tracks all sorts of information about the photos,
graphics, videos, and sound files on your computer, and you get
to decide exactly how those details are displayed. For example,
if you manage a large collection of photographs, Bridge excels
at managing photos’ descriptive metadata. (Cameras automatically store details about a photograph in the photo file. That

includes details like the date a picture was snapped or edited,
the exposure used, and the type of lens. As a photographer
or photo archivist, you can also add other metadata tags to
photos to make them easier to find in searches.) Bridge gives
you the tools to read the metadata in photos, and to find, sort,
and view photos based on those details.
There’s not enough room here to fully describe Bridge, but
here’s a short list of some of the things it can do:
• Organize media assets including photos, graphics, video,
and audio files.
• Show media files from different computer folders in a
single catalog.
• Preview Flash SWF files, while using the file catalog.
• Compare and preview most media files.
• Show/hide/find files based on criteria that you provide.
• Automatically import, name, and store photos from digital
cameras and card readers.
• Run automated tasks from programs like Photoshop.
• Manage the tags (metadata) embedded in photos and
other graphics files.

Chapter 10: Incorporating Non-Flash Media Files

www.it-ebooks.info

369

Exporting
Graphics
from Flash

Exporting Graphics from Flash
Sometimes you have artwork in Flash that you’d like to use in another program.
Perhaps it’s a single image that you want to place on a web page, or maybe it’s an
entire animation that you want to save in a format other than Flash’s SWF format.
In either case, it’s easy to save that artwork in a format that other programs can
use. As you might expect, Flash plays especially well with other Adobe programs
like Illustrator, Photoshop, and Fireworks.

Figure 10-10

Bridge is Adobe’s
program for managing,
organizing, cataloging,
and previewing media
files of all flavors. You can
customize the program to
show the details you need
for your media files.

370

flash CS6: The Missing Manual

www.it-ebooks.info

To Export graphics from Flash, go to File→Export, and then choose either Export
Image or Export Movie. Flash opens a box similar to Figure 10-11, where you can
name your file and choose its format. After you click Save, Flash displays another
box, where you can choose options specific to the movie or image file format you
selected. The complete details for exporting single images and animations from
Flash are covered in Chapter 20.

Exporting
Graphics
from Flash

Figure 10-11

You can export single
images and animated
sequences from Flash
and save them in file
formats compatible with
other programs. For
the complete details on
exporting, see page 669.

Chapter 10: Incorporating Non-Flash Media Files

www.it-ebooks.info

371

www.it-ebooks.info

chapter

Incorporating
Sound and Video

11

Y

ou can create almost any kind of picture or effect in Flash, but sometimes you
already have the perfect piece of sound or video…and it’s in another file. No
problem: Flash lets you pull in all kinds of other media files—like songs in MP3
files or QuickTime videos. Whether you’re showcasing your band’s performances,
creating an employee training website, or creating an online wedding album, Flash
has all the multimedia tools for the job.
When Flash was born, it was a big deal to have moving pictures on the Internet. Most
folks had pretty slow Internet connections, so it was a kick to see pictures move,
even if they were simple, cartoonish images. The same was true of even the most
basic sound effects. Today, we expect to use the Net to watch our favorite movies,
sports, and TV shows. Sounds have gone from beeps and bells to radio broadcasts,
audiobooks, and entire albums of music. Things have changed, and Flash is often
at the center of the revolution. Apple’s resistance to Flash on its handheld devices
has been an epic battle between two tech heavyweights. One reason it’s been so
controversial is the fact that so many websites use Flash to broadcast video.
As the number of people with fast Internet connections grew, web developers began
to use Flash video (FLV) to broadcast. Most of the web browsers in the world have
Flash capabilities—Adobe’s estimates are way above 90 percent. For you, the good
news is that when you wrap your audio and video offerings in Flash, you don’t have
to force your audience to download and install yet another plug-in. This chapter
explains how to add sound to your animations and how to edit that sound for the
best fit. You’ll also learn how to present video in a predesigned component that
gives the audience playback controls.

373

www.it-ebooks.info

Incorporating
Sound

Incorporating Sound
Flash lets you score your animations much the same way a filmmaker scores a movie.
You can add a soundtrack that begins when your animation begins and ends when
it ends. Or you can tie different sound clips to different scenes (series of frames)
of your animation. For example, say you’re creating an instructional animation to
demonstrate your company’s egg slicer. You can play music during the opening
seconds of your animation, switch to a voice-over to describe your product, and
then end with realistic sounds of boiling, peeling, and slicing to match the visual of
cooks using your product in a real-life setting.
You can also tie sounds to specific events in Flash. For example, say you want your
instructional animation to contain a button someone can press to get ordering information. You can tie the sound of a button clicking to the Down state of your button,
so when someone clicks your button, she actually hears a realistic clicking sound.
Note

Looking for the perfect sound effect? Start your search in the Sounds library. It’s crammed full of noises
made by animals, machines, and nature. To add a Library sound to your animation, choose Window→Common
Libraries→Sounds, and drag a sound to the stage.

Importing Sound Files
Before you can work with sound in Flash, you need to import a sound file either to
the stage, the Library, or both. Flash lets you import a variety of sound files, as you
can see in Table 11-1.
Table 11-1 Audio file formats you can import into Flash

374

File Type

Extension

Note

WAV sound

.wav

Works on Windows only, unless you have
QuickTime 4 (or later) installed; then you can
import .wav files into Flash on the Mac, too.

MP3 sound

.mp3

Works on both Mac and Windows.

Adobe Sound Document

.asnd

Sound files used by Adobe’s Soundbooth editing
and mixing program.

Audio Interchange File
format

aiff, .aif

Works on Mac only, unless you have QuickTime 4 (or later) installed; then you can import
AIFF files into Flash running in Windows, too.

Sound Designer II

.sd2

Only works on Mac, and only if you have
QuickTime 4 (or later) installed.

Sound-only QuickTime
movies

.mov, .qtif

Works on both Windows and Mac, but only if
you have QuickTime 4 (or later) installed.

Sun AU

.au

Works on both Windows and Mac, but only if
you have QuickTime 4 (or later) installed.

flash CS6: The Missing Manual

www.it-ebooks.info

Note

As you’re importing sound files, you may notice some differences between Windows and Mac versions
of Flash. For example, the order and the menu names vary slightly between the operating systems.

Incorporating
Sound

To import a sound file:
1. Select File→Import→“Import to Library.”
The “Import to Library” dialog box appears.
2. In the “File name” field, type the name of the sound file you want to import
(or, in the file window, click the file to have Flash fill in the name for you).
To see the different types of sound files you can import, you can either click
the drop-down menu at the bottom of the “Import to Library” dialog box, or
check out Table 11-1.
3. Click Open (“Import to Library” on a Mac).
The “Import to Library” dialog box disappears, and Flash places a copy of the
imported sound file into the Library (Figure 11-1). When you click to select any of
the frames in your timeline, the Sound subpanel appears in the Properties panel.

Figure 11-1

The visual representation Flash
displays when you select an
imported sound clip is called
a waveform. (As discussed
on page 382, you use this
waveform when you’re editing
a sound clip in Flash.) When
you click the Play button
that Flash displays along
with the waveform, you can
preview the sound. Flash puts
a copy of your imported file
in the Library and makes the
imported file available in the
Properties panel.

Sound in Library

Select sound

Chapter 11: Incorporating Sound and Video

www.it-ebooks.info

375

Incorporating
Sound

Adding an Imported Sound to a Frame (or Series of Frames)
You can tell Flash to play an animated sound beginning with any frame of your
animation. Depending on the settings you choose, Flash keeps playing the sound
file either until it finishes (regardless of whether your animation is still playing) or
until you tell it to stop.
This example shows you how to use the stream option to synchronize a short sound
clip of a fly buzzing with an animated sequence showing—what else?—a buzzing
fly. Then you’ll learn how to start and stop a second sound (the sound of the fly
becoming a frog’s lunch).
To add an imported sound to a series of frames:
1. Open the file 11-1_Add_Sound.fla .
This file includes a simple animated sequence with a frog and a fly. The library
already includes a couple of previously imported sounds. You can find this file
on the Missing CD page at www.missingmanuals.com/cds/flashcs6mm. (To see
a working version, check out 11-2_Add_Sound_done.fla.)
2. In the Layers window, click to select the topmost layer (fly).
Flash highlights the layer name, as well as all the frames in that layer.
3. Select Insert→Timeline→Layer.
Flash creates a new layer and places it above the selected layer.
4. Double-click the new layer name, and then type in sounds , as shown in
­Figure ­11-2.
Tip

You add a sound to a button the same way you see shown here, but with two exceptions: You typically
add a sound file for a button to the button’s third, or Down, frame (so that the sound plays when your audience
clicks down on the button) and you leave the synchronization option set to Event. To see an example, check out
the file 11-3_Button_Sound.fla on the Missing CD page.

5. Click the first keyframe in the newly created sounds layer.
In the Properties panel, Flash activates the Frame properties. With a sound file
in the Library, the Sound subpanel appears in the Properties panel.
6. In the Sound subpanel, click the Name drop-down menu, and then choose
the imported sound file fly_buzz.wav.
Alternatively, you can drag the sound file symbol from the Library to the
stage. Either way, the sound properties for the file appear at the bottom of the
Properties panel, and the waveform for the buzzing fly sound appears in the
soundtrack layer (Figure 11-3).

376

flash CS6: The Missing Manual

www.it-ebooks.info

7. In the Properties panel, click the Sync field, and then, from the first dropdown list that appears, choose Stream.

Incorporating
Sound

Your synchronization choices include these:
• Event. Tells Flash to give the sound its very own timeline. In other words,
Flash keeps playing the sound until the sound finishes, regardless of whether
or not the animation has ended. If you repeat (or loop) the animation in the
Controller, Flash begins playing a new sound clip every time the animation
begins again—with the result that, after a dozen or so loops, you hear a
dozen flies buzzing! Flash assumes you want your sound to behave this
way unless you tell it otherwise.

Sound in
library

Sound wave
pattern

Figure 11-2

Technically speaking, you
can add a sound clip to
any layer you like. But if
you’re smart, you’ll create
a separate layer for your
sounds (some folks even
create a folder with a
separate layer for each
sound). Creating separate
layers helps keep your
keyframes from becoming
so cluttered that you
can’t see everything
you’ve added to them.
It also helps you find
your sounds quickly in
case you want to make a
change down the road.

New layer for sounds

• Start. Similar to Event, but tells Flash not to begin playing a new sound if
the animation repeats.
• Stop. Tells Flash to stop playing the sound.

Chapter 11: Incorporating Sound and Video

www.it-ebooks.info

377

Incorporating
Sound

• Stream. Tells Flash to match the animation to the sound clip as best it can,
either by speeding up or slowing down the frames-per-second that it plays
the animation. This option is the one you want for lip-synching, when you’re
trying to match a voice-over to an animated sequence featuring a talking
head. Because choosing this option also tells Flash to stream the sound
file (play it before it’s fully downloaded in those cases where you’ve put
your animation on a website), someone with a slow connection can get a
herky-jerky animation.

Figure 11-3

It’s rare that the length
of a sound clip precisely
matches the length of
the animated clip to
which you want to assign
it. Here the sound clip
stretches only to Frame
14—but the layer showing
the buzzing fly stretches
further. You could cut and
paste the sound to fill
those last frames so that
the fly doesn’t become
uncharacteristically silent
all of a sudden, but Flash
gives you much easier
ways to match a sound
clip to a frame span:
streaming, repeating, and
looping.

Expanded layer

Sound file details

Tip

With your sound set to stream, you can preview your newly added sound on the stage, drag (scrub)
the playhead along the timeline. You can scrub forward or backward. To hear just the sound in a specific frame,
Shift-click the playhead over that frame. Flash keeps playing the sound until you let up on either the Shift key or
the mouse.

378

flash CS6: The Missing Manual

www.it-ebooks.info

Incorporating
Sound
Design Time

Using Sound Effectively
If you’ve ever watched a movie that had a breathtakingly
beautiful (or laughably cheesy) musical score, you’ve experienced the power of sound firsthand. Effective sound can
elevate a decent visual experience into the realm of art.
Ineffective sound can turn that same visual experience into a
nerve-shredding mess.
If you’re thinking about adding sound to your animation,
consider these points:
• Why do you want to add sound? If your answer is to add
emotional punch; to cue your audience aurally to the
interactive features you’ve added to your animation, like
buttons that click or draggable objects that whoosh; or to
deliver information you can’t deliver any other way (like a
voice-over explaining an animated sequence or realistic
sounds to accompany the sequence); then by all means
go for it. But if your answer is “Because I can,” then you
need to rethink your decision. Sound—as much as any
graphic element—needs to add to the overall message
you’re trying to deliver or it’ll end up detracting from
that message.

• Are you sure your audience will be able to hear your
sound? Sound files are big. They take time to download.
If you’re planning to put your animation on a website,
Flash gives you a couple of different options for managing
download time—but keep in mind that not everyone in
your audience may have a fast connection or the volume
knob on her speaker turned up. (For that matter, some
folks can’t hear. Check out the box on page 34 for tips on
providing hearing-impaired folks with an alternate way
of getting your information.)
• How important is it that your soundtrack matches your
animation precisely? Flash gives you options to help you
synchronize your sound clips with your frames. But you
can’t match a 2-second sound clip to a 10-second animated
sequence without either slowing down the sound or
speeding up the animation. If you want to match a specific
sound clip to a specific series of frames, you may need
to edit one (or both) to get the balance right before you
begin synchronizing them in Flash.

8. From the second drop-down menu next to the Sync field, choose Loop.
Loop tells Flash to repeat the sound clip until the timeline ends. Repeat lets you
tell Flash how many times you want it to play the sound clip (regardless of the
length of the frame span).
9. Test the soundtracked animation by choosing Control→Test Movie.
You hear a buzzing sound as the fly loops its way across the test movie.

Chapter 11: Incorporating Sound and Video

www.it-ebooks.info

379

Incorporating
Sound

Add a second, short sound clip to your animation to make the scene more realistic.
To do so:
1. In the “sound” layer, click Frame 20.
On the stage, you see the frog’s tongue appear (Figure 11-4).

Figure 11-4

Beginning sound clips in individual keyframes let you change the
soundtrack at the exact moment your visuals change. Here you see
the frog’s tongue appear in Frame 20 of the frog layer, and it doesn’t
change until Frame 22 (which contains the final keyframe of the animation). So to match the “zot!” sound to the tongue action, you want to
tell Flash to start playing the zot.wav file on Frame 20 and stop playing
it on Frame 22.

2. Select Insert→Timeline→Blank Keyframe, or press F6.
Flash places a blank keyframe (a hollow circle) in Frame 20.
3. With Frame 20 selected, in the Sound subpanel, click the arrow next to
Name, and then, from the drop-down list that appears, choose zot.wav.
Flash places the waveform for the sound file into the timeline, beginning with
Frame 20.
Tip

If you need a better view of the sound’s waveform in your timeline, right-click the layer with the sound,
and then choose Properties. The Properties panel opens. At the bottom, set the layer height to either 200% or
300%, as shown in Figure 11-3.

380

flash CS6: The Missing Manual

www.it-ebooks.info

4. In the Properties panel, click the arrow next to Sync, and then, from the
drop-down list that appears, choose Start. Then, in the soundtrack layer,
click to select Frame 22.

Incorporating
Sound

On the stage, you see a very satisfied frog (Figure 11-5).

Figure 11-5

Because the synchronization option for the “zot!” sound was set
to start in Frame 20, Flash automatically stops playing the zot.wav
sound file when the animation ends. Still, it’s good practice to tell
Flash specifically when you want it to stop playing a sound file. You’ll
be glad you did when you come back to the animation a week or
two later, because you won’t have any cleanup to do before you add
additional sounds to the timeline.

5. Select Insert→Timeline→Blank Keyframe or press F6.
Flash places a blank keyframe (a hollow circle) in Frame 22.
6. In the Sound subpanel, click the Name drop-down menu, and then choose
zot.wav. Click the arrow next to Sync, and then, from the drop-down list that
appears, choose Stop.
You’re done!
7. Test the new sound by choosing Control→Test Movie.
You hear a buzzing sound as the fly loops its way across the test movie. But as
the frog’s tongue appears, the buzzing stops and you hear a satisfying “zot!”
Tip

If you don’t hear any sounds, select Control and see whether the checkbox next to Mute Sounds is turned
on. If it is, click it to turn it off.

Chapter 11: Incorporating Sound and Video

www.it-ebooks.info

381

Incorporating
Sound

Editing Sound Clips in Flash
You can change the way your imported sound clips play in Flash. You can’t do
­anything super-fancy, like mix down multiple audio channels or add reverb—Flash
isn’t a sound-editing program, after all—but you can crop the clips, add simple
fade-in/fade-out effects, and even choose which speaker (right or left) your sounds
play out of.

Design Time

Stock Images, Sounds, and Video Clips
If you’re using Flash to create stuff for work—presentations,
tutorials, web advertisements, marketing materials, or what
have you—then you or someone else on your team is probably
going to be creating all your content from scratch. But there’s
a place in every Flash fan’s toolkit for stock media: generic
images, sound clips, and video clips that you purchase (or,
more rarely, get for free) from companies whose job it is to
produce such items.
Typically, you pay a modest fee to use stock images, sounds,
and video clips. Sometimes, you also pay a royalty fee based on
the number of times you use a stock element in your animation.
If you’re using Flash to jazz up your personal website, you
may find that stock media is just what the doctor ordered: You

get something cool that you can use for a relatively low price
without having to invest time and money buying audio and
video equipment or taking drawing lessons.
But even professional animators have been known to rely on
stock media occasionally because it lets them test out a concept
quickly and cheaply.
Places to find stock images, sound clips, and video clips abound
on the Web. Here are a few you might want to check out:

www.freestockfootage.com
www.wildform.com/videolibrary
www.flashkit.com/soundfx
www.gettyimages.com

First, import the sound clip you want to edit, as described on page 374. To edit it,
follow these steps:
1. In the timeline, click any frame that contains a portion of the sound clip’s
waveform.
Flash activates the sound options you see in the Properties panel.
2. In the Properties panel, click the drop-down box next to Effect, and then
choose from the following menu options:
• Left channel. Tells Flash to play the sound through the left speaker.
• Right channel. Tells Flash to play the sound through the right speaker.
• Fade left to right. Tells Flash to begin playing the sound through the left
speaker and then switch midway through the clip to the right speaker.
• Fade right to left. Tells Flash to begin playing the sound through the right
speaker and then switch midway through the clip to the left speaker.
• Fade in. Tells Flash to start playing the sound softly, and then build to full
volume.

382

flash CS6: The Missing Manual

www.it-ebooks.info

• Fade out. Tells Flash to start playing the sound at full volume, and then
taper off toward the end.

Incorporating
Sound

• Custom. Tells Flash to display the Edit Envelope window you see in
­Figure ­11-6, which lets you choose the in point (the point where you want
Flash to begin playing the sound) and the out point (where you want the
sound clip to end). You can also choose a custom fading effect; for example,
you can fade in, then out, then in again.

Envelope handles

Time in

Time out

Click to edit sounds

Show seconds Show frames

Figure 11-6

The sound file you see
here is a two-channel
(stereo) sound, so you see
two separate waveforms,
one per channel. To crop
the sound clip, drag the
time in and time out
control bars left and right.
Flash ignores the gray
area during playback and
plays only the portion
of the waveform that
appears with a white
background, so here Flash
plays only the second
half of the waveform. To
create a custom fading
effect, you can drag
the envelope handles
separately. These settings
tell Flash to fade out on
the left channel while
simultaneously fading
in on the right channel.
To preview your custom
effect, click the Play icon.

Tip

Clicking the Property panel’s Edit button displays the same Edit Envelope window you see when you
choose the Custom option.

If you want to do more extensive sound editing, you need a separate program like
Adobe’s Audition. It comes with some, but not all, of the Creative Suites. If you need
a sound editor but have cash flow concerns, check out Audacity (http://audacity.
sourceforge.net). It’s free and works on Windows, Mac, and Linux computers.

Chapter 11: Incorporating Sound and Video

www.it-ebooks.info

383

Incorporating
Video

Incorporating Video
In the past years, Flash has become the video champion of the Internet. You find
Flash video on sites from YouTube to Hulu to CNET. The major networks ABC, CBS,
and NBC also use Flash video. It wasn’t long ago that a battle royale raged among
Microsoft, Apple, and RealMedia for web video bragging rights. Flash was seldom
mentioned in the contest; after all, it was just for making little animations. But, like
the Trojans with their famous horse, Flash Player managed to sneak onto about 90
percent of today’s computers. And guess what? Flash does video, too. It’s easy for
you to add video to a web page or any other project by adding it to a Flash animation. It’s easy for your audience, too, since they don’t have to download and install
a special plug-in to watch your masterpiece. Flash is also fueling the surge in video
blogging, or vlogging—adding video clips to plain-vanilla blogs. You can find out
more at sites like http://mashable.com/2009/10/09/video-blogging.
Tip If you’re watching a video on the Web and wondering whether the site uses Flash to publish it, right-click
(Control-click) the video. If you see “About Flash Player” in the shortcut menu, you know Flash is working behind
the scenes.

May as well face it: Sometimes video footage is more effective than even the most
well-crafted animation. For example, video footage showing a live product demonstration, a kid blowing out the candles on his birthday cake, or an interview with
a CEO can get the point across quickly and directly.
Tip

Neither Flash nor the Adobe Media Encoder let you do extensive editing. At best, they let you crop a
segment out of a larger video clip. If you’re interested in piecing together different video segments to create
a movie or a scene, turn to a specialized video editing program like Adobe Premiere or Apple Final Cut Pro. If
your needs are more modest, you can probably get by with Premiere Elements, Apple’s iMovie, or Microsoft’s
MovieMaker.

There are two basic steps to creating Flash video:
• Convert your video to the Flash video file format: .flv or .f4v. Before you
can add video to your Flash animation, you have to convert it to a special file
format. The process, which video techies call encoding, creates small files that
can travel quickly over the Internet. Flash comes with the Adobe Media Encoder,
which lets you convert most types of video into Flash video format. The next
section describes the encoding process.
• Import your video into a Flash animation. Once your video clip is in Flash video
format, you can import it into your project. Flash stores a copy of the video
in the Library, and you can drag the video to the stage like any other graphic.
It’s remarkably easy to add video playback controls to your Flash video. If you
have a video that’s already in the Flash video format (.flv or .f4v), you can jump
ahead to page 396 to learn how to import it into your Flash file.

384

flash CS6: The Missing Manual

www.it-ebooks.info

Encoding: Making Flash Video Files
Video files are notoriously huge, which means they take a long time to travel the
Internet. To solve this problem, Flash uses special video formats that shrink or
compress video into smaller files. The quality might not be what you’d expect from
your 60-inch LED HDTV, but it’s certainly acceptable for web delivery. The process
of converting a video from its original format to Flash video (.flv or .f4v) is called
encoding. If you already have a file in the Flash video format, or if someone else is
responsible for this part of the job, you can jump ahead to page 396.

Incorporating
Video

Up to Speed

Overcompression: Too Much of a Good Thing
The final destination for many Flash projects is a website. One
of Flash’s great virtues is the ability to present animations,
video, and sound over the Web without making the audience
wait while humongous files travel the Internet. Flash makes big
files small by compressing them. It uses different compression
methods for images, sound files, and video files. Some types
of compression actually degrade the image, sound, or video
quality. It’s a tradeoff, but it’s the best way to create really
small files that travel the Net quickly. The idea is to keep as
much information as is needed to maintain acceptable quality and throw out the extra bits. These types of compression
schemes are called lossy formats because they lose data and,
as a result, lose quality. Examples of lossy formats are JPEG
photo files, MP3 audio files, and FLV or F4V Flash video files.
While compression is a good thing because it keeps the file
size down and helps web-based Flash animations load quickly,
it’s possible to overcompress a file. One way that happens is
when you compress a file that’s already been compressed.

JPEG and save it five times using 50% quality—you’ll find that
the last copy is much poorer in quality than the first. You can
do the same thing to MP3 audio files and video files. Ideally,
it’s best to bring uncompressed files into Flash, and then let
Flash do the compression once, when it publishes an SWF file.
For audio files, that means it’s best to use uncompressed AIFF
files on a Mac or WAV files on a PC. For video files, use video
that hasn’t already been compressed. On a PC, you can use
uncompressed AVI files; on a Mac, use uncompressed QuickTime
MOV files. If you’re working in another video editing program
and there’s an option to encode directly to Flash Video (.flv
or .f4v), choose that. Then you can skip the step with Media
Encoder. With video, the compression takes place when you
use the Adobe Media Encoder to make .flv or .f4v files. So, if
you just shot the video with your camcorder, feed the raw
.dv file to Adobe Media Encoder for the best results. If the file
is coming from someone else, ask him to give you the best
quality possible.

If you repeatedly compress photos, sound files, and video
files, you can end up with media mush. For example, take a

Using the Adobe Media Encoder, you can encode any of the common video files
listed in Table 11-2. As explained in the box on page 385, it’s best to start off with a
high-quality, uncompressed video. You can add prebuilt controls that let your audience control the playback and adjust the volume. You can even apply effects to a
video clip in Flash; for example, skewing and tinting.

Chapter 11: Incorporating Sound and Video

www.it-ebooks.info

385

Incorporating
Video

Table 11-2 Some of the most popular video file formats you can convert to Flash Video with Adobe Media Encoder
File Type

Extension

Note

QuickTime movie

.mov

The audio/video format Apple’s video player uses.
A free version of QuickTime player is available for
both Macs and PCs.

Audio Video
Interleaved

.avi, .wav

Microsoft audio/video formats.

Motion Picture
Experts Group

.mpg, .mpeg

MPEG-1 is an early standard for compressed audio
and video media.

.mp2, m2v

MPEG-2 is what standard DVDs use.

.mp4, .m4v, .m4a,
.mts

MPEG-4 Part 2 is used by the DivX and Xvid
codecs.

.264

MPEG Part 10 is used by QuickTime 7 and the
H.264 codec.

Digital video

.dv

Many camcorders use this digital video format.

Windows Media

.asf, .wmv, .wma

These Microsoft formats are for compressed audio/
video files.

Flash video

.flv, .f4v

Flash’s video format employs a lossy compression
technique to produce very small files suitable for
broadcast over the Internet.

The hardest part of encoding video files is the wait. It takes time to encode large
video files, but it’s getting better with today’s faster computers. Flash CS6’s installer
automatically puts Adobe Media Encoder on your computer. Fire it up, and it looks
like Figure 11-7. There are two basic things you need to do: Locate the file you want
to encode, and give Adobe Media Encoder instructions about how to process it.
Here are the steps:
1. In Adobe Media Encoder, click the + button in the upper-left corner.
Flash displays a standard Open window similar to the one you use to open a
Flash document.
2. Navigate to the file on your computer that you want to encode, and then
click Open.
The name of the video file appears in the Queue panel.
3. Under Format, choose the Flash video format: FLV or F4V.
Choose F4V if your target is one of the newer smartphones or tablets. The
FLV format is useful for websites with a slower transmission rate. It works with
Flash Player 8 and later. The F4V formats show better quality video in smaller
files, but they work only in Flash Player 9 and later. You can get an idea of the
suitability of a format by examining the available presets, described in the next
step. Flash gives you these presets (predetermined settings) because choosing

386

flash CS6: The Missing Manual

www.it-ebooks.info

all the settings to encode video can be ridiculously complicated. Even when
you choose a file format like FLV or F4V, there are still dozens of settings you
can choose based on how the video is to be distributed and viewed. Adobe
helps you wade through the swamp of video settings by providing presets for
common video needs.

Incorporating
Video

Figure 11-7

Adobe Media Encoder is a
multipurpose conversion
tool that comes with
several different Adobe
products, including Flash.
You add media files to the
queue and tell Flash what
type of file you want it to
produce.

4. Under Preset, choose a preset format that matches your project.
The Media Encoder has what may seem like a bewildering number of presets,
as shown in Figure 11-8. The names are descriptive: “Phone & Tablet wifi,” “PC &
TV High,” “16x9.” Experienced videographers may want to tweak the encoding
settings or trim the video clip before it’s encoded.
5. Under Output, you can change the name or location of the file.
If you don’t make any changes under Output, then the encoded file appears
in the same folder as the original video file. It has the same name, but will end
with either .flv or .f4v.
6. Click the Start Queue button in the upper-right corner.
Adobe Media Encoder starts to encode your file. A bar tracks the progress
(Figure 11-9). If you have several files to encode, then add them all to the queue
before you hit Start Queue. The encoder makes no changes to the original file.
When the encoder is finished, a checkmark appears next to the file in the queue,
and you have a new file with an .flv or .f4v extension.

Chapter 11: Incorporating Sound and Video

www.it-ebooks.info

387

Incorporating
Video

Tip

Want to see some details about the encoding process while you wait? Click the Current Encode tab near
the bottom of the window.

Figure 11-8

When you first use Adobe Media
Encoder, it’s best to use one
of the presets that match your
project. Later, you may want
to create your own settings by
clicking Edit Export Settings.
The presets shown here are for
the F4V format.

Batch encoding to save time
No matter how you cut it, encoding video takes time and can slow down your computing workflow. If you have lots of video to encode, prepare several video clips for
encoding using the steps described in this section. You can add several encoding
jobs to the encoding queue and then run them all at the same time when you click
Start Queue. Why not do all that encoding overnight or when you head out to lunch?

One way to encode batches of video is to create a watch folder. In essence, you tell
the media encoder to automatically encode any video file that’s dropped in your
watch folder. If the Watch Folders panel isn’t visible, go Window→Watch Folders.
Click the + Add Folder button and choose one or more folders. You choose the file
format and preset for each folder individually, making it possible to automatically
encode to different settings. Once your folders are set up, make sure that the Auto
Encode Watch Folders box at the top of the Queue panel is checked. At that point
all you need to do to encode a video is drag it to one of your watch folders.

388

flash CS6: The Missing Manual

www.it-ebooks.info

Encoding Part of a Video Clip
There are a few reasons why you might want to dig into Adobe Media Encoder’s
export settings before you encode a file. One of the most common scenarios is that
you have a long video and you need to bring only a small part of it into your Flash
project. To do so, follow the encoding steps that begin on page 386. When you reach
step 4, instead of choosing one of Adobe’s presets, right-click (Control-click) the
filename of your video and choose Export Settings. The next thing you see looks like
a video editing window, shown in Figure 11-10. You can’t do extensive editing in this
window like you can with Adobe’s Premiere or Apple’s Final Cut, but you can select
a portion of a video clip to encode. Encoding is pretty slow business, and there’s no
reason to waste time converting video that you won’t use.

Incorporating
Video

Figure 11-9

While the Media Encoder
processes your file, it
keeps you updated with a
progress bar and the estimated remaining time.
The video also appears in
a preview window.

In the upper-left corner of the Export Settings window is a small preview screen.
Below the screen is a timeline with a playhead similar to Flash’s. Drag the playhead
to see different frames in your video. The two markers in the timeline below the
playhead are called the in point and the out point. You use these two points to select
a segment of the video. As you drag either point, the preview window shows the

Chapter 11: Incorporating Sound and Video

www.it-ebooks.info

389

Incorporating
Video

image (or video frame) for that point in time. A highlight appears on the selected
segment of video.
If you want to use one of Adobe’s encoding presets, you can choose one in the
upper-right corner of the Export Settings window. (If you’d rather tweak the export
settings on your own, see page 390.) Click OK, and you’re back at the Media Encoder,
where you can change the name and location for your encoded file, as described
in step 5 on page 387.

Preview source or output

Export video and/or audio

Figure 11-10

You can’t do extensive
editing in Adobe Media
Encoder, but you can
select the portion of a
video file that you want
encode. The program
also provides tools to
resize the entire video,
to select portions of the
image, and to fine-tune
the video codec used to
encode your Flash video
file.

Playhead

In point

Out point

Resize video

Resizing and Cropping a Video Clip
When you choose an encoding preset in Adobe Media Encoder, the preset determines
the dimensions of the video image. For comparison, a wide-screen TV might show a
high-definition image that’s 1920 pixels wide by 1080 pixels high. When you choose
the “Web–512x288” setting, the preset encodes an image that’s 512 pixels wide by
288 pixels high. When you’re in Export Settings, you can choose any size you want.
Understandably, large dimensions, like those for that hi-def TV, mean much larger
files. If your video is traveling the Internet, you can dramatically reduce the travel
time by reducing the video dimensions. The 512 x 288 size of the “Web 512x288”
preset is a nice, compact size for the Net. If you know everyone in your audience
is going to have a fast cable or DSL connection, you can go ahead and bump the
dimension up to a larger dimension.

390

flash CS6: The Missing Manual

www.it-ebooks.info

After you’ve opened Adobe Media Encoder and added a video to the encoding
queue, as described on page 386, follow these steps to choose a custom size for
the encoded video:

Incorporating
Video

1. Instead of choosing one of Adobe’s presets, right-click (Control-click) the
video filename and choose Export Settings.
The Export Settings window appears, where you can fine-tune many aspects
of the encoding process.
2. On the right side of the Export Settings window, click the Video tab.
This tab displays details about frame size, frame rate, and bitrate, as shown in
Figure 11-11.

Resize check box

Preview source or output

Figure 11-11

Open Adobe Media Encoder’s Export
Settings window to choose a custom size for your encoded videos.
Click the Constrain Width/Height
button to maintain the picture’s
original proportions.
Width
Constrain
width/height
Width

3. Click the Resize Video checkbox.
Once you’ve checked the Resize Video box, the encoder uses the size dimensions entered in the next step.
4. Change the height and width dimensions.
Most of the time, you want to maintain your video’s proportions to keep the
images from looking too tall or too fat. To constrain the proportion, make sure
the Constrain Width/Height button is depressed. Then you can enter either a
width or a height dimension, and the other dimension automatically sizes itself.

Chapter 11: Incorporating Sound and Video

www.it-ebooks.info

391

Incorporating
Video

5. Click OK.
The Export Settings window closes, and you see the Adobe Media Encoder
queue.
Cropping a video while encoding
Cropping a video is just like cropping a photo. Instead of resizing the entire image,
you select a portion of the image that you want to view. With moving pictures,
it’s a little trickier, because the image is changing at multiple frames per second.
The crop that looks great for the first 20 seconds of a clip might not look as good
a minute later. Also keep in mind that when you crop a video, you’re changing the
dimensions and the quality of the image. When you crop into an image too far, you
end up with a blurry picture.

To crop your video, follow the preceding steps to open the Export Settings window
in Adobe Media Encoder. Above the preview window, click the Crop button. A frame
appears around the video image with handles at the corner. Drag the handles to
frame the portion of the picture you want to keep, as shown in Figure 11-12. A tooltip
shows the dimensions of your video image in pixels. You can click the Crop dimension numbers and then type new values, but keep in mind that these numbers are
showing the number of pixels being trimmed from the edges of the picture.

Crop button

Crop dimensions

Crop box

Figure 11-12

Drag the handles in the
crop frame to select the
portion of the video
picture you want to keep
in your encoded video.

Incorporating Sound

392

flash CS6: The Missing Manual

www.it-ebooks.info

Adding Cue Points to Your Video
Flash lets you place cue points (markers) in your video clips, which you can then
use to trigger other actions in your Flash animation. For example, perhaps you’d
like to show text on the screen at a certain point in the video, or perhaps you’d
like to trigger a certain sound or narration track. You give cue points names—like
“­narration”—as you create them. Then you use ActionScript code to identify the cue
points and trigger the actions you want performed. (There’s more on ActionScript
starting in Chapter 12.)

Incorporating
Video

You add cue points in Adobe Media Encoder, using the same Export Settings window
that you use to resize or crop your video.
1. In Media Encoder, select Edit→Export Settings to open the Export Settings
window.
You see a preview window showing your video, with a timeline underneath, as
shown in Figure 11-13. Just as in Flash, the timeline has a playhead. Drag the
playhead to a point in the timeline, and you see that frame in your video. Below
the preview, there are two panels: one for cue points and one for parameters.

Figure 11-13

You use cue points to place
markers in your video. With
the help of ActionScript, you
can use the cue points to trigger events in your animation.

Add Cue Point
Delete Cue Point
Cue Point Name

Cue Point Type

Chapter 11: Incorporating Sound and Video

www.it-ebooks.info

393

Incorporating
Video

2. Drag the playback head to the point in your video you want to mark.
The video image changes as you move the playback head.
3. Click the + button to add cue points; click the – button to remove them if
you make a mistake.
Flash creates a cue point in the list and gives it a name, a time setting, and a
type. The time setting is determined by the playback head’s position in the
video clip. In the next steps, you’ll change the name and type of the cue point.
4. Click the name, and then type a descriptive name for your cue point.
Flash names all cue points “cue point” when it creates them. It’s up to you to
type something more descriptive.
5. Choose the type of cue point you want to create—Event or Navigation. If
you’re an ActionScript hotshot, set parameters.
Event cue points trigger an action when the video reaches them. Navigation
cue points let you locate and play certain portions of your video. Both Event
and Navigation cue points require ActionScript to work their magic.
6. Click the + button to add parameters to your cue point; click the – button
to remove them if you make a mistake.
Parameters are key-value pairs that programmers use to store and retrieve
information. So the parameter values are available to ActionScript programs
when the video reaches the cue point.
7. Repeat steps 2–6 to add more cue points, or click OK to go back to the
encoder queue.

Other Techniques for Reducing Video File Sizes
No one likes to wait while a web page loads. So when you’re publishing video on
the Web, life is a constant quest to shrink the size of your video files so they’ll travel
the Net faster. In addition to the encoding tricks already mentioned, here are some
tips for shrinking those files while still providing a good video experience. Some of
these techniques are related to creating the video, and others are related to Adobe
Media Encoder and Export Settings.
Video techniques for reducing file sizes
• Use a tripod and keep pans and zooms to a minimum. Steady shots make for
better compression results.

• Start out with good-quality video. When possible, use uncompressed video
before you encode to Flash video. If your video has blips and glitches (called
“noise” by videographers) before you encode it, the video file ends up bigger.
• Avoid fancy effects and transitions. Special effects like fancy wipes or spiral
transitions don’t work as well in Flash video as a plain cut from one scene to
the next. Even dissolves add to the size of your video file.
394

flash CS6: The Missing Manual

www.it-ebooks.info

Encoding techniques for reducing file sizes
• Reduce the dimensions of the video. It’s great to have a high-resolution
video that looks beautiful when the audience clicks the full-screen button. But
if it takes too long to download over the Internet, you won’t have an audience.
As described on page 390, you can change the dimensions of your video to
reduce the file size.

Incorporating
Video

• Consider using a lower frame rate. You can set the frame rate in the Video
tab of the Export Settings window. The standard frame rate for American TV
is 29.97 frames per second (don’t ask about the decimal; it’s a long story).
The standard for film is 24 fps. Test your videos at 18, 15, or even 12 fps to see
whether the quality/file size tradeoff is worth it.
• Use mono sound where possible. If your video is a musical performance, it
may be important to have stereo sound, but otherwise you can save precious
file space by clicking the Audio tab in the Export Settings window and then
choosing Mono.
• Use a lower bit rate for sounds that are mostly voices or don’t require high
fidelity. Go to the Audio tab in Export Settings, and then use the drop-down
menu to reduce the bit rate for sound. The encoder has bit rates from 16 to
256. A bit rate of 64 works for many Flash videos. You can go even lower if the
sound track is primarily voice, with no music.

Preparing to Import Video Files
It’s obvious that before you can import a video clip into Flash, you need to know
where it is: on your computer or somewhere in the Net. It’s also important to know
up front how you expect to link the video file to your finished Flash animation file at
runtime: by embedding the video file directly into your Flash timeline, or by linking
to the video file at runtime, and so on.
This cart-before-the-horse consideration isn’t quite as odd as it seems at first blush.
Video files tend to be so huge that you don’t usually want to embed them directly
into your Flash document the way you embed graphics (page 351) and sound files
(page 374). The process of setting up your Flash animation and Flash video files for
the public to view them is called deploying. First you tell Flash where to find the file at
design time, and then you tell Flash how the video will be accessed by your audience.
Note

Chapter 20 tells you all you need to know about publishing Flash files, including Flash files containing

video clips.

Your deployment options include the following:
• Progressive download from a web server. This option is one of the most popular because all you need to publish video on the Internet is a regular, gardenvariety web server. Your Flash animation files (SWF) and Flash video files (FLV,
F4V or mp4) are stored on the server. It’s called progressive because the video
starts playing for your visitors before the entire video file is downloaded. The
Chapter 11: Incorporating Sound and Video

www.it-ebooks.info

395

Importing
Video Files

downside to this option is the fact that the entire video is eventually stored on
your visitor’s computer, giving her the ability, if she’s clever, to make a copy of
your video. If you aren’t comfortable with bootleg copies, then consider one
of the next two options.
• Stream from Flash Video Streaming Service. This option is the most popular
way to show videos without letting others copy them. Basically, you hire a
company to stream your video from their computers to your website visitors.
Your visitors never have a complete copy on their computers, making it more
difficult (but not impossible) for them to swipe it. You can find a long list of
companies that provide this service on Adobe’s website (www.adobe.com/
products/flashmediaserver/fvss/). These companies have a program called
Flash Media Server on their computers, which detects the speed of your web
visitor’s Internet connection and sends the video at a speed it can handle. Your
visitor gets a higher-quality video experience, and you get added security for
copyrighted material. All you have to do is pay for the service.
• Stream from Flash Media Server. This option is similar to the second option
above, except that you (or, more likely, your organization’s IT department) buy
the server hardware, install the server software, and maintain the resulting
system. This option is best if you have deep pockets and don’t mind the hassle
of maintaining a media server. Flash Media Server options start at about $250
and go up from there depending on the features.
Note If you have your own web server and want to dip your toe in the Media Server water, you may want
to investigate Red5, an open source (free) Flash Server (http://osflash.org/red5).

• A mobile device video bundled in SWF. Use this option in combination with
Flash’s templates for consumer devices and handsets to create animations for
small handheld devices. This option is used to place video inside SWF files used
with phones and handsets.
• Embed video in SWF and play in timeline. This option represents the simplest
way to embed video into your animation, but it works only for very short video
clips (somewhere between 5 and 10 seconds or less). Any more than that, and
the size of your animation file grows so large that you have trouble editing the
file in Flash and your audience has trouble viewing it in their Flash Players.

Importing Video Files
Once you have access to a video in the Flash video format (.flv or .f4v), you’re ready
to begin importing the video file into Flash. When you begin this process, your video
can be on your computer or it can be on the Web, where it’s served up by a Flash
Media Server. In this section, you see step-by-step examples for both scenarios.

396

flash CS6: The Missing Manual

www.it-ebooks.info

Importing a Flash Video File Stored on Your Computer
When you have a video on your computer in one of Flash’s video formats (.flv, .f4v,
or .mp4), it’s easy to import it into your Flash project. By making a couple of choices
along the way, you can give your Flash audience standard controls to play and
pause your video, and adjust its sound. To work on the following exercise, you can
download the video 11-4_Building_Implode.flv from the Missing CD page at www.
missingmanuals.com/cds/flashcs6mm.
Note

Importing
Video Files

If you need to convert a video to one of the Flash video formats (.flv, .f4v, or .mp4), see page 385.

When you add video to your Flash project using this method, Flash creates a link
between the Flash file and your project. Even after you publish a Flash .swf file for
final distribution, the Flash file and your video file remain separate. If the project
is for a website, you need to place both the Flash .swf file and the video file (.flv or
.f4v) on the website, ideally in the same folder. To make things easy for yourself, it’s
best to put your Flash video in the same folder where you save your Flash work file
(.fla) and publish your Flash animation (.swf).
1. Create a new Flash document, and then save it.
It’s always good to name and save your Flash projects at the beginning. It’s
even more helpful when you work with external video files, as you do in this
project. A name like building_bye_bye.fla might be appropriate for this one.
2. Place the Flash video 11-4_Building_Implode.flv in the same folder where
you save your Flash file (.fla) and your published Flash file (.swf).
This step makes it easier for Flash to create a link to the video file. After publishing the .swf, as long as both files are located in the same folder, the link between
the two will continue to work.
3. In Flash, select File→Import→Import Video.
The Import Video dialog box appears, as shown in Figure 11-14, with several
options you can choose using radio buttons. The question is: Where is your
video file? Either it’s on your computer, or it’s stored on a web server with Flash
Media Server software.
4. Select “On your computer.”
Flash wants to know where the file is right now, so it can load it into your project.
At this step, don’t jump ahead and start thinking about where the final project
is going to be published.
5. Click the Browse button, and then locate and select your video file.
Flash displays a standard Open window similar to the one you use to open a
Flash document. It should be easy to locate 11-4_Building_Implode.flv, because
it’s in the same folder as your Flash file. After you select the file, its name and

Chapter 11: Incorporating Sound and Video

www.it-ebooks.info

397

Importing
Video Files

path show up under the Browse button. Now that Flash knows where the file is
located, it can work with the video.

Figure 11-14

The large Import Video
dialog box walks you
through adding video to
your Flash project. In the
first step, shown here,
you answer questions
about the location of the
video file and how you
want to use it in your
project.

Note

The video of the imploding building is copyrighted and was provided by www.freestockfootage.com.

6. Tell Flash how you want to work with the video by clicking the radio button
labeled: “Load external video with playback component.”
• Load external video with playback component creates a link between
your Flash file and an external video file. When Flash gets a command to
play the video, it finds and plays the external file.
The other two options are used less frequently, but they’re useful for special
cases:
• Embed FLV in SWF and play in timeline. This option embeds video into
your animation. Each frame of video becomes a frame in the Flash timeline.
The result is that the Flash file gets huge very fast, and your audience will
be frustrated trying to download and play the video. Don’t try this option
with clips any longer than 5 or 10 seconds.

398

flash CS6: The Missing Manual

www.it-ebooks.info

• Import as mobile device video bundled in SWF. Use this option in combination with Flash’s templates for consumer devices and handsets to create
animations for handheld devices (a topic not covered in this book).

Importing
Video Files

7. Click Continue to move to the next Import Video step.
The Import Video box changes to show skinning options for your video. A skin
is a sort of container that adds Play/Pause/Stop type controls to your video,
as shown in Figure 11-15.

Figure 11-15

There are two basic types of skins for
Flash video. “Over” skins like the one
shown here sit on top of the video
image, hiding some parts of the picture.
“Under” skins are completely outside
the image.

8. From the Skin drop-down box, choose SkinOverAll.swf.
Use the drop-down menu to choose an Adobe predesigned skin, as shown in
Figure 11-16. Adobe supplies a whole slew of skins with different combinations
of controls. SkinOverAll includes all the controls, so this exercise shows you
what’s available. When you tackle a real-world project, you may find you don’t
need quite so many gadgets on your videos.
There are also options to provide no controls at all (usually not the best option)
or to use a custom-designed skin. For example, you might want to put your
client’s logo on the video skin as another way to establish his brand.
9. Click Next.
Flash displays the Import Video: Finish Video Import dialog box you see in
­Figure 11-17. The details shown may not seem that important until it’s time to publish your Flash project on a web page. Here’s a translation for each of the lines:

Chapter 11: Incorporating Sound and Video

www.it-ebooks.info

399

Importing
Video Files

• The video you are using is located at: This line lists the folder where the
video file lives. If your final project is going on a web server, you have to
give both 11-4_Building_Implode.flv and building_bye_bye.swf to your
webmaster.
• The video will be located at: (relative paths are relative to your .swf). This
line explains the relationship of your files when you publish your Flash animation. It shows you the path that has to exist between the .swf and your
video file ( 11-4_Building_Implode.flv). In this case, there is no path (just a
filename) because you’re planning on keeping both the .swf and the .flv in
the same folder, whether it’s on your computer or a web server.

Figure 11-16

Give your audience
snazzy video controls by
simply choosing from the
Skin drop-down menu.
Use the buttons in the
lower-right corner of the
Import Video dialog box
to move forward (Next)
or backward (Back) in the
Import Video process. Or
you can give up entirely
(Cancel).

• A Flash video component will be created on the stage and configured
for local playback. This line simply tells you that your video and whatever
skin you selected will appear on the stage in your Flash document.
• The video component uses a skin that has been copied next to your
.fla. This file will need to be deployed to your server. These sentences
are a roundabout way of saying that the skin for your video is stored in a
separate .swf file. Flash places it in the same folder on your computer with
­ uilding_bye_bye.fla. This skin has a name similar to the name you chose
b
in step 8. In this case, it’s named SkinOverAll.swf, and it has to be in the

400

flash CS6: The Missing Manual

www.it-ebooks.info

same folder with building_bye_bye.swf and 11-4_Building_Implode.flv
when you publish your Flash animation.

Importing
Video Files

• Before exporting and deploying your .swf you may need to… If building_
bye_bye.swf and 11-4_Building_Implode.flv aren’t in the same folder when
you put your animation on a web server, you need to change the path in
the video component. For more on video components, see the next section, page 403.

Figure 11-17.

The last details displayed
in the Import Video dialog
box deal with the location
of files. This information
is helpful when it’s time
to publish your Flash
project on a web page.

10. Click Finish.
The “Import Video: Finish Video Import” dialog box disappears. As promised,
you see the video player on your stage along with the skin (video controls). If
you embed the video, rather than load it as described in this example, there’s
also a copy of the video in the Library, as shown in Figure 11-18.
11. Press Ctrl+Enter (⌘-Return on a Mac) to test your Flash project and view
the video.
In the Flash animation, you see your video running. Using the skin controls, you
can start and stop the playback.

Chapter 11: Incorporating Sound and Video

www.it-ebooks.info

401

Importing
Video Files

Note

One of Flash’s relatively new tricks is the ability to test video within the Flash workspace. If you want,
you can press Enter (Return) to watch your video instead of Ctrl+Enter (⌘-Return).

Figure 11-18

When you finish importing your video to Flash, it
shows up in the Library,
and there’s an instance
already placed on the
stage. If you need another
instance of the video, say
in another scene, you can
simply drag it from the
Library to the stage in
that scene.

Deploying your Flash video on the Web
Most of the time, Flash projects that incorporate videos end up on the Web. Whether
you’re uploading the video to a web page or someone is doing it for you, make sure
that all the files make the journey: the Flash animation (.swf), the Flash video file
(.flv or .f4v), and the skin file (named something like SkinOverAll.swf ).

Importing a Flash Video from the Web
Surprisingly, importing a video file that’s stored on the Web isn’t much different from
importing one that’s on your computer, as described on page 396. The Flash video
file may be in a standard web server or one that has Flash Media Server software.
(Don’t worry if you don’t have a video file stored on a web server; there’s an example
file you can practice with, as you’ll see in the following steps.)
The only differences in the importing process happen at the very beginning.
1. Select File→Import→Import Video.
The “Import Video: Select” window appears.

402

flash CS6: The Missing Manual

www.it-ebooks.info

2. Turn on the radio button next to “Already deployed to a web server, Flash
Video Streaming Service, or Flash Media Server” (Figure 11-14). In the URL
box, type the web address where the file lives, and then click Continue.

Importing
Video Files

The URL for the practice file is http://examples.oreilly.com/flashcs4mm/11-4_
Building_Implode.flv. When you click Continue, the “Import Video: Skinning”
window you see in Figure 11-16 appears.
The rest of the steps are identical to those for importing a Flash video file on your
own computer. You can pick up the process at step 8 on page 399.

Customizing the Video Playback Component
In Flash-speak, once your video is added to your Flash file, it’s called the FLVPlayback
component. Components are prebuilt widgets that you drop into your animations.
Someone else went to all the trouble of building (and hopefully testing) the component. All you have to do is drop a component into your Flash project and let it do
its stuff. Components save you design and programming time, so it’s worthwhile to
learn about them. There’s a whole chapter on components (Chapter 16), but since
you’re already using one in this example, it’s worth covering some of the specific
ways you can customize the FLVPlayback component.
Most components provide a few options that let you customize them for your nefarious purposes. For example, in the case of the FLVPlayback component, you can
change the playback behavior of the video and the appearance of the video controls.
You can even change the video source file if you have a newly edited and improved
video. You change the settings for a component by changing its parameters. Here’s
how to view and edit the FLVPlayback parameters:
1. In Flash, click the FLVPlayback component on the stage.
As with other objects, you select the video playback component and then modify
it using the settings in the Properties panel.
2. In the Properties panel, open the Component Parameters subpanel.
The Component Inspector panel opens in Flash. The name of each parameter
(setting) is listed on the left, and its value is shown on the right.
3. Make changes to the FLVPlayback parameters.
You can change multiple parameters. For example, to change the appearance
of the skin (video playback controls), click skinAutoHide, and then set the value
to “true.” To change the color of the skin, click the skinBackgroundColor swatch,
and then choose a new color from the color picker.

Chapter 11: Incorporating Sound and Video

www.it-ebooks.info

403

Importing
Video Files

Here’s a complete description of the parameters for the FLVPlayback component:
• align. Determines the alignment of the video image when the video scaleMode
(below) isn’t set to exactFit.
• autoPlay. If set to “true,” the video automatically plays when the Flash animation frame that holds it is loaded.
• cuePoints. You can add cue points to your video when it’s encoded, as explained
on page 393. Or you can add them using the FLVPlayback component. Click
the magnifying glass to open a window where you can add manual cue points
by typing in a name and a time.
• islive. Used with a Flash Media Server, this value is set to “true” when streaming a live performance.
• preview. Used for the live preview feature that helps you test the parameter
settings. Click the magnifying glass to see your video with the current settings.
• scaleMode. This setting determines how the video image sizes itself after it’s
loaded. There are three options: noScale, where the video uses the size of the
Flash video source file; maintainAspectRatio, where the video retains its proportions when enlarged or shrunk; and exactFit, which forces the video to fit the
dimensions of the component as shown in the Properties panel.
• skin. The name and path for the .swf file that adds playback controls to the video.
• skinAutoHide. If set to “true,” the playback controls disappear unless the mouse
is hovering over the video image.
• skinBackgroundAlpha. Playback controls can be transparent. A value of
1.0 = opaque and 0 = invisible. So, a value of 0.8 provides an 80 percent opacity effect.
• skinBackgroundColor. Click the color swatch, and then choose a new color
from the color picker.
• source. The name and path for the Flash video file.
• volume. Sets the audio volume for video playback. A value of 1.0 = full volume
and 0 = no volume. So a value of 0.5 provides half the available volume for
audio playback.

404

flash CS6: The Missing Manual

www.it-ebooks.info

Part

Adding Interactivity
Chapter 12:

Introduction to ActionScript 3
Chapter 13:

Controlling Actions with Events
Chapter 14:

Organizing Objects with the Display List
Chapter 15:

Controlling the Timeline and Animation
Chapter 16:

Components for Interactivity
Chapter 17:

Choosing, Using, and Animating Text
Chapter 18:

Drawing with ActionScript

www.it-ebooks.info

3

www.it-ebooks.info

chapter

Introduction to
ActionScript 3.0

12

W

hen your Flash document is on your computer, you’re in control. You can
make it do whatever you want, whenever you want. But eventually, your
creation has to strike out on its own. You won’t be there to tell your animation what to do when someone clicks a button or to remind it to turn off the sound
after the first three times through. You need to provide instructions to make your
animation perform automatically—that is, automate it.

To automate your animation or make it interactive, you use ActionScript—Flash’s
built-in programming language—to act on, or script, the different parts of your
animation. For example, you can instruct your animation to load a web page when
someone clicks a button you’ve added, to start playing an audio clip at the beginning of a certain scene, to play your animation in reverse, to loop certain sections
of your animation, and so on.
Flash calls the chunks of ActionScript code you attach to your animation actions,
which is a great reminder that ActionScript exists to help your audience interact
with your animation.
The first part of this chapter explains how ActionScript has grown up from a simple
macro language for animations into a full-blown programming language. After that,
the chapter introduces you to some of ActionScript’s basic concepts, with examples
each step of the way. Follow the examples and try some experiments of your own.
Go ahead, you won’t break anything. You’re on your way to a whole new level of
Flash animation.

407

www.it-ebooks.info

Getting
to Know
ActionScript
3.0

Getting to Know ActionScript 3.0
ActionScript is a serious programming language. As explained in the box below, folks
in cubicles use ActionScript to develop major programs—like ticket purchasing and
reservation systems. ActionScript incorporates geeky programming concepts like
variables, functions, parameters, and so on. Delve deep and you find the scripting
object model (the internal, Flash-designated names of all the parts of your animation). But none of that will stop you from using ActionScript for your own needs.
In fact, Flash has some great tools to ease you into programming, like the Actions
panel and Code Snippets introduced in this chapter. The visual nature of Flash
gives you instant feedback, letting you know when your script works and when it
doesn’t. Combine those features, and you’ve got a great way to dip your toe in the
programming waters. You can even apply the skills you gain with ActionScript to
other programming languages, including that web developer favorite, JavaScript.

In the News

ActionScript on the Desk, in the Phone
Believe it or not, now is an exciting time to learn ActionScript.
Not only is ActionScript the programming language Flash uses
to control animations, but it also lets you create lots of other
programs that run via the Internet, on a smartphone, or on your
desktop, just like your wordprocessor or spreadsheet. Adobe
is taking advantage of the fact that nearly every computer
on earth plays the SWF files that Flash creates. ActionScript
programs can sit on a website and run in people’s browsers. Adobe calls these programs rich Internet applications
(RIAs), and they’re at the forefront of a big wave in computer
software. Traditional (non-artist) programmers use Flex SDK
(now an Apache Open Source project) and Flash Builder to
create these RIAs.
It doesn’t end with the Internet. Flash Player is the little
unit that plays Flash movies on your computer desktop. The
pocket-protector set calls it a runtime program, since Flash
Player provides all the support needed to run programs in
a given computer operating system. There are Flash Players
for Windows, Mac, and Linux computers, making it a virtually
universal system. So if you create your program in Flash, it can
run just about anywhere. Adobe has expanded this universality

into a standard dubbed Adobe Integrated Runtime (AIR). AIR
combines several standards to produce desktop programs:
Flash, ActionScript, JavaScript, PDF (Adobe Acrobat), and HTML.
You can build AIR programs using Flash, Dreamweaver, Flash
Builder, and other tools. Depending on your program’s version,
it may require either an upgrade or an extension.
There’s icing on the AIR cake, too. You can build applications
for Android devices and Apple’s iOS devices. Yes, that means
you can use Flash to create apps for iPhone, iPad, and all sorts
of Android smartphones and tablets. You may remember all
the furor, gnashing of teeth, and blog space devoted to Apple’s
refusal to allow Flash Player on the iPhone, which meant web
pages that use Flash Player wouldn’t work on iPhones and
iPads. What hasn’t gotten as much press is the fact that Adobe
has done an end run around the issue. That’s right: With AIR,
Flash Pro now lets you create apps and turn the code into
the native language for iOS as well as Android. You can build
apps, test them on mobile devices, and sell them through the
Apple and Android app stores. The last few chapters in this
book get you started.

The Flash/ActionScript Partnership
ActionScript is a great name for a programming language. All computer programs
perform actions, but the cool thing about Flash and ActionScript is that those actions are so visible. You’re not just “assigning a value to a variable,” as you would

408

flash CS6: The Missing Manual

www.it-ebooks.info

in typical computer lingo—you’re making the moon move across the sky, or playing
a video clip, or turning up the volume of the music. ActionScript programming is
satisfying because many of the actions it performs are so apparent.

Getting
to Know
ActionScript
3.0

In the earliest versions, ActionScript was sort of tacked on to the Flash animation
machine, the way macro programming was added to early word processors and
spreadsheets. You used drop-down menus and dialog boxes to move parts of your
drawing around the stage. You could start and stop animations on specific frames
using familiar programming techniques like loops and conditionals (more on those
later). In short, you could create some pretty snazzy visual effects.
At first, programming and animation seemed a curious match, since artists and
programmers often seem to be such different people. But when you think about it,
programming and drawing are both creative activities. Just like the artist, a programmer needs imagination and a vision. And animation is a very programmatic visual
art, complete with reusable chunks of action that branch off into separate scenes.
Today, there are Flash artist/programmers responsible for both the artwork and the
programming code in their projects. There are also large teams producing Flash
projects where artists create the objects that the programmers animate.
Note In recent years, Adobe developed separate tools for Flash development teams. Flash Catalyst is a tool
for designers, while Flash Builder is a tool for programmer/developers. When you work in Flash Pro, you have
access to both sides of the coin.

Up to Speed

About ActionScript 1.0, 2.0, or 3.0
Today’s Adobe Flash Player can run programs written with any
version of ActionScript (1.0, 2.0, or 3.0), but it uses an entirely
different engine to run the ActionScript 3 programs. More
important, ActionScript 3 programs run faster. ActionScript 3.0
programs also work better with XML, a popular, nearly universal
way to store data, and with CSS (Cascading Style Sheets), used
to format web pages.
ActionScript 1.0 (2000). Flash 5 was the first version to introduce the term “ActionScript,” and for the first time, animators
could type in code like real programmers. Before that, Flash
kept track of commands chosen from drop-down menus and
dialog boxes.
The ActionScript language was based on ECMAScript, which
was a great move, since the popular JavaScript also has the
same roots. Web programmers who know JavaScript can easily
pick up ActionScript.
ActionScript 2.0 (2003). Flash MX 2004 introduced ActionScript
2.0 a few months prior to the date implied by its moniker.

A­ ctionScript 2.0 adopted additional object-oriented programming concepts, making it a better tool for larger projects and
projects developed by teams of programmers. Some concessions were made so that both ActionScript 1.0 and ActionScript
2.0 animations would run in the same Flash Player that was
installed on so many computers.
ActionScript 3.0 (2006). Adobe introduced ActionScript 3.0 with
Adobe Flex 2.0 (a programming system that makes use of the
Flash Player but doesn’t use the Flash Authoring program)—a
sure sign that the language had matured beyond a simple
macro language for controlling Flash animations. ActionScript
3.0 follows established object-oriented programming concepts
very closely, bringing benefits as well as changes from the
previous versions. Adobe Flash CS3 was the first version to
include ActionScript 3.0 as an option. With Flash Pro CS5.5,
Adobe added the ability to create apps for iOS and Android.
These apps are translated into the devices’ native language so
they do not require Flash Player.

Chapter 12: Introduction to ActionScript 3.0

www.it-ebooks.info

409

Getting
to Know
ActionScript
3.0

ActionScript 3.0
Each version of Flash has introduced new, more sophisticated features, like better
video handling à la YouTube. For example, Flash CS4 introduced a powerful new
­Motion Editor for creating and adjusting tweens. Flash CS5 introduced the Text
Layout Framework. All along, ActionScript has kept pace. (The box on page 409
details some of the history.) With ActionScript 3.0, Flash’s programming language
has matured quite a bit, adopting the latest and best programming concepts. As a
result, ActionScript is more powerful, more consistent, and a better tool for teambased projects. If you’re a lone artist/programmer, does that mean ActionScript 3.0
doesn’t have any benefits for you? Not at all. You’ll benefit from ActionScript 3.0’s
consistency and power. Tools like the Display List and the Event Listener system will
help you write better programs and keep your sanity in the process.

ActionScript vs. JavaScript and Other Languages
ActionScript and JavaScript have a lot in common. They’re both scripting languages,
meaning that they’re programming languages that run inside other programs. Specifically, ActionScript runs inside Flash Player, and JavaScript runs inside a web browser.
On top of that, ActionScript and JavaScript sprouted from the same programming
language specification, ECMA-262.
Note Since you’re just dying to know, ECMA stands for European Computer Manufacturers Association, the
standards group that established the spec.

Initially, programmers used both ActionScript and JavaScript in snippets to perform
quick and easy chores. For example, in ActionScript, you’d write something like the
following:
on (press) {
startDrag(this);
}

You would literally attach code to a drawn object on Flash’s stage. JavaScript uses
similar chunks of code to control the behavior of buttons and rollover images. However, JavaScript is often interspersed throughout the HTML code that describes web
pages. From a technical point of view, ActionScript and JavaScript are considered
high-level languages because they’re closer to human language than the 1’s and 0’s
of machine language.
As human nature kicked in and Flash animations became more elaborate, ActionScript
snippets got tucked in all over the place. As a result, if an animation didn’t work as
expected, it was hard to find the misbehaving code. It could be almost anywhere.
ActionScript writers started to use more disciplined programming techniques, and

410

flash CS6: The Missing Manual

www.it-ebooks.info

new versions of ActionScript encouraged better programming practices. The idea
of attaching ActionScript code to any old object became frowned upon. Instead,
programmers tried to keep all their code in one place, usually a single layer in the
timeline. At the same time, object-oriented programming was becoming more
popular and better-defined in programming circles, from the Visual Basic coders to
the C programming crowd. ActionScript added object-oriented concepts in version
2.0 and even more in ActionScript 3.0.

Getting
to Know
ActionScript
3.0

ActionScript 3.0 Spoken Here
The ActionScript chapters in this book focus entirely on ActionScript 3.0. If you’re
already versed in one of the earlier versions, you may be pleased to know that
Flash CS6 still supports ActionScript 1.0 and 2.0, but you can’t mix code from
­ActionScript 3.0 with code from earlier versions in the same SWF file. The reason is
that the Flash Player now includes two completely separate virtual machines (the
software that interprets ActionScript code and turns it into actions). The original one
runs ActionScript versions 1.0 and 2.0. A completely new virtual machine handles
ActionScript 3.0 code, which tends to run faster.
Coders’ Clinic

Diving Deeper into ActionScript
This book introduces ActionScript 3.0 and covers many of the
common elements of ActionScript programming. The goal is
to make you comfortable writing ActionScript code so you
can use it to control your Flash animations. But don’t stop
there—experiment with ActionScript code and branch out from
the examples in this book. If you’re in the midst of a project
and have an ActionScript question, try Flash’s help (Help→Flash
Help). Click the ActionScript topic near the top of the page. That
jumps to a section of the page with ActionScript help topics. For
a compendium of geeky ActionScript details, click the link that
says “ActionScript 3.0 Reference” (middle Figure 12-1). At that
point, you see the ActionScript reference that provides details
on every single object, property and method. There are three
panels; click an item in the top left panel to see its details.
Then to fine tune your selection, click an item in the lower left

panel. The details are always shown in the large panel on the
right. If you do a lot of ActionScript 3.0 coding, this reference
is probably the one you’ll use the most. For more details on
setting up and using Flash’s help files, see page 770.
In an effort to get you up and programming quickly, this book
doesn’t cover everything you’d learn in an advanced computer
science course. There are great books that go into more detail
on ActionScript topics. Learning ActionScript 3.0 by Rich Shupe
and Zevan Rosser (O’Reilly) is a clearly written guide for beginners. For a more advanced reference, Essential ActionScript 3.0
by Colin Moock (O’Reilly) is ideal. If you’re an old hand with
ActionScript 2.0 and want to make the move to ActionScript
3.0, consider ActionScript 3.0 Quick Reference (O’Reilly) to ease
you through the transition.

Tip

If you’re interested in learning more about ActionScript 2.0, find a copy of Essential ActionScript 2.0 by
Colin Moock.

Chapter 12: Introduction to ActionScript 3.0

www.it-ebooks.info

411

Getting
to Know
ActionScript
3.0

If you’re new to ActionScript, no problem. As the language of the future, ­ActionScript 3
is the version to learn. If you’re an experienced ActionScript programmer, it’s worth
a little relearning to gain the advantages that ActionScript 3.0 gives you.

Figure 12-1

It takes a few steps to
reach the help reference
for ActionScript. Top: You
see this web page when
you choose Help→Help
in Flash. Click the ActionScript link (circled).
Middle: That displays several ActionScript-­related
items, including articles
and a reference. For the
best details, click ActionScript 3.0 Reference.
Bottom: Finally, you see
the help reference for the
ActionScript and all its
objects, properties and
methods. Use the panels
on the left to display
details in the main panel
on the right.

412

flash CS6: The Missing Manual

www.it-ebooks.info

Beginning Your ActionScript Project

Beginning
Your
ActionScript
Project

When your Flash project includes ActionScript programming, you have some decisions to make at the outset. As explained in the previous section, you need to decide
whether you’re using ActionScript 2.0 or ActionScript 3.0, since you can’t mix version
3.0 with earlier versions. The exercises in this book all use ActionScript 3.0, so that
fact alone may make your decision easier. Once you’ve decided, you choose the
type of Flash file you want to create in the intro screen or in the File→New dialog
box (Figure 12-2). If you choose one of the AIR options, you’re automatically creating
an ActionScript 3.0 document.
Coders’ Clinic

Timeline Programming: Pros and Cons
Ask more than one script writer where it’s best to place code—
the Flash timeline or an ActionScript file—and you’re likely to
start an energetic debate. If you plan on a long ActionScript
career, it’s worth learning both techniques.
Originally, ActionScript was considered a helper tool for animations. If you wanted the moon to rise at a certain point in an
animation, you’d attach a snippet of ActionScript code to the
moon or to a specific frame in an animation. Before you knew it,
you had bits and pieces of code tucked in every nook and cranny
of your timeline and Flash file. That situation is bad enough if
you’re the only one working on the project, but it was really
a problem for team projects. Eventually, it became a common
practice to keep one timeline layer devoted to ActionScript
code. That way, at least most code was in one place. In recent
years, the growing trend is to store ActionScript code in a
separate file, making it easier for teams to work on the same
project. Artists can work on the drawing in an .fla document,
and programmers can write code in .as documents.
If you’re working on a team project, chances are your team
leaders will tell you exactly where and how to add ActionScript
to the project. If you’re working on your own, you can choose
the method that’s best for you. In some cases, particularly
with smaller projects or projects that need to be hammered
out quickly, it may make perfect sense to attach code to the
Flash timeline. Here are more details about both methods:

Timeline programming is the way everyone used to write
ActionScript. You attach scripts to individual frames in the
Flash timeline. Quick and easy, this method gives a certain
amount of instant gratification. If you want to quickly test an
idea, the tendency is to attach some code to the timeline. The
problem is that you may end up with snippets of ActionScript
code in many different places, which makes it more difficult
to troubleshoot the code if something goes wrong. It’s even
worse if you (or someone else) return to a project years later
to make some changes.
ActionScript file programming is the preferred method for
large projects and true object-oriented programming. One
of the goals of object-oriented programming is to create
code that’s easily reusable. First of all, it has to be readable
and understandable. Second, the chunks of code have to be
somewhat independent. Placing all your code in a separate
.as file forces you to provide more thorough definitions of the
objects in your Flash project. As a result, you write more lines
of code, but there’s a better chance that you can reuse that
code for other projects. When teams of programmers work
on the same project, it’s much easier this way to update the
code and keep track of each updated version.
In the end, it comes down to the needs of your project and, if
you’re the project boss, your personal preference.

Next, you need to decide where you’re going to place your ActionScript code. You
have two choices. You can place your ActionScript code in frames in the Flash
timeline, or you can place your code in one or more separate ActionScript (.as) files:
• To place ActionScript code in the timeline of your Flash file, create a Flash document (.fla) by choosing File→New→ActionScript 3.0. You have a choice between
Chapter 12: Introduction to ActionScript 3.0

www.it-ebooks.info

413

Beginning
Your
ActionScript
Project

creating a Flash document based on ActionScript 2.0 or ActionScript 3.0. When
Flash creates a new .fla file, it includes information that (ultimately through the
.swf file) tells the Flash Player what flavor of ActionScript to use. You can use
timeline programming for smaller projects and when you’re not working with
a team of other programmers. Just remember that it’s more difficult to reuse
your ActionScript code if it’s embedded in a Flash document’s timeline.

Figure 12-2

When you create a Flash
file, you need to decide
between ActionScript 3.0 and
ActionScript 2.0. You can’t use
code from both in a single
Flash document (.fla). Use the
Intro splash screen (top) or the
File→New command (bottom)
to create a new document. If
you’re using a separate ActionScript document for your code,
then choose ActionScript File to
create an .as document.

414

flash CS6: The Missing Manual

www.it-ebooks.info

• To place ActionScript code in a separate ActionScript file, create an ActionScript
document (.as) by choosing File→New→ActionScript File. When you work with
teams of programmers and artists, it’s likely the team manager will tell you to
keep ActionScript code in a separate file. Even if you’re working alone, you may
want to keep code in a separate .as file so that your work can be reused with
other Flash projects. There’s a bit more programming overhead when you keep
your ActionScript code in a separate file. On the plus side, that overhead leads
to better object-oriented practices, making your code easier to reuse.

Beginning
Your
ActionScript
Project

For more details on making the choice between timeline programming and keeping
your code in a separate ActionScript file, see the box on page 413.
Note

Most of the examples in this book use timeline programming to show ActionScript programming

principles.

Writing ActionScript Code in the Timeline
If you’ve got a Flash document open, you’re ready to begin adding ActionScript
code to the timeline. Here are the steps to get you started:
1. Create a new layer in the timeline to store your code.
To make your life easier later, keep your ActionScript code in one place—a single
layer at the top of the timeline that holds only ActionScript code. You can use
any name you want for this layer, but for clarity’s sake, call it actions or scripts.
2. Click a keyframe where you want to add your code, and then press F9
(Option-F9) to open the Actions panel.
The Actions panel is divided into three main parts, as shown in Figure 12-3. The
Script pane is where you type your ActionScript code. The Actions toolbox
holds a list of ActionScript objects, properties, methods, and events. The Script
navigator shows a list of objects that have ActionScript code attached.
3. Type your statements in the Script pane, or choose statements from the
­Actions toolbox.
You can type code directly into the Script pane, or you can double-click or drag
the ActionScript elements in the Actions toolbox. As you add code to individual
frames, you see them listed in the Script navigator (in the toolbox, located on
the left side of the Actions panel), giving you a running list of the objects that
have code attached. To view or edit code for a particular object, click the object
in the Script navigator, and you see the code in the Script pane.

Chapter 12: Introduction to ActionScript 3.0

www.it-ebooks.info

415

Beginning
Your
ActionScript
Project

Tip

You can collapse and expand the Actions toolbox and its panels. If you don’t see the item you’re looking
for, click the rectangular buttons with the triangles to open and close the panels.

Actions toolbox

Script pane

Figure 12-3

The Actions panel has
three parts: the Script
pane, the Actions toolbox,
and the Script navigator.
In the Actions toolbox,
the circle-arrow icons
represent ActionScript
elements that can be
added to your script. Click
the book icons to expand
and collapse the different
ActionScript categories.

Script navigator

Using the Script Pane Toolbar
The toolbar above the Script pane provides helpful tools for working with your
ActionScript code (Figure 12-4). The buttons aren’t labeled, but you can see their
names when you mouse over them. From left to right, these are the buttons:

Debug options
Auto format
Insert a target path

Figure 12-4

Collapse selection
Apply block comment

Add a new item to the script

Remove comment

Find

Show/Hide Toolbox

Check syntax
Show code hint

Apply line comment
Expand all

Collapse between braces

416

flash CS6: The Missing Manual

www.it-ebooks.info

The buttons in the toolbar above the Script pane
may seem cryptic at first, but they’re worth investigating. Pause with your cursor over a button to
show a tooltip that explains its function.

• Add a new item to script. Provides access to the same elements as the Actions
toolbox. Useful if you’ve hidden the toolbox using the Show/Hide toolbox command (last in this list of buttons).

Beginning
Your
ActionScript
Project

• Find. Searches your script for words and characters.
• Insert a target path. Click this button, and then choose your target object from
a list, and this tool writes the proper code identifying it.
• Check syntax. Inspects your code for obvious errors.
• Auto format. Formats your script, making it easier to read, by using colors
and indents. To set formatting options, go to Edit→Preferences→ActionScript
(Flash→Preferences→ActionScript on a Mac).
Tip Some coders have reported that in some cases autoformatting has broken their otherwise serviceable
code. To avoid this, test your code before and after autoformatting. If you run into trouble, you can undo the
formatting.

• Show code hint. Displays tooltips with suggestions for your script.
• Debug options. Inserts and removes breakpoints in your code. Breakpoints
stop your program from running, giving you an opportunity to examine the
workings of your program.
• Collapse between braces. Hides the text between a set of curly braces {},
making it easier to read and understand your code. Similar to collapsing an
outline in a word processor.
• Collapse selection. Select the text you want to hide, and then click this button
to hide it. Hold down the Alt (Option) key when you click this button, and the
Actions panel collapses the code not selected.
• Expand all. Expands collapsed portions of your script after you’ve used one of
the two previous commands.
• Apply block comment. Inserts the /* and */ used to create a block comment.
• Apply line comment. Inserts the // used to create a line comment.
• Remove comment. Removes the comment characters from a comment.
• Show/Hide toolbox. If you need more room to see your Script pane, use this
button to hide the Actions toolbox. When the toolbox is hidden, you can use
the “Add a new item to script” button to insert elements.
Tip

If you need more room to see your script, use the “Show/Hide toolbox” button on the far right to temporarily hide the Actions toolbox. When the toolbox is hidden, you can use the “Add a new item to script” button
(far left) to insert ActionScript elements.

Chapter 12: Introduction to ActionScript 3.0

www.it-ebooks.info

417

Beginning
Your
ActionScript
Project

Writing Code in an ActionScript File
When you want to store all your code in an ActionScript (.as) file, the first thing you
need to do is create the file:
1. Create a new ActionScript file (File→New→ActionScript File).
A new window opens, as shown in Figure 12-5. Initially, the window has a tab
that reads Script-1 or something similar. When you save the ActionScript file
with a name of your choice, that name appears on the tab. The Script window
has two sections, a Script pane and the Actions toolbox. The toolbar above the
Script pane is identical to the one described on page 416.

Tab showing script filename

Script pane

Figure 12-5

The Script window used to write code
in an ActionScript (.as) file looks very
similar to the Actions panel of a Flash
document. There’s no Script navigator,
because the ActionScript code is linked
to particular objects by statements
within the code itself.

Actions toolbox

2. Save your ActionScript file in the same directory as your Flash file
(File→Save).
A dialog box opens where you can select a folder and then name your document.
You want to save your file in the same directory as your Flash file. This way,
Flash’s compiler can find it when it creates an .swf file for distribution. Another
option is to save your file in a folder that’s designated as the ActionScript class
folder; the steps for doing so are described in the box on page 419.
3. Type your statements in the Script pane or choose statements from the
­Actions toolbox.
You can type code directly into the Script pane, or you can double-click or drag
the ActionScript elements in the Actions toolbox.

418

flash CS6: The Missing Manual

www.it-ebooks.info

When you separate your ActionScript code from a Flash document, it’s up to you to
establish links between your code and the objects in the Flash document. Because
this chapter focuses on the basics, the following examples use timeline programming.

ObjectOriented
Thinking

Object-Oriented Thinking
When programmers talk about object-oriented programming, they’re referring to
specific programming techniques—a way of looking at the parts of a program and the
overall design. The idea is to create chunks of programming code that do a specific
job. If you design them all, those chunks can fit together with other pieces of code.
Think for a second about a typical home theater system that has an amplifier/receiver,
a DVD player, a TV screen, and maybe a cable box. Each unit is an object. The folks
who designed the DVD player don’t have to know how to build a TV screen; they
just have to make a DVD player that can plug into a TV. You can plug the same DVD
player into another home theater system, and it’ll work perfectly well. Programmers
strive for that kind of modularity when they build objects.
The benefits are obvious. As long as the objects have an agreed-upon method for
interacting, different programmers can work on different objects. When they all
come together, they’ll play well with one another. If the objects are truly useful and
flexible, you can reuse them in future projects. Future programmers won’t have to
understand how the DVD player works; all they need to know is how to plug it in
and how to send and receive signals from it.
Coders’ Clinic

Creating an ActionScript Class Folder
If you’re working on several ActionScript projects over time,
you want to reuse as much of your ActionScript code as possible. So you may create objects that work with a variety of
Flash projects.
Perhaps you have some great shopping cart code that you can
use for several different clients. You can put your shopping
cart code in one ActionScript file (.as), and then put code for
each of your clients in separate files. Your client files need to
reach out and use that shopping cart code, but it’s probably
in a different file folder. The solution is to create one or more
ActionScript class folders, where you store code that’s used by
many different Flash projects.

Then you need to tell Flash and ActionScript where to find
those class folders.
You do that through Flash preferences. Go to Edit→­Preferences→
ActionScript→ActionScript 3.0 Settings (on a Mac, go to
­Flash→Preferences→ActionScript→ActionScript 3.0 Settings).
Figure 12-6 shows the box that opens to let you set file paths
for three different types of ActionScript files. Use the middle
tool labeled “Folders containing ActionScript class files.” Click
the + button to add a new path to the list; you may have more
than one Library path. Click the folder icon to browse to the
directory that holds the class files.

Chapter 12: Introduction to ActionScript 3.0

www.it-ebooks.info

419

ObjectOriented
Thinking

In addition to reusability, there are a handful of other concepts that define objectoriented programming. Some of them don’t make a lot of sense until you understand
the basics of ActionScript, but here are a few of the basics for reference:
• Classes. A class describes an object in the abstract, like the concept of DVD
players. A class is like a generalized blueprint for building an object.
• Instances. An instance is a specific object, like a Sony DVD Player Model N55.

Click to browse
to new path

Existing Library path for class files

Figure 12-6

Use the Preferences
box to change the basic
settings for ActionScript.
Here the path to a folder
holding ActionScript is
specified so the Flash
compiler can find it when
it builds .swf files.

Actions toolbox

• Properties. Properties are characteristics that define an object. For example,
color may be a property of the Sony DVD player; that property may be set to
black or silver. Properties are part of an object’s definition, so they’re called
members of the object.
• Methods. Methods are actions that an object can perform. To continue the
DVD player example, Play, Pause, and Fast Forward are methods of the DVD
player class. These methods also belong to the Sony N55 instance of the DVD

420

flash CS6: The Missing Manual

www.it-ebooks.info

player class. Methods are part of an object’s definition so, like properties, they’re
members of the object.

ObjectOriented
Thinking

• Events. Events act as triggers. Someone presses the Play button on the DVD
player—the event—and the Play method runs. Events are also part of an object’s
definition.
• Encapsulation. It’s not necessary or wise to expose all the inner workings of an
object. It’s important for people to be able to play, pause, and eject discs in the
DVD player, but they don’t need to control the rotation speed or the intensity
of the laser that reads the discs. In object-oriented programming, encapsulated
features are those your audience can’t mess with.
Coders’ Clinic

Is ActionScript a True Object-Oriented Language?
If you use the strictest definition for object-oriented programming languages, ActionScript doesn’t make the cut. In true
object-oriented programming, everything is an object and
derives from objects. Even ActionScript 3.0, with its enhanced
object-oriented features, has a few loopholes that you won’t
find in a language like Java (not to be confused with JavaScript).
For example, timeline programming in Flash breaks some of the
accepted rules of object-oriented programming. ActionScript

permits functions that exist outside of an object, referred to
as function closures .
ActionScript doesn’t force you to always use object-oriented
programming techniques. Instead, it takes advantage of many
object-oriented concepts and lets you choose how strictly you
want to use them.

Flash itself gives you a good head start toward object-oriented thinking. Consider a
lowly rectangle you draw on the Flash stage. That’s an object. All rectangles share
some of the same properties. For example, they have four sides defined by four
points, and they have a surface or face between those sides. All the corners of a
rectangle are right angles.
Once you understand the basics, you can describe a Flash rectangle using a few
properties:
• Width
• Height
• Stroke thickness
• Stroke color
• Fill color
Taking it a step further, you can place that rectangle anywhere on the stage by
placing its upper-left corner on a particular point. That location is another property
of a Flash rectangle.

Chapter 12: Introduction to ActionScript 3.0

www.it-ebooks.info

421

ObjectOriented
Thinking

ActionScript Classes
If you’re working in Flash, chances are you’re going to use more than one rectangle,
and you don’t have to build every rectangle from the ground up. You can take
certain rectangular characteristics for granted—four sides, right-angled corners.
Other properties you need to define separately for each rectangle—width, height,
color, location on the stage. So you need a class that defines rectangles in general,
and you can then create specific instances of rectangles by defining their individual
properties. And that’s exactly how Flash works. Class, instance, and property are all
fundamental terms for object-oriented programming and thinking.

Changing an Object’s Properties
In Flash, you change a rectangle’s height or width using the Modify→Transform→Scale
command. To change its location, you drag it to a new place. In ActionScript, by
contrast, you change the height, width, and location by changing the properties in
your ActionScript code:
myRectangle.width = 150;
myRectangle.height = 75;
myRectangle.x = 300;
myRectangle.y = 225;
Note

It’s common practice to refer to locations on a computer screen as x/y coordinates. The x refers to
the horizontal position, and the y refers to the vertical position. If you need something to help you remember
which is which, remember that a lowercase y extends farther in a vertical direction.

Want to put some of these programming concepts to work? Try this:
1. In a new document, draw a rectangle of any size and shape.
You can think of this step as defining an object.
2. Select the rectangle, and then convert it to a symbol (Modify→“Convert to
Symbol”), choosing Movie Clip as the type.
Movie clip is a great catch-all symbol for ActionScript programming. Movie clips
can be as simple or complicated as you want.
3. Create a new layer, double-click the layer name, and then type actions .
It’s good programming practice to create a separate layer in the timeline for
your ActionScript code. Naming it actions or scripts makes it clear that the layer
is reserved for code.
4. For consistency, rename the rectangle layer drawings .
Your timeline now has two layers with descriptive names.

422

flash CS6: The Missing Manual

www.it-ebooks.info

5. Make sure the instance on stage is selected, and then in the Properties panel,
type myRectangle in the “Instance name” box, as shown in Figure 12-7.

ObjectOriented
Thinking

This step is important. If you don’t give objects on the stage a name, there’s no
way to tell ActionScript exactly which object you’re talking about.

Rectangle drawing

Properties panel

Instance name box

Figure 12-7

Before you can control
objects on the Flash stage
with ­ActionScript, you have to
convert them to movie clip or
button symbols, and then name
them in the “Instance name”
box on the Properties panel.

6. Open the Actions panel.
The Actions panel looks pretty busy when you first see it, as shown earlier in
Figure 12-3. All the details are described on page 415. For now, focus on the big
blank area in the middle, where you type ActionScript code.
7. Select the first frame of the actions layer in the timeline, and then type the
following lines in the Actions panel:
myRectangle.width = 150;
myRectangle.height = 75;
myRectangle.x = 300;
myRectangle.y = 225;

When you’re done, the Script pane should look like Figure 12-8.
Tip

Uppercase and lowercase spelling make a difference to ActionScript. Objects named myRectangle,
MyRectangle, and myrectangle are completely different things to ActionScript. ActionScript programmers use
certain typographic conventions that make it easier to read and understand code. One of those conventions is to
use camel case for instances of objects. Camel case uses an initial lowercase letter and then uppercase for the
first letter of additional words. For example: thisIsCamelCase.
Chapter 12: Introduction to ActionScript 3.0

www.it-ebooks.info

423

ObjectOriented
Thinking

8. Click the Check Syntax button (the checkmark) at the top of the Actions
panel to check for typos in your code.
The check syntax feature in ActionScript 3.0 isn’t as picky as it could be. Still, it
helps you find major bloopers in your code, so it’s worth using, especially when
you’re just starting out.

Actions
toolbox

ActionScript
element

Script navigator

Your ActionScript code

Figure 12-8

Type your ActionScript
statements directly into
the Script pane of the
Actions panel. Remember
to include semicolons (;)
at the end of statements,
and remember that
capitalization counts.

Script pane

9. Test your movie.
After a little churning, the Flash Player or your browser appears on your screen.
If everything is working right, your rectangle changes its shape and size. No
matter what dimensions and location your rectangle had to begin with, it takes
on the properties you defined in your ActionScript code. It’s 150 pixels wide
and 75 pixels high, and it’s located 300 pixels from the left (x) of your screen
and 225 pixels from the top (y).
You can probably guess what you need to do to animate this baby. Just add new
frames, including a keyframe, to your timeline, and then type some instructions
similar to the ones in step 7 on page 423. Here are the specific steps:
1. Click the 40th frame in both layers of your timeline, and then press F5 to
insert frames.

424

flash CS6: The Missing Manual

www.it-ebooks.info

You’ve just added 39 new blank frames to each layer of the timeline. Blank
frames show whatever is on the stage in the previous keyframe without changing anything.

ObjectOriented
Thinking

2. Click the 20th frame in the timeline’s actions layer, and then press F6 to
insert a keyframe.
Pressing F6 here places a second keyframe in the middle of the timeline, where
you can change the look of myRectangle using another snippet of ActionScript.
When you’re done, the timeline should look similar to Figure 12-9.

Figure 12-9

The timeline shows where
ActionScript is attached
to frames with a small
“a” icon. To prevent
confusion, keep your
ActionScript code on a
layer of its own at the top
of the timeline.

3. In the Actions panel, type the following lines:
myRectangle.width = 200;
myRectangle.height = 200;
myRectangle.x = 100;
myRectangle.y = 225;

Or, to avoid duplicate effort, use the Copy (Ctrl+C or ⌘-C) and Paste (Ctrl+V or
PCs ⌘-V) commands to steal the code from Keyframe 1 to Keyframe 20. Just
copy, paste, and then change the numbers. It’s faster than typing in new code,
and you’re less likely to create a typo.
4. Click the Check Syntax button.
You never know!
5. Test your movie.
Halfway through your animation, the rectangle turns square and moves to the
left—exactly as you programmed it. Not terribly exciting, but you can use these
same methods to dress it up a bit more, which you’ll do in the next section.
Tip When you’re starting out in any programming language, the most common error is misspelling. Computers
are worse than your second-grade teacher. They want everything spelled and punctuated perfectly. If something
goes wrong, double-check your spelling and punctuation first. You can save yourself some grief by copying and
pasting words, like myRectangle, to avoid typos.

Chapter 12: Introduction to ActionScript 3.0

www.it-ebooks.info

425

ObjectOriented
Thinking

Functions and Methods Put the Action in ActionScript
As explained on page 419, properties define the characteristics of objects. Methods
are the actions. Methods explain how a particular object can do something. If you,
as a human being, are an object, then your height, hair color, and gender are your
properties. Walking, talking, and keyboarding are your functions and methods.
Note

In ActionScript, methods are actions that are a defined part of an object, just like its properties.
Functions are actions that are independent of any particular object.

In the exercise in the previous section, your code moved myRectangle to the left 200
pixels. What if you want to move to the left by 5 pixels at several different points
along the timeline? The script writer’s way to do that is to write a moveLeft() function, and then run that function whenever the object needs to be moved. Here’s the
code for a function that handles the move:
function moveLeft(anyMovieClip:MovieClip):void
{
anyMovieClip.x = anyMovieClip.x -5;
}

Go ahead and type the function below the ActionScript code on the first frame of
your document. Start on line 6, so that there’s a little room between the different
parts of your code. Click the Check Syntax button and double-check your spelling
and punctuation. When you’re done, it should look like Figure 12-10.

Figure 12-10

Compared to the object’s properties, a function is just a
tad more geeky and complicated. The first word, function,
explains that the code that follows is a function. The next
word is the name of the function, moveLeft(). You’ll use
this name every time you want to run the function.

Your function moveLeft() is an action, and as such it needs an actor. Something’s
gotta move, and that something is named inside the parentheses. You’re moving
anyMovieClip. That’s probably a clear enough explanation for you, but it’s not for your
computer. To your computer, “anyMovieClip” might as well be “joeJones.” They’re
both names it’s never heard of. Your computer needs to know exactly what kind of
object it is that you’re moving. So, on the other side of the colon (:), you explain that
anyMovieClip is in fact a MovieClip object. With that explanation, ActionScript can
look up the definition for MovieClips, and it knows exactly what anyMovieClip can

426

flash CS6: The Missing Manual

www.it-ebooks.info

and can’t do. Your computer also knows how much memory it needs to devote to
anyMovieClip—an issue that becomes more important as your programs grow bigger.

ObjectOriented
Thinking

Following the parentheses is the mysterious :void—another bit of ActionScript
housekeeping. This code tells ActionScript that moveLeft() doesn’t perform a calculation and provide a value in return. Suppose you created a function to find the
area of a rectangle; getArea() would do its calculation, and the result would be a
number. Instead of expecting the ominous-sounding :void, you’d tell ActionScript
to expect :Number.
The actual instructions for your moveLeft() function have to be between curly
brackets {…}, like the ones you see on the second and fourth lines. The brackets
don’t have to be on lines by themselves, but sometimes it’s easier to read your code
when it’s written that way.
The action in your code is all on one line; everything else was just the necessary
ActionScript overhead used to create every function.
anyMovieClip.x = anyMovieClip.x -5;

Remember how myRectangle.x was shorthand for “the horizontal position
of ­myRectangle?” You’re using the same shorthand here with anyMovieClip.
­ActionScript knows what you mean by x, because it’s one of the built-in properties
of the MovieClip class. What’s more, if you change the value of x, the movie clip
changes position. You saw that in the example on page 422. Changing a value is
also called assigning a new value. And while you may know the = symbol as equals,
in ActionScript it’s called the assignment operand, because it assigns the value on
the right side to the property or variable on the left.
When you wrote:
myRectangle.x = 100;

you were assigning the value 100 to the x property of myRectangle. Your moveLeft()
function’s code is just a little bit more complicated. You’re saying “take the value
that’s currently assigned to anyMovieClip.x, subtract 5, and then put the result back
in the anyMovieClip.x property.” This method of reassigning a value is very common
in ActionScript and almost any programming language.
So you may be wondering why your function used the word anyMovieClip instead
of using myRectangle as the object of this moveLeft() action. The function is literally for moving any movie clip, so it’s not hardcoded for a single rectangle like
myRectangle. The name in the parentheses is a parameter of the function, so when
you run moveLeft(), you tell ActionScript specifically which movie clip you want to
move. Here’s how it’s done:
moveLeft(myRectangle);

It’s that simple to run a function, or as the fellow with the pocket protector and
tape on his glasses would say, “to call a function and pass it a parameter.” To put
your function into action, go back to your timeline. Add keyframes (press F6) every

Chapter 12: Introduction to ActionScript 3.0

www.it-ebooks.info

427

ObjectOriented
Thinking

fifth frame from Frame 5 to Frame 25. Delete all the code that’s on Frame 20. In the
keyframes from 5 onward, type a call to your function:
moveLeft(myRectangle);

With the code inserted, your timeline looks like the one in Figure 12-11.

Figure 12-11

Drag the ActionScript
panel by the top bar,
and you create a floating
window like this one. The
single line calling the
moveLeft() function appears in the Script pane.

Timeline with keyframes

Floating ActionScript panel

Check syntax, spelling, punctuation, and then test your movie by pressing
Ctrl+Enter ⌘-Return. If the scripting deities smile upon you, myRectangle should
move left in 5-pixel increments, and then pause for a bit.
Here’s another great thing about using functions instead of hardcoding everything.
Suppose you decide that 5-pixel steps isn’t quite the grand, sweeping motion you
had in mind. All you have to do is change one number in the original function.
Change the code:
anyMovieClip.x = anyMovieClip.x -5;

to the following:
anyMovieClip.x = anyMovieClip.x -25;

and then test the results.
The complete geeky moniker for moveLeft() in this example is function closure.
In ActionScript, functions that are part of an object definition are called methods.
Functions that aren’t part of an object definition are called function closures. (Often,
in other languages, they’re referred to simply as functions.) If moveLeft() was part
of the definition for a rectangle object, it would be called a method of myRectangle.

428

flash CS6: The Missing Manual

www.it-ebooks.info

Note

To see the completed file, download 12-1_Move_Rectangle.fla from the Missing CD page (www.
missingmanuals.com/cds/flashcs6mm).

Using Data
Types,
Variables,
and
Constants

Events
In the olden days of programming, programs simply ran through a series of statements. The experience was similar to watching an animation with no way to change
it. All you could do was watch it run from beginning to end. The concept of events
helped change all that. When a person clicks a button in a Flash animation, that’s
an event. The response to that event might be a number of things: Perhaps a new
shape appears on the stage, or maybe the animation jumps to a new scene or frame.
ActionScript programmers create methods that listen for a particular event, like
that mouse click, and then handle it with a particular action, like jumping to a new
scene. It’s a great, tried-and-true method of interaction that lots of programming
languages use.
When you write an ActionScript program, you decide what events your program
will listen for. Those events can include any of the following:
• Mouse events, like mouse clicks or mouse movements.
• Touch events, like finger taps or two-finger swipes
• Keyboard events, like pressed keys.
• Frame events, like the Flash playhead moving into or out of specific frames.
• Load events, which report on the progress when loading external files.
Once you’ve identified the events you want your ActionScript program to respond to,
you write event handlers to spring into action. Your event handlers will run through
a series of ActionScript statements, which may be made up of functions like the
moveLeft() function from the previous section. Your event handlers can also change
an object’s properties.
You can use events to hand the controls over to the folks watching your Flash animations, which makes events an important tool in your Flash/ActionScript toolbox.
Events are so important they have their own chapter (Chapter 13).
Note

Previous versions of ActionScript handled events in a few different ways, including the well-known
on statements. ActionScript 3.0 has only one method for handling events—event listeners, as introduced here
and covered in more detail on page 443.

Using Data Types, Variables, and Constants
Flash animations are made up of different elements, like drawings, text, frames, timelines, and movie clips. Some of these elements serve as containers for the ­others. For

Chapter 12: Introduction to ActionScript 3.0

www.it-ebooks.info

429

Using Data
Types,
Variables,
and
Constants

example, frames can hold drawings and text, and timelines hold frames. ActionScript
is similar. A few basic elements, like numbers and strings, are the building blocks for
more complicated data containers. Many programming languages use similar data
types but have slightly different rules about the way they’re used.
This section introduces the most common data types that you use in ActionScript and
explains how they’re used. If you’ve worked your way through this chapter, you’ve
used some of these already. In examples in the following chapters, you’ll have an
opportunity to give these data types a workout.
Tip

This book isn’t an exhaustive reference on ActionScript. It gives you a solid introduction to the language
and shows you how to put it to work right away. If you’re hungry for more details on the subject, check out the
recommendations in the box on page 411.

Numbers
Numbers are one of the data building blocks ActionScript uses. For example, you
may want to tell Flash to play the same movie clip three times. As you saw earlier,
Flash uses numbers to identify positions on the stage, to identify certain frames in
a timeline, and to identify colors. Numbers are so important that Flash has three
different data types for numbers. Why have more than one? Well, numbers that
include fractions like 2.5 or 3.14159 require more computing power than integers
like 3 or –1. Choose the right type of number for the job, and you can make your
computer do less work so that your programs run faster.
Number
In ActionScript, a Number can be any type of number, including fractions. In many
programming languages, integer data types—like int and uint, described next—are
preferred over numbers when fractions aren’t needed. That’s not necessarily the case
in ActionScript. For some fairly technical reasons having to do with how A
­ ctionScript
is designed, many programmers use the Number data type most of the time.
int
The int (think integer) data type can represent any whole number from –2,147,483,648
to 2,147,483,647. The int type can’t represent fractions. If you need a fraction or a
number outside this range, use the Number data type.
uint
The uint (think unsigned integer) data type can represent numbers from 0 to
4,294,967,295. If you need a negative whole number, use the int data type. If you
need a fraction, use the Number data type. The uint is particularly useful to identify
colors, since colors are always positive whole numbers.
Numbers and Operators
When you work in ActionScript, you can and probably will perform mathematical
operations with numbers. To perform these feats, you use operators, the characters

430

flash CS6: The Missing Manual

www.it-ebooks.info

that indicate addition, subtraction, multiplication, and so on. Table 12-1 shows the
operators you can use in ActionScript.

Using Data
Types,
Variables,
and
Constants

Table 12- 1. This table lists the operators you can use in ActionScript 3.0. Examples on the right show each operator in action.
Operator

Function

Example

+

Adds two numbers

2+3

-

Subtracts number on right from number on left

3-2

*

Multiplies two numbers

2*3

/

Divides number on left by number on right

6/2

>

Expresses greater than (which may make a statement
true or false)

6>2

<

Expresses less than (which may make a statement
true or false)

2<6

>=

Expresses greater than or equal to (which may make
a statement true or false)

6>=2

<=

Expresses less than or equal to (which may make a
statement true or false)

2<=6

==

Expresses equality (which may make a statement
true or false)

12==6*2

!=

Expresses inequality (which may make a statement
true or false)

3!=2

=

Assignment operator

myNumber = 6*2

Notice the difference between the equality operator and the assignment operator.
The equality operator is used to make a statement: The data on the right side of the
equality operator is equal to the data on the left. That statement may be true or false.
The assignment operator has a different job. The assignment operator changes the
value of the variable on the left. (There’s more on variables on page 435.)
Precedence and parentheses
Some statements are simple and unambiguous, like this one:
myNumber = 3 + 12

But a statement can include more than one operator:
myNumber = 3 + 12 / 3

When there’s more than one operator, it’s a little harder to anticipate the value. In
general, ActionScript multiplies and divides before it adds and subtracts. But you
can make things easier for yourself (and others) to read and understand your work
by using parentheses to dictate the order of operations. So the following statement
forces ActionScript to perform the addition before it performs the division:
myNumber = (3 + 12) / 3
Chapter 12: Introduction to ActionScript 3.0

www.it-ebooks.info

431

Using Data
Types,
Variables,
and
Constants

Strings
In geek-speak, strings are sequential lists of letters, numbers, and symbols—strings
of characters. For example, this very sentence is a string. “Foo” is a string with three
characters. You identify strings by placing them inside either single or double quotes:
myCar = "Stutz Bearcat";
visitorName = "Erwin Baker";

If you want to include quotes within your string, you have a couple of options. For
example, you can use single quotes to enclose your string when you want to use
double quotes in the string, like so:
famousQuote = 'He said, "My name is Erwin Baker."'

Strings and operators
You can’t do math with strings, not even if some of the characters are numbers.
But there are other types of operations that work with strings. One very common
operation is to build up longer strings by adding words or characters. Usually this
is called concatenation, and it looks a lot like string addition:
carModel = "Stutz" + " " + "Bearcat";

The previous statement adds three strings together. First, it adds a space character (between the two empty quotes) to the word Stutz. Spaces, punctuation, and
numbers are all part of the String data type. Then it adds Bearcat onto the string.
So, the value of the stored variable carModel reads Stutz Bearcat.
Just to prove the point that you can’t do math with strings, consider these two
statements:
parkingTicket = 50 + 25;
parkingTicket = "50" + "25";

In the first example, parkingTicket is an unpleasant but reasonable number, 75. In
the second example where two strings are concatenated, you end up with a string
value in parkingTicket of 5025.
It’s also fairly common to compare two strings to see if they’re the same, which you
have to do every time someone types in a password. To do that type of comparison, you use the equality operator (==), not the assignment operator (=). Here’s an
example:
visitorPassword == textFieldPassword;

You can use a statement like that to test whether a password typed into a Flash text
field matches the password the visitor previously supplied.
These aren’t the only operations you can perform with strings, just two of the most
common. You’ll see examples using strings throughout the rest of the book. Chapter
17 covers several common string programming techniques, beginning on page 581.

432

flash CS6: The Missing Manual

www.it-ebooks.info

Boolean
A Boolean is a data type that has one of two values: true or false. The Boolean is
very handy, because programs often test conditions and then report on the results.
For example, parkingMeterExpired could be a Boolean data type. In that case, you
might see an expression:

Using Data
Types,
Variables,
and
Constants

if (parkingMeterExpired == true)
{
ticketVehicle();
}

In human-ese, this translates to “If the value of parkingMeterExpired equals true,
then run the function ticketVehicle().” The equality operator creates a statement
that’s either true or false. You’re not assigning a value to parkingMeterExpired; you’re
creating a statement that ActionScript can test.
Booleans and operators
The most common Boolean operator has been used several times in this chapter;
that’s the equality (==) operator that’s used to test if two statements are equivalent.
So, if parkingMeterExpired is a Boolean data type, then it has one of two values:
true or false. That makes the statement:
parkingMeterExpired==true

either true or false.
For the times when it’s more convenient to test for a false statement, use the inequality operator (!=) as shown in this example:
parkingMeterExpired!=true

Arrays
Unlike the simple data types, arrays are containers that can hold more than one
item. Those items don’t even need to be the same data type. For example, a single
array can hold Numbers and strings, which makes them a great way to keep related
information together. Imagine you want to collect different tidbits of information
about people who belong to your Stutz Bearcat auto club. For example, you might
want to record first name, last name, age, number of speeding tickets, and whether
their club dues are paid up:
memberDetailsArray = ["Erwin", "Baker", 38, 12, true]

Each tidbit of data is called an element, so the above array has five elements. In
the example, the first two elements of the array are strings. The following two are
numbers. The last item is a Boolean, so it can have only two values: true or false.
An array can even hold another array as one of its elements. Individual elements
are separated by commas, and the entire array is enclosed in square brackets. You
can access individual elements in the array by number, but there’s one “gotcha” to

Chapter 12: Introduction to ActionScript 3.0

www.it-ebooks.info

433

Using Data
Types,
Variables,
and
Constants

remember. The first element in an array is referred to as number 0. So, if you want
to change the last name “Baker” to “Paxton” you assign a new value, like so:
memberDetailsArray[1] = "Paxton";

In ActionScript, arrays are a type of object, and there are a whole crop of methods
(functions) you can use to work with them. For example, there are methods to do
all of the following:
• Add a new element to an array.
• Remove an element from an array.
• Report the number of items in an array.
• Sort and reorder the elements in an array.
Earlier in this chapter (page 426), you saw examples of ActionScript functions. Methods are also functions—they’re actions; they do something. What makes methods
special is that they’re part of the definition of an object. For example, one method
that adds a new element to an array is called push. You can think of it as pushing
another plate on a stack of dishes. You use the dot (.) nomenclature to connect it to
the function. Suppose you want to add a new element to your memberDetailsArray
that represents the year a member’s car was built. Here’s the statement that does
the job:
memberDetailArray.push(1937);

The dot (.) nomenclature looks familiar because ActionScript also uses it to access
an object’s properties. Arrays are used in examples in the following chapters.

ActionScript Built-In Data Types
ActionScript has a number of built-in data types that are made up of some of the
simple data types. Some examples include familiar Flash objects, like the following:
• MovieClip
A symbol (from the Flash Library) that’s a movie clip.
• TextField and TLFTextField
A field (or box) that holds text. You can set and change the contents, or your
audience can type them when your program is running.
• SimpleButton
A special type of graphic that’s preprogrammed to behave like a button. Click
it, and your program does something.
• Date
The Date data type represents a specific moment in time. ActionScript code
can access the month, day, hour, and second.

434

flash CS6: The Missing Manual

www.it-ebooks.info

Variables
If you followed some of the exercises earlier in this chapter, you may have noticed
that programming is the fine art of swapping one value for another. Move an object,
change a color, start playing a movie clip at a certain point—those actions require
providing a new value for a color, stage position, and timeline position.

Using Data
Types,
Variables,
and
Constants

Like buckets or baskets, variables are the containers that hold these changing values.
Declaring variables
Before you can use a variable, you have to tell ActionScript 3.0 what to expect.
You introduce the name you’re planning on using and you explain whether it’s a
number, string, or some other data type. It’s called declaring a variable, and here
are some examples:
var
var
var
var

minutesOnMeter : Number;
carModel : String;
licensePlate: String;
meterExpired: Boolean;

If you want, you can assign a value to your variable when you declare it.
var minutesOnMeter : Number = 60;
var carModel
: "Stutz Bearcat";
var meterExired
: Boolean = false;
Tip

In general, ActionScript isn’t fussy about white space. If you want to include extra spaces to line things
up as shown in previous examples, that’s fine. Just don’t make mistakes with your spelling and punctuation or
you’ll get a virtual ruler to the back of your hand.

Once you’ve declared that the variable minutesOnMeter is a Number, you can’t
store a different type of data in it. For example, if you try to assign a string to
­minutesOnMeter, an error message appears in the Compiler Error panel, like the one
in Figure 12-12: “Implicit coercion of a value of type Number to an unrelated type
String.” Sentences like that may make you feel like you should call a lawyer, but you
can usually figure out the problem. Double-click the error message, and Flash takes
you directly to the line in your code that caused the error.

Figure 12-12

ActionScript’s Compiler Error panel provides about
the problem. Location tells you where the error is,
Description names the type of error.

Chapter 12: Introduction to ActionScript 3.0

www.it-ebooks.info

435

Conditionals
and Loops

Constants
A constant is a value that never changes through the course of the program. It
might be the color of a stoplight (red) or the boiling point of water (100 degrees
Celsius). Use constants when it’s easier or more readable to refer to something by
name (Stop, BoilingPoint) rather than value. ActionScript programs use variables
more often than constants.
Declaring constants
As with variables, you have to declare constants, and it makes sense to provide their
value at the same time:
const PARKING_TICKET : Number = 50;

Most programmers use all caps for constants to differentiate them from variables.
If you accidentally try to assign a value to a constant, you get one of those nasty
compiler error messages.

Conditionals and Loops
Using conditions and loops, you can teach your Flash animations how to make
decisions, and viewers will think both you and your animations are very smart.
ActionScript provides a few different decision-making statements that you can use
depending on your needs. In human-ese, they work like this:
• If (this condition exists) do (these actions)
• While (this condition exists) do (these actions)
• For (X number of times) do (these actions)
Those three forms of decision-making may seem very similar, but as you’ll see in the
following explanations and examples, there are some important basic differences.
You’ll hear programmers refer to these decision-making statements using different
terms, like “program flow controls,” “conditionals,” and “loops.” These tools have
one thing in common: They all help you dictate whether or not ActionScript runs
some specific lines of code.

Conditionals: if() and switch() Statements
Two of ActionScript’s statements tackle the “If (this condition exists) do (these actions)” situations. The first and simplest state is appropriately called an if statement.
if() statements test a condition
The most basic if statements are built like this:
if (this is true) {do this}

436

flash CS6: The Missing Manual

www.it-ebooks.info

So, if you’re writing an ActionScript statement for a parking meter cop, it might
look like this:

Conditionals
and Loops

if (parkingMeterExpired==true) {writeTicket();}

It works like this: If the condition within the parentheses is true, then your code
performs the statements within the curly brackets. If the expression in the parentheses is false, then your code ignores the statements within the curly brackets. In
this example, if the parking meter has expired, the cop writes a ticket. If the parking
meter hasn’t expired, the cop doesn’t do anything. (Well, maybe she goes for donuts.)
Note The parentheses () after writeTicket are part of any function including the writeTicket() function. The
following semicolon is the proper way to end a statement.

In some cases, you may want to provide some additional alternatives. Suppose
you’re sending your assistant to the auto store. You want him to buy a Stutz Bearcat,
but in the unlikely event that the store doesn’t have any Bearcats, you want him
to buy a Packard Roadster. In ActionScript, that instruction takes the form of an
if…else statement.
if (storeHasStutzBearcat==true) {
buyStutzBearcat();
} else {
buyPackardRoadster();
}

if…else if statements choose from many options
You can string if…else statements together to handle several different conditions.
The result looks like this:
if (storeHasStutzBearCat==true) {
buyStutzBearcat();
} else if (storeHasPackardRoadster==true) {
buyPackardRoadster();
}
else if(storeHasHudson==true) {
buyHudson();
}

There’s a statement that should resolve any out-of-stock issues at the car store.
ActionScript works through the statements from top to bottom. When it finds a car
in stock, it buys the car. Using this if…else if structure, your assistant will purchase
only one car. For example, you won’t end up with both a Packard Roadster and a
Hudson. If the Packard is in stock, the function buyPackardRoadster() runs and the
else if(storeHasHudson…) portion is ignored. If none of the conditions are met, then
your assistant buys no car.

Chapter 12: Introduction to ActionScript 3.0

www.it-ebooks.info

437

Conditionals
and Loops

switch() statements choose from many options
You can string together as many if…else if conditions as you want, but at some point
the code gets a little awkward and hard to read. The switch() statement makes a
good alternative when you have more than three conditions to check. Suppose you
want to create a system where a parking ticket costs more depending on the number
of tickets the scofflaw has received. The variable numberOfTickets holds a Number
value. A switch() statement might look like this:
switch (numberOfTickets) {
case 1 :
parkingTicket = 25;
break;
case 2 :
parkingTicket = 50;
break;
case 3 :
parkingTicket = 75;
break;
case 4 :
parkingTicket = 100;
break;
case 5 :
parkingTicket = 125;
break;
default :
parkingTicket = 0;
}

The switch statement takes the variable numberOfTickets and, starting at the top,
compares it to the first case. If the offender has a single parking ticket, then the
value of parkingTicket is set to 25. When ActionScript gets to the word break, it
jumps to the end of the switch() statement and doesn’t run any of the other cases.
The default case is used when none of the other cases match.

Loops: while() and for() Statements
There’s a good rule of thumb to remember with computers. If you’re doing the
same chore over and over again, there’s probably some way your computer can do
it more efficiently. Computers are great at repetitive tasks, and that’s certainly true
of ActionScript, which has two great ways to repeat statements in your programs.
Using the while() statement, you can have your computer repeat a task as long as
a certain condition exists. Using the for() statement, you can tell your computer
exactly how many times to repeat a task.
while() statements repeat tasks as long as a condition
is met
The while() statement checks to see if a condition is met. If it is, then the code within
the curly brackets runs. If the condition isn’t met, then ActionScript moves on to the
438

flash CS6: The Missing Manual

www.it-ebooks.info

next statement. It’s very common to use the while() statement with a variable that’s
incremented. So, if you want your assistant to pop down to the auto store and buy
six Stutz Bearcats (enough for you and a few close friends), you’d put together a
statement like this:

Conditionals
and Loops

while (myStutzBearcats < 6) {
buyStutzBearcat();
myStutzBearcats = myStutzBearcats + 1;
}

Like the if() statement, the condition for the while() statement is inside parentheses, and if the condition is met, then the statements inside curly brackets {} run.
In this example, the second line runs a function that buys a Bearcat. The third line
increments the variable that keeps track of how many Bearcats you own. As long
as that number is less than 6, the program loops; you buy another and add 1 to the
number of Bearcats you own.
The whole idea of incrementing a value, like myStutzBearcats, is so common that
there’s even a shorthand way of adding one to a variable. The third line could also
read:
myBearCats++;

There’s no assignment operator (=), but the statement is assigning a new value to
myBearcats. When you want to count down, you can use the decrement operator
(--). Here’s a statement that sells off your Stutz Bearcats until you have only three left.
while (myStutzBearcats > 3 {
sellStutzBearcat();
myStutzBearcats--;
}
Note If you’re reading ActionScript code for pleasure and you come across i++, don’t be surprised. The i
usually stands for iterator or integer. It’s the programmer’s way of saying, “I need an integer to operate this loop,
but it can be any old integer, it doesn’t need a fancy variable name.” Using the lowercase i as a stand-in isn’t a
rule, just a programmers’ tradition.

for() statements repeat tasks a specific number of times
The for() loop gives you a very compact way to repeat a portion of your program.
The mechanics that make a for() statement run are all packed in the first line. It’s
so compact and down to business that it reads a little more like machine talk than
human talk. Here’s an example:
for (var myStutzBearcats:Number = 0; myStutzBearcats < 6; myStutzBearcats++)
{
buyStutzBearcat();
}

Chapter 12: Introduction to ActionScript 3.0

www.it-ebooks.info

439

Combining
ActionScript’s
Building
Blocks

Like the earlier statement, this loop buys six Stutz Bearcats. A lot goes on in that
very first line of code. From left to right, here’s what happens:
• The word for indicates a for() statement.
• The beginning parenthesis is your clue that the condition follows.
• The word var means that a variable is being declared.
• myStutzBearcats:Number is the name of that variable and its data type.
• The assignment operator (=) immediately gives the variable a value of zero.
• Following the semicolon, you finally arrive at the condition that’s being tested:
Are there fewer than six Bearcats?
• The semicolon ends that statement, and in the next myStutzBearcats is
i­ncremented.
The for() statement is very compact, and it puts everything you need to know right
up front. Script writers often create for() statements using the variable i for the
condition (see the note on page 439). You’ll often see something like:
for (var i = 0; i < 6; i++) {
buyStutzBearcat;
}

Just like the earlier for statement, this one purchases six of those beautiful Bearcats.
Note For an example of the for() statement in action, download 12-2_For_Statement.fla from the Missing
CD page (www.missingmanuals.com/cds/flashcs6mm).

Combining ActionScript’s Building Blocks
This chapter covered a lot of ActionScript theory, and you may be itching to put some
of these concepts into action. In the following chapters, there are many examples
that show you how to do just that.
Here’s a recap of the topics covered in this chapter:
• Classes are blueprints for objects.
• Instances are specific objects, in use.
• ActionScript objects may have properties, methods, and events.
• Properties are the characteristics of objects; by changing values, your programs
can change those characteristics.
• Methods and functions are the actions in ActionScript.
• Methods are included in the definition of an object.

440

flash CS6: The Missing Manual

www.it-ebooks.info

• Functions (technically called function closures) are independent of objects.
• Events are used to make Flash projects interactive.

Combining
ActionScript’s
Building
Blocks

• Events have two parts: 1) event listeners that wait for events like mouse clicks;
and 2) event handlers that run ActionScript statements in response to the event.
• Variables are containers for values. Constants are named values that never
change.
• Variables can be one of several different data types: number, int, uint, string,
Boolean, and array.
• Arrays can hold multiple values and different types of data.
• Operators are used to perform math functions, assign values, and compare
values.
• Conditional statements, like (if, if…else if, and switch) test to see if a condition
exists, and then, based on the result, run or ignore portions of ActionScript code.
• Loop statements (like while and for) run portions of ActionScript code either a
specified number of times, or while a condition exists.

Chapter 12: Introduction to ActionScript 3.0

www.it-ebooks.info

441

www.it-ebooks.info

chapter

Controlling Actions
with Events

13

I

n the previous chapter, you learned how to use ActionScript to move, transform, and
change parts of your animation. But when something happens is just as important
as the action itself. For example, you may want a movie object to start playing as
soon as the web page opens, or you may want to let your audience decide when
to watch it. You use events to control the actions in your animation. It’s as if your
ActionScript program tells Flash: “When this (event) happens, do this (action).” The
classic example is a button on the stage. The action statement says something like:
“When this button gets clicked, go to Frame 25 of the movie clip, and then start
playing.” You provide the programming that puts the people who view your Flash
creations in the driver’s seat. Using events and event handlers, you can send your
programs off into the world on their own, confident that they’ll behave.
This chapter explains how to use ActionScript to detect events when they happen
and how to get your animations to perform specific actions as a result. Unlike previous versions, ActionScript 3.0 has one single way of handling all kinds of events. So,
once you learn the basics, you’re all set to handle any event.

How Events Work
There are many different types of events. Some events—like a mouse click—are triggered by the people viewing your animation. Other events are simply occurrences
in a Flash animation—like a movie clip reaching the last frame. The button is one of
the easiest events to understand, and, not surprisingly, it’s one of the most common.
Someone clicks a button, and then an action takes place. To the person clicking, it

443

www.it-ebooks.info

How Events
Work

appears that the button makes something happen. That’s true to some extent, but
there are some additional gears and levers behind the scenes.
The object related to the event is called the event target. So in the button example,
the button is the event target. When an event like a button click happens, an event
object is created. The job of this new event object is to deliver information to an
event listener, which has instructions about what to do when that event happens.
So how does the event target know where to deliver the information carried within
the event object? That detail is handled by registering the event. In effect, the code
that registers an event says, “When this event happens, send that event object to
this location.” Figure 13-1 shows the major elements involved in event handling.

target

register

Figure 13-1

When an event related to the target happens, ActionScript sends a message, in the form of the
event object, to the event listener, which performs the actions. You register specific events, like a
mouse click, beforehand, so the target knows where to send the event object.

event
object
listener

Like most things in ActionScript, an event is considered an object. Obviously, it’s
not an object in the sense that a rectangle or a circle on your stage is an object. It’s
an object by the strict ActionScript definition of an object because it has properties
where it stores information about the event, and it has methods (functions) that let
you perform actions related to the event. The Event class is the definition of events
in a very general sense—similar to the class definition of a rectangle as a four-sided
object. The Event class is the basis for other, more specific Event objects. Different
types of events, such as mouse events, keyboard events, and error events, have
properties and methods that serve their specific needs.
FlashBack

Past Events
As ActionScript matured with each version of Flash, it sprouted
several different ways to handle events. Having various ways
to handle events may not have been a bad thing at the time,
but at some point in ActionScript’s evolution, it became a
problem. Some methods were easy to use but made ActionScript code harder to maintain and troubleshoot. One obvious
problem, from an ActionScript programmer’s point of view,

444

was remembering which event-handling routines to use in
different circumstances.
One of the welcome changes that ActionScript 3.0 brings is a
single, consistent way to deal with events. This chapter explains
in detail how to handle events using ActionScript 3.0.

flash CS6: The Missing Manual

www.it-ebooks.info

Mouse Events

Mouse Events

The mouse is the most common way your audience interacts with your Flash creation,
so a lot of events center around the mouse. The MouseEvent class detects all sorts of
mouse events, including a variety of clicks and mouse movements, like mouse over
(when the cursor moves over an object) and mouse out (when the cursor moves
away from an object). Such events are the stuff that buttons and other smart objects
are made of. So roll up your sleeves and get ready to create a mouse event listener.
If you have a project deadline looming and just need bulletproof code for a simple
mouse-over event, see the box below.
Note A mouse event refers to an event generated by any kind of pointer device, whether it’s a mouse, a
trackpad on a laptop, or a drawing pad. Touch and gesture events for smartphones and tablets are managed by
their own event objects.

Frequently Asked Question

Create an Event Handler in a Snap
I need an ActionScript 3.0 event handler now! Where can I find
some cut-and-paste code?
Events and event handlers are fundamental to most ActionScript projects, so it’s great to have a thorough understanding
of their workings. You’ll get that in the following pages. But
if you don’t have time to look up references and write the
code, Flash CS6 can help you out with Code Snippets. These
predesigned chunks of ActionScript 3.0 code are ready for

you to drop into your project. So, if you need a mouse-over
event handler, select a movie clip symbol and then choose
Window→Code Snippets. Expand the Event Handler, and
then click Mouse Over Event. Flash adds several lines of code to
your project and displays it on the Actions panel. The code has
comments and instructions to help you customize the snippet
to work in your project.

This first example uses two movie clip objects: a circle and some text. The goal is
to create an event listener that recognizes when the mouse is over the circle and
when it’s not—your basic rollover action. When the mouse moves over the circle,
the text changes to say “mouse over.” When the mouse moves out of the circle, the
text changes back to the original message, “mouse out.” Not an earthshaking event,
but you have to start somewhere.
Note

You can create your own movie clip as described in the following steps, or you can download
13-1_Mouse_Event.fla from the Missing CD page at www.missingmanuals.com/cds/flashcs6mm. If you want to
see how the final project works, download and test 13-2_Mouse_Event_done.fla.

Chapter 13: Controlling Actions with Events

www.it-ebooks.info

445

Mouse Events

Here are the steps to set up a Flash document with the necessary symbols for the
mouse event experiment.
1. In a new Flash document, draw a circle, and then create some static text
that reads “mouse out.”
When you’re done, you have two objects in Frame 1 of your movie, as shown
in Figure 13-2.

Movie clip instance

Name of instance

Symbol type

Figure 13-2

Before you can program the
instances of the symbols on the
stage, you need to give them
names. Here the circle is a movie
clip symbol named mcCircle.
The text is a movie clip symbol
named mcText.

2. Convert both the circle and the text to movie clip symbols (Modify→“Convert
to Symbol”).
This creates two symbols in the Library and leaves instances of the symbols on
your desktop. As you create the symbols, use whatever names seem appropriate, like Circle and Text. The symbol names in the Library aren’t as critical as
the instance names described in the next step. Your ActionScript code will use
these instance names.
3. Select the circle movie clip instance on the stage, and then, using the Properties panel, name it mcCircle, as shown in Figure 13-2. Select and then name
the text movie clip instance mcText.
You can use any name you want for instances on your desktop, but it’s helpful
to add something to the name that identifies the type. Here, mc indicates that
the symbol instances are movie clips.
4. Double-click mcText to open the movie clip symbol for editing.
As shown in Figure 13-3, the Text movie clip opens. At the top of the window
you see “breadcrumb” navigation buttons: Scene and mcText. These are helpful

446

flash CS6: The Missing Manual

www.it-ebooks.info

when you open symbols within symbols. The new button displays the Library
symbol name (not the instance name). On the stage, the text remains boldly
colored to indicate that it’s part of the symbol you’re editing. The circle is faded
to indicate that it’s not part of the symbol you’re editing.

Scene tab

Test movie clip tab

Movie clip being edited

Mouse Events

Figure 13-3

When you double-click a
movie clip symbol on the
stage, Flash changes to
symbol edit mode, and the
symbol’s name appears in
the Edit bar. Any changes you
make to a symbol change all
the instances based on that
symbol.

5. Click Frame 2 in the timeline, and then press F6 to add a keyframe that
includes content from the previous frame.
A new keyframe appears containing your text.
6. Use the text tool to change the text in Frame 2 to read mouse over.
Click anywhere in the text to begin editing. When you’re done, just click outside
the text or choose another tool from the Tools palette.
7. Use the Properties panel to label Frame 1 out , and then label Frame 2 over.
You can use either labels or frame numbers as references in ActionScript programming. In many ways, labels are the best choice because they make your
code easier to understand when you read it. A good label explains more than
a number any day. Also, if you insert new frames in the timeline, the frame
numbers in your ActionScript will no longer be valid.

Chapter 13: Controlling Actions with Events

www.it-ebooks.info

447

Getting Help
for Events
and Event
Listeners

8. Click Scene 1 to exit the mcText movie clip and go back to your main movie
clip.
The symbol closes, and you’re back on the main timeline.
9. Add a new layer to your main movie clip, and then name it actions .
It’s always best to create a special, well-labeled layer to hold your ActionScript
code.

Getting Help for Events and Event Listeners
Now that the Flash document is ready to go, it’s time to write and register an event
listener, but where do you start? Computers are fussy beasts and won’t work properly unless everything is done their way. ActionScript is the same. Event handling
uses specific words, punctuation, and even capitalization. Everything has to be just
so, or your event will be a nonevent. For beginning ActionScript coders, one of the
challenges is learning the right words to use to define and register particular events.
This section explains what questions you need to ask as you’re coding and where
to find the answers.
The first question to ask is this: What type of event is going to serve as the trigger
to set your actions in motion? In this case, the event is the movement of the mouse
over an object named mcCircle, so this is a mouse-related event. With that bit of
knowledge, you can consult ActionScript reference tools that list different types of
events. You’re looking for one that sounds like it deals with mouse events.
The best reference tool that’s close at hand while you’re ActionScripting is the
­ActionScript 3.0 Reference. Open it through the help menu: Help→Flash Help. A
web page opens with many different help topics. Click the ActionScript topic near
the top of the page, then click ActionScript 3.0 Reference. The help systems shows
packages (groups of ActionScript classes) in the top left panel and specific classes
in the lower left panel. Details for a class appear in the large right panel.
This electronic reference book provides details on every object, function, and element
of ActionScript. Click the names on the left to open up descriptions and examples
in the main window. Events are in the list of “packages” in the upper-left corner.
The packages that begin with “fl.” are related to Flash components, video, multilanguage tools, motion classes, tweens, and transitions. Some of these you can’t use
unless you’ve added the related components to your Flash document. The packages
that begin with “flash.” are built into Flash Player and work in any Flash document.
Scroll down and click “flash.events.” The main window fills with classes and descriptions. Under the heading Classes, you see all the different types of event classes.
Some may seem a little mysterious, like AsyncErrorEvent. But other names—like
KeyboardEvent and MouseEvent—sound more helpful. One click on MouseEvent,
and your journey is over. The window fills with all the programmer’s details you

448

flash CS6: The Missing Manual

www.it-ebooks.info

need to handle a MouseEvent, like the public constants that mouse events use (see
the box below).

Getting Help
for Events
and Event
Listeners

Tip It’s kind of a lengthy trip to hunt down the help details on a specific event type, but it’s worth remembering. If you end up writing a lot of event listeners, you’ll probably remember the details for the events you use
all the time. Occasionally, though, you’ll need to look up the details for some oddball and unfamiliar event type.
So leave some breadcrumbs (or fold down the corner of this page) to remind yourself how to look up events in
the ActionScript 3.0 Reference.

The reason for mucking through all this programming gobbledegook is about
to become apparent. Scroll down and look at the items under Public Constants.
These are the names of the actual events that MouseEvent can recognize: CLICK,
DOUBLE_CLICK, and so on, including MOUSE_OUT and MOUSE_OVER—the two
events you need for your script. Each event type (MouseEvent, KeyboardEvent,
­ErrorEvent) has related constants that you use when you create event listeners. You
have to type these constants exactly as they’re defined (including capital letters,
underscores, and so on) for your event listener to work. In addition to the constants,
the events have properties you can use in your programs. For example, MouseEvent
has properties called altKey, ctrlKey, and shiftKey. These are Booleans, and they can
tell you whether a particular key is being pressed during a mouse event. You can use
them to define, say, a special action for Shift-click and a different one for Alt-click.
Coders’ Clinic

Mouse Events: Public Constants
Here’s the complete list of constants used by MouseEvent, as
shown in ActionScript 3.0 Reference. The first word, in capital
letters, is the constant you use to identify the event. The
word after the colon, String , indicates that the constant is of
the string type. The word in quotes is the constant’s actual
value. The most important part of this definition is the word
in caps, because that’s the word you use to register listeners
for a particular mouse event, as explained in the next section.
You can think of these constants as the specific triggers for a
MouseEvent.

CLICK : String = "click"
DOUBLE_CLICK : String = "doubleClick"
MOUSE_DOWN : String = "mouseDown"
MOUSE_MOVE : String = "mouseMove"
MOUSE_OUT : String = "mouseOut"
MOUSE_OVER : String = "mouseOver"
MOUSE_UP : String = "mouseUp"
MOUSE_WHEEL : String = "mouseWheel"
ROLL_OUT : String = "rollOut"
ROLL_OVER : String = "rollOver"

Tip
You can ignore the items with the red triangles next to their names unless you’re planning on doing
some AIR (Adobe Integrated Runtime) programming. The triangles indicate that these classes, properties, and
methods are available only in AIR. For more details on AIR projects, see Chapter 21.

Creating a Rollover with a Mouse Event
So you know you want to listen for a mouse event; specifically, you want to trigger
some actions when the mouse is over the mcCircle movie clip. That makes mcCircle

Chapter 13: Controlling Actions with Events

www.it-ebooks.info

449

Getting Help
for Events
and Event
Listeners

the event target, because it’s the object where the event takes place. As described
earlier and as shown in Figure 13-1, the event target creates an event object, and
then sends it to an event listener. The event object delivers information about the
event that happened. Often, all that’s necessary is notification that the event took
place. As programmer, it’s your job to tell the event target the name of the event
that serves as a trigger and where to deliver the event object. This process is called
registering an event, and it’s done with a line of code like this:
mcCircle.addEventListener(MouseEvent.MOUSE_OVER, mouseOverListener);
Note

As usual, create an actions layer in your timeline and use the Actions panel (Window→Actions) to
write your code.

In ActionScript-speak, this statement “registers an event listener.” Almost all events
use a similar method to register event listeners, so it’s worthwhile to examine the
statement completely. The first chunk of code, mcCircle.addEventListener, is nearly
recognizable. The dot syntax indicates that mcCircle is an object, and that makes
addEventListener either a property or a method of the object. The action verb “add”
in the name hints that it’s a method, because methods are actions, while properties
are characteristics. In fact, addEventListener is a method that’s included with just
about every object in Flash. That means you can use nearly any object to register
an event listener. The details in the parentheses are the parameters for the method.
The first parameter is the event the listener is listening for. In this case, it’s a
­MouseEvent, and the specific type of event is named by the constant MOUSE_OVER.
As you know from your extensive research in the Flash help files, those capitallettered constants are the specific triggers for a MouseEvent. A comma separates
the parameters of the method. In this statement, there are two parameters. The
second parameter, mouseOverListener, is the name of the event listener. An event
listener is simply a function—a series of statements or actions—that run when the
event happens. You get to name (and write all the code for) the event listener. It’s
helpful to use a name that shows that this is an event listener and that describes the
event that triggers the actions; hence the name “mouseOverListener.”
The event listener is a function, much like the functions described on page 426. The
most significant detail is that the function has to list the event object in its parameters. You can think of the event object as the message sent from the event target
to the event listener. Here’s the code for mouseOverListener:
function mouseOverListener (evt:MouseEvent):void
{
mcText.gotoAndStop("over");
}

The first line begins with the keyword function, indicating that what follows defines a
function—a list of actions. Next comes the name of the function: ­mouseOverListener.
The function’s parameter is the event object; in this case, the event object’s name
is evt. That’s followed by a colon (:) and the object class MouseEvent. The name
450

flash CS6: The Missing Manual

www.it-ebooks.info

doesn’t matter—it can be evt, e, or george. As always, it’s helpful to choose a name
that means something to you now and will still make sense 5 years from now when
you’re trying to remember how the code works. You do have to accurately define the
class or type of event, which in this case is MouseEvent. The term :void indicates that
this function doesn’t return a value. If you need to brush up your function-building
skills, see page 426.

Getting Help
for Events
and Event
Listeners

Once the curly brackets begin, you know that they contain the list of statements or
actions that the function performs. In this case, there’s simply one line that tells the
movie clip mcText to go to the frame labeled “over” and stop there. All in all, here’s
the complete code so far, with accompanying line numbers:
1
2
3
4
5
6

mcCircle.addEventListener(MouseEvent.MOUSE_OVER, mouseOverListener);
function mouseOverListener (evt:MouseEvent):void
{
mcText.gotoAndStop("over");
}

What you have at this point is one complete and registered event listener. Line 1
identifies mcCircle as the event target for a MOUSE_OVER event. It also registers
the event listener as mouseOverListener. Beginning on Line 3, you have the code
for mouseOverListener. Any actions you place between those curly brackets will
happen when the mouse cursor is over mcCircle.
You can go ahead and test your movie if you want, but it’s not going to behave all
that well. It needs a few more lines of code to make it presentable. If you test your
movie at this point, you’ll see a lot of movie clip flickering. If you mouse over the
circle, the flickering stops and the text changes to “mouse over.” That much works
well. When you move the mouse out of the circle…nothing happens. The text still
reads “mouse over.” That’s because you haven’t written the mouse-out event. Fortunately, it’s very similar to the mouse-over code. In fact, all you have to do is copy
and paste the mouse-over code, and then make changes where needed, as shown
in bold text in this example:
7
8
9
10
11
12
13

mcCircle.addEventListener(MouseEvent.MOUSE_OUT, mouseOutListener);
function mouseOutListener (evt:MouseEvent):void
{
mcText.gotoAndStop("out");
}

By now, you should be able to read and understand most of the code. Like the first
example, the event is registered using the mcCircle object. The event in this case is
MOUSE_OUT, and the event listener is named accordingly: mouseOutListener. The
action part of the event listener sends the timeline playhead to the frame labeled
“out,” which displays the text “mouse out”—back where it was when the program
started. Perfect.
Chapter 13: Controlling Actions with Events

www.it-ebooks.info

451

Getting Help
for Events
and Event
Listeners

Well, almost perfect. If you test the movie now, you’ll find that it behaves well when
you mouse over the circle and when you mouse out of the circle. At the beginning
though, there’s still a bunch of movie clip flickering, unless the mouse starts off
over the circle. Time for a little Flash troubleshooting. Unless they’re told otherwise,
movie clips play one frame, and then the next, and so on, until they reach the last
frame, and then they play over again. And again. And again. Your main movie has
only one frame, so it’s not causing the flickering. mcCircle only has one frame, so it’s
not causing the flickering either. The mcText clip has two frames, and those are the
ones doing the dance when you start your animation. You need a line of code that
stops the movie clip on Frame 1. Then it will be up to the mouse events to control
which frame is shown. All you need is one line that says:
mcText.gotoAndStop(1);

The method gotoAndStop() is part of every movie clip. This bit of code tells mcText
to go to Frame 1 and stop. The parameter inside the parentheses has to refer to a
specific frame. You can do that with a frame number, as shown here, or you can do
it with a frame label, as you did in your event listeners. If you’re wondering how you
can find out about the properties and methods for particular classes and objects,
see the box below.
Coders’ Clinic

Getting Help for ActionScript Classes
On page 448, the section “Getting Help for Events and Event
Listeners” explained how to find an event and all its programming details in the ActionScript 3.0 Reference. You can use
the same reference to look up the properties and methods
of particular classes and objects. For example, if you can’t
remember the exact spelling for the “goto and stop” method,
you can look up the MovieClip class, and you see all the methods
associated with the class.

left under Classes. Click the word “MovieClip,” and you see
the complete and formal definition of the class, including the
public properties that you can change through ActionScript
programming. Below that, you see the public methods including gotoAndStop(). There’s a short description that describes
what the method does and the type of parameters it requires.
Scroll down far enough, and you’ll see examples of how to use
the MovieClip class, along with its properties and methods.

After opening the ActionScript 3.0 Reference (see the box on
page 441), look for MovieClip in the scrolling box at the bottom

As a statement on the first frame of your main movie clip, mcText.gotoAndStop(1)
runs when the animation begins. It doesn’t really matter whether it comes before
or after the other lines of code. Those other bits of code don’t do anything until an
event happens. Not so with the statement above. There’s nothing to prevent it from
running as soon as Frame 1 of the main movie clip loads.
In ActionScript programming, the order in which different functions and statements
appear isn’t always important. It doesn’t matter which event listener appears first in
your code. The order in which the event listeners run is determined by the order in
which someone mouses over or out of mcCircle. So whenever possible, you may as
well arrange your code so it’s easy to read and understand. In this case, it’s probably

452

flash CS6: The Missing Manual

www.it-ebooks.info

best to register all your event listeners in the same spot, and then put the event
listener functions together. You may also want to put the code that isn’t dependent
on a listener at the very top. So here, with a little rearranging for readability, is the
code up to this point:

Getting Help
for Events
and Event
Listeners

1
mcText.gotoAndStop(1);
2
3
mcCircle.addEventListener(MouseEvent.MOUSE_OVER, mouseOverListener);
4
mcCircle.addEventListener(MouseEvent.MOUSE_OUT, mouseOutListener);
5
6
function mouseOverListener(evt:MouseEvent):void
7
{
8
mcText.gotoAndStop("over");
9 }
10
11 function mouseOutListener(evt:MouseEvent):void
12 {
13
mcText.gotoAndStop("out");
14 }

Line 1 stops mcText in its tracks before it has a chance to start flickering between
its two frames. Lines 3 and 4 register event listeners. Beginning on line 6 are the
functions that make up the event listeners. At this point, you can test your program,
and it should behave pretty well. If something unexpected happens, double-check
your spelling and make sure you have semicolons at the end of the statements.

Add Statements to an Event Listener
So far in this example you’ve seen how an event listener attached to one object
(mcCircle) can effect a change in another object (mcText). A single event listener
can change any number of objects, including the object that registers the listener.
After all, any statements you put between the curly brackets of an event listener
will run when the event happens.
So the next steps change the mcCircle object to give it a rollover-style behavior.
Once you make these changes, both the text and the circle will change in response
to MOUSE_OVER and MOUSE_OUT events. Before you can indulge in ActionScript
programming fun, you need to create a new keyframe in the mcCircle movie clip
with a different image. Then you get to add statements to the two event listeners,
mouseOverListener and mouseOutListener, to describe the actions.
Here are the steps to set up mcCircle’s timeline:
1. On the stage, double-click mcCircle to open it for editing.
The circle symbol opens, showing a single frame in the timeline.
2. Click Frame 2 in the timeline, and then press F7 to add a blank keyframe.
A new empty keyframe appears in Frame 2 of the circle timeline.

Chapter 13: Controlling Actions with Events

www.it-ebooks.info

453

Getting Help
for Events
and Event
Listeners

3. Draw a star in Frame 2 using the Polystar tool.
The circle timeline now has a circle on Frame 1 and a star on Frame 2.
4. In the Properties panel, label Frame 2 over, and then label Frame 1 out .
It’s good to get in the habit of labeling frames you refer to in ActionScript code.
5. In the Edit bar above the stage, click Scene 1 to close the movie clip.
The circle movie clip symbol closes, and you’re back at the main movie clip’s
timeline.
In your ActionScript, you need to add the lines that control the behavior of the
­mcCircle movie clip. They’re all of the gotoAndStop() variety. Start off with a line
that stops the movie clip from flickering when the animation begins.
mcCircle.gotoAndStop(1);

Then, between the curly brackets of mouseOverListener, add code to change the
circle to a star when a MOUSE_OVER event happens.
mcCircle.gotoAndStop("over");

Last but not least, between the curly brackets of the mouseOutListener, add code
to change the star back to a circle when the mouse moves away from mcCircle.
mcCircle.gotoAndStop("out");

When you’re done, the complete code should look like this:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

454

mcText.gotoAndStop(1);
mcCircle.gotoAndStop(1);
mcCircle.addEventListener(MouseEvent.MOUSE_OVER, mouseOverListener);
mcCircle.addEventListener(MouseEvent.MOUSE_OUT, mouseOutListener);
function mouseOverListener(evt:MouseEvent):void
{
mcText.gotoAndStop("over");
mcCircle.gotoAndStop("over");
}
function mouseOutListener(evt:MouseEvent):void
{
mcText.gotoAndStop("out");
mcCircle.gotoAndStop("out");
}

flash CS6: The Missing Manual

www.it-ebooks.info

Now is a good time to test your movie. If everything runs as it should, you enjoy
a high-quality mouse-over and mouse-out experience. Both the graphics and the
text change with the mouse events. On the other hand, if you’re getting somewhat
different results, you may want to download 13-2_Mouse_Event_done.fla from the
Missing CD page at www.missingmanuals.com/cds/flashcs6mm to look for places
where your code doesn’t match the downloaded file.

Getting Help
for Events
and Event
Listeners

Applying mouse events to other projects
As it stands now, your mouse event project isn’t the flashiest thing on the block
(pun intended). Still, it’s worth considering how you can take the same rollover style
behaviors and create larger, more impressive projects. For example, using the same
mouse events, it would be easy to create a photo gallery that has half a dozen or
more photo thumbnails and one large “feature” image, like the one in Figure 13-4.
When the mouse moves over one of the thumbnails, the thumbnail changes to display a highlight, and the feature image changes to match the thumbnail. You can
even add a text caption that changes for each picture. Once you’ve created one
photo gallery, it’s easy to reuse your code by simply swapping in new photos. The
variations are limited only by your time and imagination. For example, the photo
gallery animation mentioned in Chapter 7 (7-5_Photo_Gallery.fla), uses mouse-click
events. When a thumbnail is clicked, the playhead moves to a different point on the
timeline, where a tween moves the photo in 3-D space until it finally fills the stage.
Another click, and it shrinks back to size.

Figure 13-4

Using the mouse-event
techniques described
so far, you can create a
photo gallery like this
one. When the mouse is
over a thumbnail, a large
version of the picture is
shown to the right.

Chapter 13: Controlling Actions with Events

www.it-ebooks.info

455

Getting Help
for Events
and Event
Listeners

Creating a Tabbed Window with Mouse
Events
So far this chapter has covered two types of mouse events: MOUSE_OVER and
MOUSE_OUT. The technique for using other events is nearly identical. The most
frequently used mouse event is probably the CLICK event. If you understand the
previous examples with MOUSE_OVER and MOUSE_OUT, you’ll have no problem
putting CLICK to work. Suppose you want to create a Flash project that’s organized
with tabs. You’ve seen a similar system on websites and in programs including Flash.
You click a tab, and it reveals different information or a panel of tools.
Using the ActionScript programming tools introduced in this chapter and the preceding one, you can create a tabbed window like the one shown in Figure 13-5. Here
are the tools you need in your Flash and ActionScript toolbox:
• Three mouse events: MOUSE_OVER, MOUSE_OUT, and CLICK.
• A few IF..ELSE conditional statements to control tab behavior.
• Four movie clips to serve as tabs.
• One movie clip that holds the “content” shown under each tab.

Setting the Stage for Tabbed Folder Display
The tabbed bar in Figure 13-5 is made up of four movie clips, one for each tab subject: dog, cat, flower, and Porsche. You can make the graphic part of the tab any
shape you want. In this example, the tabs are created with a rectangle primitive.
The top corners are rounded to give it that old-fashioned, tabbed-folder look. The
Classic static text was created with the text tool. The important thing is that each
tab is a separate movie clip, and each movie clip has three frames: over, out, and
selected. In the example, the tabs are 137.5 pixels wide so that four tabs fit snugly
in a 550-pixel horizontal space.
Note

You can follow the instructions in this section to set up your tabbed folder document, or you can
download 13-3_Tabbed_Folders.fla from the Missing CD page (www.missingmanuals.com/cds/flashcs6mm). If
you want to see a finished and working copy of the project, download 13-4_Tabbed_Folders_done.fla.

As the mouse moves and clicks, you want to change the tabs’ appearance to provide
some interactive feedback for your audience. In this example, when the mouse is
“out,” the tab contrasts in color with the color of the content’s folder. It looks as if the
tab is behind another open folder. When the mouse moves over the tab, it changes
size and color and the text is bold, providing a highlight effect.

456

flash CS6: The Missing Manual

www.it-ebooks.info

When the tab is selected and its content is showing, the color of the tab matches
the background color of the folder, giving it the appearance of an open folder. The
frames are labeled out, over, and selected as shown in Figure 13-6. The ActionScript
code uses the labels to identify particular frames.

Getting Help
for Events
and Event
Listeners

Figure 13-5

You can make a tabbed window interface using three simple mouse events.
Top: The dog tab is selected, and the
content area below shows a dog.
Bottom: Clicking the cat tab changes
the tab’s appearance and the content
below.

Chapter 13: Controlling Actions with Events

www.it-ebooks.info

457

Getting Help
for Events
and Event
Listeners

The main movie clip has only one frame, but it organizes the actions, tabs, and
content into three layers, as shown in Figure 13-7.

Figure 13-6

Each tab is a movie clip with three frames, one for each state of the tab.
Shown here in the symbol editing view, the top picture shows the “out”
state, the middle shows “over,” and the bottom shows “selected.”

Each tab is a separate movie clip symbol, and the instances arranged on the stage
are named mcDogTab, mcCatTab, mcFlowerTab, and mcPorscheTab. There’s one
other movie clip in this project, called mcContent. You guessed it—that’s a movie
clip that covers most of the stage and shows the contents for each of the tabs. The
mcContent movie clip has four frames with labels that match each tab: dog, cat,
flower, and Porsche. So, when the “cat” tab is clicked, the playhead in mcContent

458

flash CS6: The Missing Manual

www.it-ebooks.info

moves to the “cat” frame. In the example file, there’s a matching photo for each
mcContent frame. If you don’t have photos of your favorite dog, cat, flower, and
Porsche, a static text word will do.

Getting Help
for Events
and Event
Listeners

Figure 13-7

The timeline for the main
movie clip in this project has
three layers: actions, tabs, and
content. It’s not absolutely
necessary to use three layers,
but it’s helpful to organize
your project using layers.

Tip It’s easy to line up and arrange the tabs on the stage using the Align commands. Use Modify→
Align→Bottom to line up all the bottom edges. Then use Modify→Align→Distribute Widths to space them evenly.

Planning Before Coding
As projects become more complicated, you can save a lot of time by thinking things
through before you start writing code. It’s a lot like doing a rough pencil sketch or
storyboard (page 44) before you draw. With programming, it helps to list the actions
that need to take place for your program to work. You can put these down in the human language of your choice, but it certainly helps to keep in mind the ActionScript
tools you’ll be using to build your project. Here’s an example of planning notes for
the tabbed window project:

Chapter 13: Controlling Actions with Events

www.it-ebooks.info

459

Getting Help
for Events
and Event
Listeners

• On startup, the dog tab should be selected, and dog content should be showing.
The other tabs should show the “out” frame.
• If the mouse rolls over or out of the dog tab, it shouldn’t change its appearance;
it should stay “selected.”
• If the mouse rolls over any of the non-selected tabs, they should highlight,
showing the “over” image when the mouse is over, and they should change
back to “out” when the mouse moves away.
• When the mouse clicks any tab, the clicked tab should change to “selected”
and all the other tabs should change to “out.” The content should change to
match the selected tab.
These points present a pretty good sketch of how the tabbed window should behave,
and they give you some programming goals. To help grapple with the elements in
your program, the words indicating movie clips are in italics, and the words indicating frames are in quotes. In your sketch, use any tools (typographic effects, colors,
circles, and arrows) you want that help you understand the project.
The first bullet point in the sketch is easy to tackle, especially if you warmed up by
completing the rollover project outlined earlier in this chapter (page 448). Here’s
the code you need to start with the dog tab selected and the other tabs set to the
“out” frame:
1
2
3
4
5
6
7

// Start with the Dog tab selected and Dog content showing
mcDogTab.gotoAndStop("selected");
mcContent.gotoAndStop("dog");
// Stop the other tab movie clips from playing on
mcCatTab.gotoAndStop("out");
mcFlowerTab.gotoAndStop("out");
mcPorscheTab.gotoAndStop("out");

Because this project involves more lines of code and is a bit more complicated, it’s
good programming practice to use line numbers and to add comments to the code.
If you don’t have line numbers in your Actions window, click the Options button in
the upper-right corner of the Actions window, and then choose Line Numbers near
the bottom of the menu. In the code shown, the lines that begin with two slashes
(//) are comments. ActionScript ignores anything from the slashes to the end of
the line, so you’re free to put whatever words will help you and others understand
the logic behind your program.
Looking over the “sketch” of your program, you can see that each tab needs to
react to three different mouse events: MOUSE_OVER, MOUSE_OUT, and CLICK.
So each tab needs to register event listeners for those mouse events. (If you need a
refresher on registering an event listener, the details are on page 450.) It may look
like a lot of code, but each line uses the same form, or as programmers like to say,
syntax, to register an event listener.

460

flash CS6: The Missing Manual

www.it-ebooks.info

8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

// Register mouse event listeners for mcDogTab
mcDogTab.addEventListener(MouseEvent.MOUSE_OVER, dogOverListener);
mcDogTab.addEventListener(MouseEvent.MOUSE_OUT, dogOutListener);
mcDogTab.addEventListener(MouseEvent.CLICK, dogClickListener);

Getting Help
for Events
and Event
Listeners

// Register mouse event listeners for mcCatTab
mcCatTab.addEventListener(MouseEvent.MOUSE_OVER, catOverListener);
mcCatTab.addEventListener(MouseEvent.MOUSE_OUT, catOutListener);
mcCatTab.addEventListener(MouseEvent.CLICK, catClickListener);
// Register mouse event listeners for mcFlowerTab
mcFlowerTab.addEventListener(MouseEvent.MOUSE_OVER, flowerOverListener);
mcFlowerTab.addEventListener(MouseEvent.MOUSE_OUT, flowerOutListener);
mcFlowerTab.addEventListener(MouseEvent.CLICK, flowerClickListener);
// Register mouse event listeners for mcPorscheTab
mcPorscheTab.addEventListener(MouseEvent.MOUSE_OVER, porscheOverListener);
mcPorscheTab.addEventListener(MouseEvent.MOUSE_OUT, porscheOutListener);
mcPorscheTab.addEventListener(MouseEvent.CLICK, porscheClickListener);

Note

Some lines in this script are left empty on purpose. ActionScript doesn’t mind, and a little white space
makes the code easier to read and understand, especially when viewed in the Actions panel.

Now that the event listeners are registered, you have a roadmap for the action part
of your code. The last word in each of those statements—like dogOverListener,
catOutListener, and porscheClickListener—is a reference to an event listener, and
it’s up to you to write the code that defines the actions. For example, lines 10, 11,
and 12 show that mcDogTab needs three listeners, so that’s a good place to start.
Looking back at the sketch, you have a rough outline of how the dog tab is supposed to behave. Those two middle bullet points from page 456 describe what’s
supposed to happen:
• If the mouse rolls over or out of the dog tab, it shouldn’t change its appearance;
it should stay selected.
• If the mouse rolls over any of the non-selected tabs, they should be highlighted,
showing the “over” image when the mouse is over, and they should change back
to “out” when the mouse moves away.
The word “if” is a good clue that you’ve got an if…else situation here. At this point,
it may help to refine your human language describing the actions; however, if you’re
feeling confident, you can jump in and start to code. Here’s a refined version of what
should happen when the mouse moves over the dog tab:

Chapter 13: Controlling Actions with Events

www.it-ebooks.info

461

Getting Help
for Events
and Event
Listeners

• If the movie clip mcDogTab is selected, then the movie clip mcDogTab should
remain on the frame labeled “selected.”
• Else if the movie clip mcDogTab isn’t selected, then the movie clip mcDogTab
should change to the frame labeled “over.”
With the refined description, it’s just a hop, skip, and a jump to the ActionScript
code for the mouse-over event listener. Remember, the lines with double slashes
(//) are just comments, not statements:
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

// Event listeners for mcDogTab
function dogOverListener(evt:MouseEvent):void
{
// if the tab is selected, leave it selected on mouse over
// else if the tab isn't selected, show the out frame
if (mcDogTab.currentLabel == "selected")
{
mcDogTab.gotoAndStop("selected");
}
else
{
mcDogTab.gotoAndStop("over");
}
}

The if…else conditional statement for mcDogTab follows this form:
if (condition)
{
do these statements;
}
else
{
do these statements;
}

The if…else structure works well for the tabs because it helps you manage the possibility that the tab may already be selected when the mouse moves over it. (There
are more details on conditional statements like if…else on page 437.)
Note When you write the (condition) part of the statement (line 34), you want to use ActionScript’s equality
operator, which is two equal signs (= =). You use the equality operator to test whether a statement is true or false.
A single equals symbol (=) is the assignment operator in ActionScript and is used to change values.

The next event listener for mcDogTab handles the MOUSE_OUT event. Similar to
the MOUSE_OVER event, you want the tab to do nothing if the tab is selected. If

462

flash CS6: The Missing Manual

www.it-ebooks.info

it’s not selected, then you want the tab to change back to the “out” state. Another
job for if…else, and the form for the listener is very similar:
43
44
45
46
47
48
49
50
51
52
53
54
55
56

Getting Help
for Events
and Event
Listeners

function dogOutListener(evt:MouseEvent):void
{
// if the tab is selected, leave the tab selected
// else if the tab isn't selected, show the out frame
if (mcDogTab.currentLabel == "selected")
{
mcDogTab.gotoAndStop("selected");
}
else
{
mcDogTab.gotoAndStop("out");
}
}

The actions that need to be performed for the CLICK event were listed in the sketch
as follows:
• When the mouse clicks any tab, the clicked tab should change to “selected”
and all the other tabs should change to “out.” The content should change to
match the selected tab.
There’s no if…else situation here. There’s simply a series of actions that need to take
place when a tab is clicked. Those actions position the playhead on specific frames
of the “tab” and “content” movie clips. Here’s the dogClickListener code:
57
58
59
60
61
62
63
64
65
66
67
68
69

function dogClickListener(evt:MouseEvent):void
{
// when clicked change the tab to selected
mcDogTab.gotoAndStop("selected");
// when clicked change the mcContent to show related frame
mcContent.gotoAndStop("dog");
// Set all the other tabs to the "out" frame
mcCatTab.gotoAndStop("out");
mcFlowerTab.gotoAndStop("out");
mcPorscheTab.gotoAndStop("out");
}

When the dog tab is clicked, line 61 changes the dog tab to “selected,” and line 63
displays dog stuff in the content movie clip. The other three lines of code, 65–67,
change the other tabs to the “out” state.

Chapter 13: Controlling Actions with Events

www.it-ebooks.info

463

Getting Help
for Events
and Event
Listeners

Testing your work so far
You’ve finished writing the event listeners for the dog tab. You’ve got three more
tabs to go; however, if you use the “copy and tweak” coding technique described
in this section, the last three tabs will go quickly. Before you copy and reuse code,
you want to make sure it’s working properly. There’s no benefit in copying mistakes,
so this is a good time to test the code for the dog tab.

The first thing to do is to check for typos and obvious errors with the Check Syntax
tool. At the top of the Actions window, click Check Syntax, as shown in Figure ­13-8.
A box appears, telling you whether or not there are errors in the code. If there are
errors, you see them listed by line number in the Compiler Errors tab next to the
timeline. Double-click an error, and Flash highlights the offending line of code.
The explanations of errors may seem a little cryptic. If you don’t understand what
Flash is saying, then compare your code to the code in this book. Check spelling,
capitalization, and punctuation carefully. Punctuation errors can include missing
semicolons at the ends of statements or missing parentheses and brackets. Sometimes, bracket confusion includes using an opening bracket ({) when you should
use a closing bracket (}).

Actions toolbox

464

Find and Replace
Check Syntax

Figure 13-8

The Actions window has
tools to help you find
typos (Check Syntax), find
and replace words, and
insert prebuilt chunks of
code (Actions toolbox).

flash CS6: The Missing Manual

www.it-ebooks.info

It takes a little extra effort to test part of your code before your program is complete, but the process gives you a better understanding of how it works. If you’re
copying and reusing code, testing is worth the effort, and it’s likely to save you time
in the long run.

Getting Help
for Events
and Event
Listeners

If you test your movie at this point, you just get a lot of flickering, and the Compiler
Errors panel fills up with errors with descriptions like the ones in Figure 13-9: “Access
of undefined property catOverListener” and so on. In the Compiler Errors panel,
double-click the error, and Flash highlights line 15 in your code. The problem is this
line (and others) register event listeners and point to functions that you haven’t
written yet. This confuses ActionScript. Often, if one part of your code doesn’t work
(or isn’t complete), the rest of the code doesn’t run properly—hence the flickering
when you test your program.

Figure 13-9

When testing your ActionScript
programs, errors appear in the
Compiler Errors window. Doubleclick an error, and ActionScript
highlights the line of code that
created the problem.

Compiler Error tab

Error descriptions

Chapter 13: Controlling Actions with Events

www.it-ebooks.info

465

Getting Help
for Events
and Event
Listeners

The solution is to temporarily remove these lines from your program while you test
the dog tab. You don’t want to delete lines you’ve already written—that would be a
waste of time. Instead you can comment them out. In other words, when you place
double slash lines in front of the code, ActionScript ignores the lines because they
look like comments. After testing, you remove the comment marks and turn your
code back into legitimate statements.
So, to comment out line 15, which registers the catOverListener, place two slash
marks at the beginning so that it looks like this:
// mcCatTab.addEventListener(MouseEvent.MOUSE_OVER, catOverListener);

Problem solved. Place comment marks in front of the lines for the mcCatTab (15,
16, and 17); for the mcFlowerTab (20, 21, and 22); and for the mcPorscheTab (25,
26, and 27).
Tip When you want to comment out more than one line of code, you can use the block comment characters.
Put /* at the front, and then put */ at the end. Everything between those markers is considered a comment, no
matter how many characters, words, or lines there are. Two buttons on the Actions panel toolbar make it easy to
add comment marks to your text. To use the “Add block comment” button, select the text you want to “comment
out,” and then click the button. The “Apply line comment” button places slash marks at the cursor.

Now you can test the dog tab part of your movie; press Ctrl+Enter (⌘-Return). If
everything is working properly, there shouldn’t be any flickering when the animation runs, because all the movie clips are told to gotoAndStop() at a specific frame.
The dog tab should be selected, and the other tabs should be showing the “out”
movie clip frame. When you mouse over any of the tabs, nothing should happen.
The dog tab doesn’t change when you mouse over and out of it, because that’s
what you programmed it to do. The other tabs don’t change because you haven’t
programmed their actions yet.
It would be nice to test the MOUSE_OVER and MOUSE_OUT events on the dog
tab before you copy the code and use it for the other tabs. To do that, you have
to tweak your code so that mcDogTab isn’t “selected” when you test the program.
Change line 2 to read:
mcDogTab.gotoAndStop("out");

And then change the mcCatTab so it’s selected by changing line 5 to:
mcCatTab.gotoAndStop("selected");

Now, when you test your movie, the dog tab should change when you mouse over
it. If everything works as expected, great. If not, you need to search and destroy any
typos that appear in your code. You can download the file 13-4_Tabbed_ ­Folders_
done.fla from the Missing CD page (www.missingmanuals.com/cds/flashcs6mm)
to compare coding. Open the Actions window in the downloaded file, and you see
the tabbed folders statements with the proper lines commented out and tweaked

466

flash CS6: The Missing Manual

www.it-ebooks.info

for testing. If you compare the code line by line to your project, you should be able
to identify any errors.

Getting Help
for Events
and Event
Listeners

Once your code has passed the testing phase, you need to undo the changes you
made. So, change line 2 back to its original form:
mcDogTab.gotoAndStop('selected');

And, likewise, change line 5 back to:
mcCatTab.gotoAndStop("out");

Remove the comment marks from the lines that register event listeners: 15, 16, and
17 for the mcCatTab; 20, 21, and 22 for the mcFlowerTab; and 25, 26, and 27 for the
mcPorscheTab.
With your code tested and working properly, you can copy and tweak with confidence, as described in the next section.

Copy-and-Tweak Coding
If you’ve typed all of the 60-plus lines of code shown so far in this example, you
probably agree that writing and testing code can be a little tedious. The good news
is, if you’ve gotten this far, you can use the copy-and-tweak technique to develop
code for the other three tabs. When you have some code that works properly and
you need to write nearly identical code for another part of your program, it makes
sense to copy the code and then change a name or word here and there. In this
example, all the tabs have very similar behavior. You can copy the event listeners
for mcDogTab, and then paste that code to the bottom of your script. Then, all you
need to do is swap a few names. For example, where it says mcDogTab, change it
to mcCatTab.
First copy and paste the code you want to modify:
1. Select and copy the code between line 29 and line 68, inclusive.
2. Move to line 70, and then paste the code back into your script.
At this point, you need to rewrite the code for mcCatTab. You can do so in a couple
of ways, but for learning purposes, this exercise will walk you through the changes
one at a time. See Table 13-1.
Table 13-1 This table shows how to convert the code for the event listener dogOverListener to catOverListener.
­Elements in bold were changed.
Line #

Code as written for mcDogTab

Code revised for mcCatTab

70

// Event listeners for mcDogTab

// Event listeners for mcCatTab

71

function dogOverListener

function catOverListener

(evt:MouseEvent):void {

(evt:MouseEvent):void {

if (mcDogTab.currentLabel ==

if (mcCatTab.currentLabel ==

"selected") {

"selected") {

75

Chapter 13: Controlling Actions with Events

www.it-ebooks.info

467

Getting Help
for Events
and Event
Listeners

Line #

Code as written for mcDogTab

Code revised for mcCatTab

77

mcDogTab.gotoAndStop("selected")

mcCatTab.gotoAndStop("selected")

67

// else if the tab isn't selected, change it on mouse over

// else if the tab isn't selected, change it on mouse over

81

mcDogTab.gotoAndStop("over")

mcCatTab.gotoAndStop("over")

Tip

Reading your code line by line, thinking through the actions that the code performs, and then making
changes is the safest way to rewrite your code. You can also employ ActionScript’s find-and-replace tool; however,
it’s awfully easy to get carried away and make bad changes. To use find and replace, click the magnifying glass
at the top of the Actions window, as shown in Figure 13-8.

The event listener, catOverListener, is very similar to the previous example. You
need to change “dog” to “cat” in the function name and everywhere the tab movie
clip symbol appears. When you’re finished, the code should look like this example:
function catOutListener(evt:MouseEvent):void
{
// if the tab is selected, leave the tab selected
// else if the tab isn't selected, show the out frame
if (mcCatTab.currentLabel == "selected")
{
mcCatTab.gotoAndStop("selected");
}
else
{
mcCatTab.gotoAndStop("out");
}
}

To rewrite the code for the CLICK event, think back to the tasks the code has to
perform. When any tab is clicked, it should change to “selected,” and all the other
tabs should change to “out.” The content needs to be changed to match the selected
tab. With those concepts clearly in mind, it’s fairly easy to adapt the dogClickListener
code to work for catClickListener. Below is the code as it should read after you’ve
made changes. The bolded words have been changed.
function catClickListener (evt:MouseEvent):void
{
// when clicked change the tab to selected
mcCatTab.gotoAndStop("selected");
// when clicked change the mcContent to show related frame
mcContent.gotoAndStop("cat");
// Set all the other tabs to the "out" frame
mcDogTab.gotoAndStop("out");

468

flash CS6: The Missing Manual

www.it-ebooks.info

mcFlowerTab.gotoAndStop("out");
mcPorscheTab.gotoAndStop("out");

Getting Help
for Events
and Event
Listeners

}

That finishes the changes that transform the dog tab code to work for the cat tab.
Now you need to repeat the process for the remaining two tabs: flower and Porsche.
When you’ve done that, the rest of your code should look like this:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

// Event listeners for mcFlowerTab
function flowerOverListener(evt:MouseEvent):void
{
// if the tab is selected, leave it selected on mouse over
// else if the tab isn't selected, show the out frame
if (mcFlowerTab.currentLabel == "selected")
{
mcFlowerTab.gotoAndStop("selected");
}
else
{
mcFlowerTab.gotoAndStop("over");
}
}
function flowerOutListener(evt:MouseEvent):void
{
// if the tab is selected, leave the tab selected
// else if the tab isn't selected, show the out frame
if (mcFlowerTab.currentLabel == "selected")
{
mcFlowerTab.gotoAndStop("selected");
}
else
{
mcFlowerTab.gotoAndStop("out");
}
}
function flowerClickListener(evt:MouseEvent):void
{
// when clicked change the tab to selected
mcFlowerTab.gotoAndStop("selected");
// when clicked change the mcContent to show related frame
mcContent.gotoAndStop("flower");
// Set all the other tabs to the "out" frame
mcCatTab.gotoAndStop("out");
mcDogTab.gotoAndStop("out");
mcPorscheTab.gotoAndStop("out");

Chapter 13: Controlling Actions with Events

www.it-ebooks.info

469

Getting Help
for Events
and Event
Listeners

39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79

}
// Event listeners for mcPorscheTab
function porscheOverListener(evt:MouseEvent):void
{
// if the tab is selected, leave it selected on mouse over
// else if the tab isn't selected, show the out frame
if (mcPorscheTab.currentLabel == "selected")
{
mcPorscheTab.gotoAndStop("selected");
}
else
{
mcPorscheTab.gotoAndStop("over");
}
}
function porscheOutListener(evt:MouseEvent):void
{
// if the tab is selected, leave the tab selected
// else if the tab isn't selected, show the out frame
if (mcPorscheTab.currentLabel == "selected")
{
mcPorscheTab.gotoAndStop("selected");
}
else
{
mcPorscheTab.gotoAndStop("out");
}
}
function porscheClickListener(evt:MouseEvent):void
{
// when clicked change the tab to selected
mcPorscheTab.gotoAndStop("selected");
// when clicked change the mcContent to show related frame
mcContent.gotoAndStop("porsche");
// Set all the other tabs to the "out" frame
mcCatTab.gotoAndStop("out");
mcFlowerTab.gotoAndStop("out");
mcDogTab.gotoAndStop("out");
}

When you test the code, using Ctrl+Enter (⌘-Return), it should work as advertised.
On startup, the dog tab is selected. Mouse over any of the other tabs, and they
should show a highlight. Click a tab, and it becomes the selected tab, showing related content in the main part of the window. If your project isn’t working exactly as

470

flash CS6: The Missing Manual

www.it-ebooks.info

expected, compare your code with 13-4_Tabbed_Folders_done.fla from the Missing
CD (www.missingmanuals.com/cds/flashcs6mm).

Keyboard
Events and
Text Events

Modifying tabbed windows for projects
The tabbed window project creates a container. You can rename the tabs and put
anything you want in the “content” movie clip. The example in this chapter holds a
single picture, but each tab could hold an entire photo collection or a collection of
widgets that work with a database. The tabs simply provide a way to organize the
elements of a project.

You can easily change the tabs themselves for a different look. Metallic high-tech
tabs, perhaps? All you have to do is change the shape or the color of the graphics in
the tab movie clips. For example, if you’d like a look that emulates colored file folders,
you can coordinate the color of the tabs with the background of the content movie
clip. If it works better for your project, you can use the same ActionScript code to
manage tabs that run vertically along the edge of the content area.

Keyboard Events and Text Events
ActionScript 3.0 uses a single technique for handling events, so if you know how
to register an event listener for a mouse event, it’s not difficult to handle events for
keyboards or other objects. All events use the same event register and event listener
duo. For example, the keyboard event has two constants: KEY_DOWN and KEY_UP.
You can use the Flash stage itself to register keyboard events.
Note

You can download the Flash document for this example, 13-5_Keyboard_Events.fla, from the Missing
CD page at www.missingmanuals.com/cds/flashcs6mm.

Here’s a simple example that shows you how to start and stop a movie clip from
running using the KEY_DOWN and KEY_UP events. The movie clip simply shows
a number for each frame as it’s running. This example references an instance of
the Stage class. The stage represents the drawing area in a Flash animation. As a
result, the stage has properties, like width and height, and like other objects, it has
an addEventListener method.
Create a new document. Add a layer, and then name one layer actions and the other
layer counter. At the first frame of the counter layer, add a movie clip symbol to the
stage. Open the movie clip, and put a big number 1 on the stage. Add four more
keyframes with the numbers 2 through 5 on the stage. In the Properties panel, name
the movie clip mcCounter. Click the first frame in the actions layer, open the Actions
window, and then type this short script:
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpListener);

Chapter 13: Controlling Actions with Events

www.it-ebooks.info

471

Keyboard
Events and
Text Events

function keyDownListener(evt:KeyboardEvent):void
{
mcCounter.stop();
}

function keyUpListener(evt:KeyboardEvent):void
{
mcCounter.play();
}

When you test the animation (Control→Test Movie), it quickly runs through the frames
showing the numbers 1 through 5 on the stage. Press and hold the space bar, and
the numbers stop. Release the space bar, and the numbers start again.
Note

When you test keyboard events inside Flash, you may notice some odd behavior. That’s because Flash
itself is trapping some keyboard events, and it tends to catch the letter keys. If you actually publish your Flash
project, and then run the SWF in Flash Player or a browser, you get a more accurate experience.

Using Event Properties
Like most things in ActionScript, an event is actually an object. The event object is
passed to the event listener as a parameter inside parentheses. Take this line of code:
function keyDownListener(evt:KeyboardEvent):void {

The evt is an instance of the keyboard event that was created when a key was
pressed. You can use any name you want in place of evt. The colon and the word
“KeyboardEvent” indicate the type of event.
The KEY_DOWN and KEY_UP constants are parts of the KeyboardEvent class. Keyboard events also have properties that store changeable values. Properties can be
passed to the event listener and used in the event listener’s actions. For example,
the charCode property holds a value that identifies the specific keyboard character
of KEY_DOWN and KEY_UP events. Programs use character codes to identify the
characters shown on a screen or sent to a printer. By adding a couple of lines to your
keyboard event listeners, you can view character codes as you press keys:
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpListener);
function keyDownListener(evt:KeyboardEvent):void {
mcCounter.stop();
trace("Key Down");
trace(evt.charCode);
}
function keyUpListener(evt:KeyboardEvent):void {
mcCounter.play();

472

flash CS6: The Missing Manual

www.it-ebooks.info

Keyboard
Events and
Text Events

trace("Key Up");
trace(evt.charCode);
}

The trace() statement is a remarkably handy programmer’s tool that’s used to display
values in the Output panel, as shown in Figure 13-10. If your Output panel is closed,
you can open it with Window→Output or the F2 key. Like any function, you pass
values to the trace() statement by placing them inside the parentheses. If you put
a string inside the parentheses, like (“Key Down”), Flash shows that string in the
Output panel when it reaches the trace() statement in your code. The two strings
“Key Down” and “Key Up” are called string literals by programmers, because the
value of the string is defined. It’s not a variable or a property that changes.

Figure 13-10

The Output panel and the trace() statement are an ActionScript coder’s friends. Here the
Output panel displays charCode and other statements from keyboard events.

Note

The trace() statement doesn’t have any use in final Flash animations. The most common use of trace()
is to examine the value of variables while testing a program. Sometimes a trace() statement is used to simply
determine whether a program reaches a certain point in the script.

The second trace() statement shows the value of a property in the Output window.
As explained previously, evt is the event object that’s passed to the event listener,
and charCode is a property of evt. Like all good properties, it’s shown with dot syntax
as evt.charCode. So the second trace() statement shows the value of evt ’s charCode
property. Each time a key is pressed, a new instance of the KeyboardEvent is created
and passed to the listener keyDownListener. Each instance holds a single value in
the charCode property that corresponds to the key that was pressed.

Chapter 13: Controlling Actions with Events

www.it-ebooks.info

473

Keyboard
Events and
Text Events

When you test the program, as you press keys, string literals (Key Down and Key Up)
and numbers appear in the Output panel. If you press the space bar, the keyDownListener sends the “Key Down” string, and then the value 32. Because keyboards
repeatedly send character codes when a key is held down, you may see multiple
32s while you hold the key down and one final 32 on KEY_UP.
Keyboard events have six properties called public properties, because you can access them from your ActionScript program (see Table 13-2).
Table 13-2 Public properties of KeyboardEvents
Public Property

Data type

Description

altKey

Boolean

True if the Alt key is pressed

charCode

uint (unsigned integer)

Value of the character code for key up
or key down

ctrlKey

Boolean

True if the Ctrl key is pressed

keyCode

uint (unsigned integer)

Value of the key code for key up or key
down

keyLocation

uint (unsigned integer)

Indicates the location of the key on the
keyboard

shiftKey

Boolean

True if the Shift key is pressed

Like charCode, keyCode, and keyLocation are used to determine what key was
pressed on a keyboard. The other three properties are used specifically to determine
whether the Alt, Ctrl, or Shift keys are down or up. Add this trace() statement to
your keyboard event program to see how the shiftKey property works:
trace(evt.shiftKey);

As a Boolean, the value of shiftKey is true when the Shift key is pressed and false
if it’s not pressed. You can use an if conditional statement to test if the Shift key is
pressed. For example, you can replace the preceding statement with this if…else
statement:
if (evt.shiftKey==true)
{
trace("The Shift key is down");
}
else
{
trace("The Shift key is up");
}

The result is a more complete description than the bare-bones true and false reports.

474

flash CS6: The Missing Manual

www.it-ebooks.info

Capturing Text Input with TextEvent
KeyboardEvent works fine for detecting whether or not keys are pressed on the
keyboard, but it’s not very good at capturing the actual text or characters typed
into a program. The best tool for that job is the TextEvent. You use the TextEvent
with an object like an input text box.

Keyboard
Events and
Text Events

1. Open a new document.
2. Click the Text tool in the Tools palette, and then choose TLF Text and Editable from the two drop-down lists, as shown in Figure 13-11.
3. Draw a text box on the stage, and then add some preliminary text to the
text box, like Your name here.
4. In the Properties panel, name the Input Text box tfName.

Properties panel

Figure 13-11

As explained on page 216, Flash text can be TLF text or Classic text. TLF
text can be read only, selectable, or editable. Classic text can be static
text, dynamic text, or input text. You can name, and then access, TLF
text, dynamic text, and input text using ActionScript.

Text type
menus

5. Open the Actions window, and then type this code:
tfName.addEventListener(TextEvent.TEXT_INPUT, textInputListener);
function textInputListener(evt:TextEvent):void
{
trace(evt.text);
}

When you test the Flash program, you see a text box on the stage with the words
“Your name here.” Select the text, and then type your own name in its place; any
key you press while the text box is in focus appears in the Output panel. The text
box captures each letter and stores it in the text property of the Text Event object

Chapter 13: Controlling Actions with Events

www.it-ebooks.info

475

Keeping
Time with
TimerEvent

evt. The TextEvent is passed to textInputListener, which uses the text property in
the statement:
trace(evt.text);
Note

You can download the Flash document for this example, 13-7_Text_Event.fla, from the Missing CD
page at www.missingmanuals.com/cds/flashcs6mm.

Keeping Time with TimerEvent
All the events explored in this chapter so far rely on audience input. There are other
types of events that occur as part of a process and don’t involve audience input. A
good example is the TimerEvent, which triggers an event when a specified amount
of time has passed. Suppose you’re developing a quiz and you want to give students
30 seconds to answer each question. You could use a TimerEvent to move to the
next question every 30 seconds. Sounds merciless, doesn’t it?
Here’s an example that’s not quite so cruel. All it does is change the text on the screen
after a certain interval. Open a new document, and then add a TLF read-only text
field to the stage. Put some placeholder text in the field, like the word “blank.” In
the Properties panel, name the dynamic text field tfTimerText. Using ActionScript,
you can create a Timer object. Using the properties of the timer object, you can set
it to trigger an event after a certain amount of time has passed. This example uses
the event to change the text in the dynamic text box. Initially, it says, “It’s not yet
time.” The color of the type is blue. After the timer event, the text reads “Now it’s
time!” as shown in Figure 13-12, and the color of the type changes to red:
1
2
3
4
5
6
7
8
9
10
11
12
13

476

var timer:Timer = new Timer(1000,3);
tfTimerText.text = "It's not yet time.";
tfTimerText.textColor = 0x0066FF;
timer.addEventListener(TimerEvent.TIMER_COMPLETE, timerCompleteListener);
timer.start();
function timerCompleteListener(evt:TimerEvent):void
{
tfTimerText.text = "Now it's time!";
tfTimerText.textColor = 0xFF0000;
}

flash CS6: The Missing Manual

www.it-ebooks.info

Removing
Event
Listeners

Figure 13-12

In this example, a timer event is used to change the text displayed in
a dynamic text field.

You can’t just drag a timer out of the Tools palette like a circle or a text box, so you
have to use ActionScript code to create a new object. That’s exactly what the code
in line 1 does. From left to right it creates a variable called timer (lowercase t) which
is of the data type Timer (uppercase T). The = new Timer portion of the line creates
the timer object. The numbers inside the parentheses are the parameters you use to
set the timer. The first number sets the delay property, and the second number sets
the repeatCount property. The ActionScript Timer measures time in milliseconds, so
1000 equals a second. With repeatCount set to 3, the timer waits 3 seconds before
triggering the TIMER_COMPLETE event. Setting these two numbers is sort of like
winding up a kitchen timer to a specified interval.
In line 3, a new string of characters is displayed in the text box: “It’s not yet time.”
The following line sets the color of the text to blue. If you’ve read from the beginning
of this chapter, line 6 probably looks familiar. It registers the event listener called
timerCompleteListener. As you can probably guess, line 7 starts the countdown.
Lines 9 through 13 are the event listener for TIMER_COMPLETE. The function displays the new message in the text box, “Now it’s time!” And it changes the type to
red for added dramatic effect.
Note

You can download the Flash document for this example, 13-8_Timer_Event.fla, from the Missing CD
page at www.missingmanuals.com/cds/flashcs6mm.

Removing Event Listeners
When you create an event listener, it sits there constantly waiting for the event to
happen. You may forget it’s even there; but still, it sits patiently, waiting, listening,
and using up computer resources in the process. There are a couple of good reasons
why you should remove event listeners when they’re no longer needed. One is the

Chapter 13: Controlling Actions with Events

www.it-ebooks.info

477

In Case of
Other Events

computer resource issue. It’s also possible for a forgotten event listener to foul up
some other process when you least expect it.
Ideally, you should remove an event listener whenever your program no longer needs
it. For example, in the preceding TimerEvent, you can remove the listener after the
TIMER_COMPLETE event triggers. You can place the code to unregister the timer
within timerCompleteListener:
timer.removeEventListener(TimerEvent.TIMER_COMPLETE, timerCompleteListener);

The code to remove an event listener is very similar to the code used to register it in
the first place. The removeEventListener() function is a method of any object that
has a method to addEventListener(). The same parameters that define the event
type and the event handler identify the event listener being removed.

In Case of Other Events
The events covered in this chapter are just a few of the many events defined in Flash
and ActionScript. There are events to handle error messages and events to track
the process of a file or web page loading. There are events specific to components
like scroll bars, sliders, context menus, text lists, and color pickers. The good news
is that you use the same statements to register an event listener and to specify the
actions that are to take place when an event happens.
Table 13-3 gives a partial list of some of the event classes recognized by Flash Player.
Table 13-3. Examples of the events available in ActionScript 3.0.

478

Class

Description

Activity Event

Used by cameras and microphones to indicate they’re active.

AsyncErrorEvent

Used to indicate an error in network communication.

ContextMenuEvent

Indicates a change when the audience interacts with a context menu.

DataEvent

Indicates raw data has completed loading.

ErrorEvent

Used to indicate a network error or failure.

Event

The base class for all other events classes.

FocusEvent

Triggers an event when the audience changes focus from one object
to another.

FullScreenEvent

Indicates a change from or to full-screen display mode.

HTTPStatusEvent

Creates an event object when a network request returns an HTTP
status code.

IOErrorEvent

Indicates an error when trying to load a file.

KeyboardEvent

Indicates keyboard activity.

MouseEvent

Indicates mouse activity.

flash CS6: The Missing Manual

www.it-ebooks.info

In Case of
Other Events

Class

Description

NativeDragEvent

Used to acquire details about a drag-and-drop event.

NetStatusEvent

Reports on the status of a NetConnection, NetStream, or
SharedObject.

ProgressEvent

Reports on the progress while a file loads.

SampleDataEvent

Used when the Flash Player requests audio data.

SecurityErrorEvent

Reports a security error.

ShaderEvent

Indicates the completion of a shader operation.

StatusEvent

Used by cameras and microphones to report on their status and
connection.

SyncEvent

Used by SharedObjects to indicate a change.

TextEvent

Indicates a change when the audience enters text.

TimerEvent

Indicates the passing of a timing interval.

Smartphone and Tablet Events
Smartphones and tablets have their own unique set of events (not events like getting
left in a taxi; that’s another matter entirely). These devices have capabilities that
we’ve all come to take for granted. For example, because the iPhone has a sensor
called an accelerometer, you can shake the phone to clear the screen or reset the
letters in a game. When you make a turn, your location and heading change on your
gadget’s map—if it has a GPS antenna. And of course, all those 1-, 2-, and 3-fingered
swipes are part of the mobile device language. ActionScript continues to add new
classes that register these events. Just as with the mouse and keyboard events,
you write code that “listens” for the event to occur and that shoots a message off
to some other object in your application to take action.
Here are some of the events related to these handheld devices:
Event

Description

Accelerometer Event

Triggered when the accelerometer in a mobile device is
updated. In other words, the gadget was moved, tilted or
shaken.

Geolocation Event

Updates details on longitude, latitude, heading, speed, and
altitude when it receives updates from the GPS sensor.

Gesture Event

Used by touchscreen devices that handle multitouch (twofingered) gestures.

Gesture Phase

Provides information on the type of gesture being performed. Is it a tap? Is it a swipe?

PressAndTapGestureEvent

Handles press and tap gestures. Often used to trigger popup, contextual menus.

Chapter 13: Controlling Actions with Events

www.it-ebooks.info

479

In Case of
Other Events

Event

Description

SoftKeyboardEvent

Dispatches a message when a software-driven keyboard
(like the iPad’s touchscreen keyboard) is activated or
deactivated.

SoftKeyboardTrigger

Reports on the event that triggered the SoftKeyboard. Was
it the user? Was it content?

StageOrientationEvent

Stage object sends a StageOrientationEvent object when
the device is rotated or changed due to softkeyboard activation or other event.

TouchEvent

Detects user contact with the touchscreen. Used with the
other classes to determine the type of event.

TransformGestureEvent

Used to detect swipes and report on their type. As always,
the object’s Public Constants give good clues as to the
object’s purpose: GESTURE_PAN, GESTURE_ROTATE,
GESTURE_SWIPE, and GESTURE_ZOOM.

Tip

If you’re just beginning to write code for smartphone and tablet apps, you can learn a lot by studying
the code snippets that come with Flash CS6. Go to Window→Snippets and check out the snippets under Mobile
Touch Events, Mobile Gesture Events. Pop some of that code into your Actions window and you’ll see how the
wizards at Adobe expect you to use the event classes they created for handhelds.

480

flash CS6: The Missing Manual

www.it-ebooks.info

chapter

Organizing Objects
with the Display List

14

W

hen you create your animation using the Flash authoring tool, you draw
objects on the stage or drag them from the Library. Often, you put one
object inside another. For example, you might place a shape and some text
inside a movie clip that’s on the stage. Then you can move or transform the movie clip
and its content as a whole. When you want one displayed object to appear in front
of or behind another, you use Flash’s Modify→Arrange commands. To a designer,
it all seems pretty natural. But what happens when you put on your ActionScript
programmer’s hat and want to do those same display-related chores using only
ActionScript? The key is the Display List, and that’s the sole topic of this chapter.
The Display List is exactly what its name implies. It’s a running list of the objects
displayed during a Flash animation. You make things visible by adding them to the
Display List and make them disappear by removing them from the list. The Display
List keeps track of the stacking order of objects on the stage, managing the way
they overlap one another. This chapter shows you how to add and remove items
from the Display List and how to manage the stacking order. You’ll learn a lot about
the DisplayObject and DisplayObjectContainer classes. At the end of the chapter
(page 507), there’s a handy reference for some of the most common properties and
methods related to Display List tasks.

The Display List: Everything in Its Place
Simply put, anything that appears on the stage in Flash Player is a display object.
That includes shapes, lines, text fields, and movie clips. Because they’re displayable,
these objects have a lot of similar properties, including x/y coordinates that mark their

481

www.it-ebooks.info

The Display
List:
Everything in
Its Place

position on the stage. They have width and height properties, which you can see in
the Properties panel whenever you select them. If you’re following the ActionScript
discussion that began in Chapter 12, then it’s probably clear that displayable objects
inherit these similar properties from some ancestor class (page 422). In fact, they’re
all descendants of a class called, appropriately enough, DisplayObject. As you work
in ActionScript, you’ll find lots of objects that get important, much-used properties
and methods from DisplayObject.

When Display Objects are Display Object Containers
Suppose you create a new Flash document, with nothing on the stage, and you publish
it or test it with Ctrl+Enter (⌘-Return on a Mac). From Flash Player’s point of view, that
empty .swf has two display objects: the stage itself (yep, it’s a display object) and
the animation’s main timeline. Even if there’s only a single frame, the main timeline
is considered a display object that’s placed on the stage. It works like this: Though
the Flash Player’s stage looks empty, it still has a couple of displayable features,
like a background color and the width and height of the stage. Equally important,
the stage is a container. When you put display objects on the stage, they become
visible. Along the same lines, the main timeline is also a display object. Anything
you put in a frame of that main timeline is displayed in the Flash animation. So it,
too, is a container for other display objects. So, before you even start the process
of building your animation, Flash always starts out with two display objects, which
are also containers, as shown in Figure 14-1.

Stage
DisplayObject
DisplayObjectContainer

Figure 14-1

Every Flash document starts off with two display objects that are also display object containers. You build
your animation by placing additional display objects and display object containers inside those two original
containers.

Main Timeline
DisplayObject
DisplayObjectContainer

Note Technically, the main timeline for any .swf is referred to as the .swf’s main class instance, but it’s
easier to think of it as the main timeline, and that’s what it’s called in this chapter.

Now, suppose you place something on that stage. Perhaps you’ve already drawn
a playing card and saved it as a movie clip in the Library. Drag that card from the
Library onto the stage, and now you’ve got three display objects. The stage is a
container holding the main timeline, and the timeline is a container holding the
playing card movie clip. Everything that appears in a Flash animation has to be in

482

flash CS6: The Missing Manual

www.it-ebooks.info

a container, and ultimately those containers are held in the main timeline, which is
held in the stage. Objects that can hold or contain other objects are a special type
of display object—they’re display object containers. Objects that descend from the
DisplayObjectContainer class have special properties and methods that are uniquely
suited to acting as containers for display objects.

Adding
Objects to
the Display
List

Note
If you’re eager to see a list of some of DisplayObjectContainer’s special properties and methods, go
ahead and flip to page 507. If you’d like a gradual introduction, just keep on reading.

All display object containers are also display objects, but there are display objects
that don’t have the special properties of a display object container. For example,
a rectangle can’t contain another object. You can group a rectangle with another
object, but technically it doesn’t contain the other object. Table 14-1 shows which
objects inherit properties from the DisplayObjectContainer class and which don’t.
Table 14-1 Display objects that can hold or contain other objects inherit the special properties of the
­DisplayObjectContainer class.
DisplayObject and
DisplayObjectContainer class

DisplayObject class only

Stage

Shape

Sprite

TextField

MovieClip

SimpleButton

Loader

Bitmap
Video
StaticText
MorphShape (tween)

In practical terms, you won’t spend a lot of time fretting over the stage and the
main timeline as display objects or display object containers. They’re always there.
You can count on them being there. And there aren’t many ways you can change
them. If you’re approaching ActionScript 3.0 with a Flash designer’s background,
you probably consider the act of placing something in the main timeline as “placing
an object on the stage.” On the other hand, you need to be aware of the properties
and methods available when you’re working with the movie clips, buttons, shapes,
and text that you place on that stage.

Adding Objects to the Display List
Enough theory! It’s time to get back to that empty stage and the task of displaying an object. The following exercises use a file called 14-1_Display_List.fla that’s

chapter 14: organizing objects with the display list

www.it-ebooks.info

483

Adding
Objects to
the Display
List

available on the Missing CD page at www.missingmanuals.com/cds. Several of the
examples in this chapter gradually add ActionScript code to this Flash document.
1. Select File→Open, and then browse to 14-1_Display_List.fla .
When you open this document, there’s nothing on the stage.
2. If the Library isn’t visible, go to Window→Library to display it.
The Library holds seven movie clips. Five of the movie clips look like simple
playing cards, and are named PlayingCard1 through PlayingCard5. No suits,
just numbers. There are two simple rectangles that represent card tables:
­GreenCardTable and BlueCardTable.
3. Open the Actions window by pressing F9 (Option-F9) or Window→Actions.
The Actions window appears without any code. If the Line Number option is
turned on, you see the number 1 in the left margin. If line numbering isn’t turned
on, click the Options button in the upper-right corner, and then choose Line
Numbers from the menu.

Coders’ Clinic

Making Library Objects Available to ActionScript
In the exercises in this chapter, you use ActionScript to display
instances of objects in the Library on the stage using ActionScript code. When you drag a symbol out of the Library and then
place it on the stage, Flash knows what object you’re referring
to because, well, you dragged it. ActionScript 3.0, on the other
hand, knows only classes and objects. Every object has to
derive from a class. In this chapter, the objects in your Library
are movie clips, but that’s not specific enough to distinguish
one from the other. So, in the Flash documents created for
this chapter, each of the movie clips in the Library represent
classes that extend the MovieClip class. In other words, they
represent custom classes derived from ActionScript’s built-in
MovieClip class.
It’s not that hard to associate a movie clip symbol in the
Library with a custom class that’s accessible to ActionScript.
In the Library, right-click the symbol’s name, and then choose

Properties from the pop-up menu. The Symbol Properties
dialog box opens with details about that particular symbol, as
shown in Figure 14-3. Turn on the appropriately named Export
for ActionScript checkbox, and then type in a class name for
the new class you’re creating in the Class text box. Immediately
below the Class text box is the name of the base class. In the
example shown in Figure 14-3, the PlayingCard1 class extends
the MovieClip class. When you click OK, the Symbol Properties
dialog box closes. Flash can’t find an existing definition for the
PlayingCard1 class, so it displays an alert mentioning the fact,
but because a de facto definition exists in the Library, Flash can
create a definition and place it in the .swf, which is what it does.
In the document 14-1_Display_List.fla, each of the cards and
the card tables represent custom classes created using this
same technique.

4. In the ActionScript window, type in the following code:
1
2

484

var card1:PlayingCard1 = new PlayingCard1();
addChild(card1);

flash CS6: The Missing Manual

www.it-ebooks.info

The first line is called a “variable declaration.” It creates a new instance of the
PlayingCard1 class and stores it in the variable card1. (If you want to learn more
about how PlayingCard1 became a class, see the box on page 490.) The second
line adds card1 to the Display List.

Adding
Objects to
the Display
List

5. Press Ctrl+Enter (⌘-Return) to test your ActionScript code.
When the Flash Player runs, a single card with the number 1 appears in the
upper-left corner of the stage.
The second line of code shown in step 4 adds card1 to the Display List, making it
visible on the stage, as shown in Figure 14-2. It’s almost as if you dragged the card
out of the Library. You may be wondering why the method for adding an object to
the Display List is called “addChild.” It has to do with the hierarchical relationship
of displayed objects. (ActionScript just loves hierarchical relationships.) In the case
of the Display List, an object contained in another object is considered a child of
the container. The addChild() statement adds card1 as a child to the main timeline
DisplayObjectContainer.

Figure 14-2

When you add this playing card to the Display List using ActionScript, you’ll see it on the stage when you
preview the Flash document (Ctrl+Enter or ⌘-Return).

Add a Second Object to the Display List
You can add a second card using the same two steps in your code. First create an
instance of PlayingCard2 using the variable name card2. Then add card2 to the
Display List using the addChild() method. Here are the steps:
1. In the Actions panel, press Enter or Return to create a new empty line, and
then type two more lines:
var card2:PlayingCard2 = new PlayingCard2();
addChild(card2);

The main timeline now has two children, as shown in Figure 14-4.

chapter 14: organizing objects with the display list

www.it-ebooks.info

485

Adding
Objects to
the Display
List

Click to
expand/collapse

2. Press Ctrl+Enter (⌘-Return) to test your ActionScript code.
When Flash Player runs, you see the second playing card in the stage’s upper-left
corner. It looks as if only the card2 movie clip is on the stage. That’s because the
second card was placed directly over the first. So far, your ActionScript code
adds cards to the Display List, making them visible. You haven’t provided any
instructions about where to place the cards. Without instructions, ­ActionScript
places the registration point of an object at 0, 0 on the stage—that’s the upperleft corner.

Export for
ActionScript

Symbol name

Figure 14-3

Use the Symbol Properties dialog box
to turn symbols into classes that you
can access with ActionScript code. After
turning on the Export for ActionScript
checkbox, provide a name for the new
class in the Class text box.

3. In the Action panel on the next available line, type the following code:
card2.x = 50;
card2.y = 50;

These lines reposition the card2 movie clip so it appears 50 pixels from the top
and left margins.
486

flash CS6: The Missing Manual

www.it-ebooks.info

4. Press Ctrl+Enter (⌘-Return) to test your ActionScript code.
This time when Flash Player shows your document, you see both cards
(­Figure ­14-5). The first card movie clip you placed, card1, appears to be underneath card2.

Adding
Objects to
the Display
List

Figure 14-4.

Stage
DisplayObject
DisplayObjectContainer

This diagram shows the child/parent relationship of the stage, main timeline,
and the two playing card instances. Since they’re movie clips, you can use
the two playing cards as display object containers, but you’ll get to that later
(page 490).

Main Timeline
DisplayObject
DisplayObjectContainer

PlayingCard1 instance
card1
DisplayObject

PlayingCard2 instance
card2
DisplayObject

Figure 14-5

The card2 movie clip is positioned using x/y coordinates. Because card1 was added to the Display List
first, it appears beneath card2.

At this point, the complete code for your project may look like this:
1
2
3
4
5
6
7
8

var card1:PlayingCard1 = new PlayingCard1();
addChild(card1);
var card2:PlayingCard2 = new PlayingCard2();
addChild(card2);
card2.x = 50;
card2.y = 50;
chapter 14: organizing objects with the display list

www.it-ebooks.info

487

Adding
Objects to
the Display
List

The empty lines aren’t necessary they’re there for housekeeping purposes only,
making the code a little easier to read. As your projects get bigger, you may be
inclined to keep the variable declarations together. So go ahead and rearrange your
code so it looks like this:
1
2
3
4
5
6
7
8

var card1:PlayingCard1 = new PlayingCard1();
var card2:PlayingCard2 = new PlayingCard2();
card2.x = 50;
card2.y = 50;
addChild(card1);
addChild(card2);

Now, when you test the animation, you see card1 peeking out from behind card2.
You can make a couple of interesting conclusions from the code. Display List factoids
so far include these:
• Objects added to the Display List are placed on top of each other. Just like
cards dealt onto a card table, the second object you add to the Display List
covers the first.
• You can apply properties to an object before you display it. In lines 4 and 5,
you define the x/y coordinates for card2 before you display the card using the
addChild() method in line 8.
You can use both points to your advantage when you develop projects using
­ActionScript. Every visible object has a position index number (sometimes called the
Z-order) that tracks its position (or depth) in the stack. No two objects in a container
share the same position index number. When the way objects overlap is important,
you can control their appearance by adding them to the Display List in a specific
sequence. If you’re thinking that’s not always possible, don’t worry—this chapter
shows plenty of other ways to shuffle cards. Also, you can change the properties of
objects before they’re displayed. For example, you can set the x/y coordinates prior
to displaying the card2 movie clip on the stage. You can work with an object in code
without showing the object to your audience. You can set its position, change its
dimensions and colors, and add transformations and filters without adding it to the
Display List. When you finally place that object on the Display List, it’s essentially
preformatted.

Using trace() to Report on the Display List
As mentioned on page 473, the trace() statement is a multipurpose tool that
­ActionScript programmers use to double-check their code and report on variables
and objects. It never hurts to trace some of the objects in your code to understand
how ActionScript sees them. A good first step is to place one of your cards inside
the trace statement’s parentheses and see what shows up in the Output panel, as

488

flash CS6: The Missing Manual

www.it-ebooks.info

shown in Figure 14-6. Trace shows the following text: [object PlayingCard1]. From
this you can deduce that the variable card1 is an object of the PlayingCard1 class.

Adding
Objects to
the Display
List

trace(card1);

Helpful, but what happens if you check the name property for card1?
trace(card1.name);

Figure 14-6

Using the trace() statement, you can learn how ActionScript views the objects and variables in
your code. Here trace() reports that the variable card1 is an object of the PlayingCard1 class.

The message that appears in the Output panel is: instance1. Not so helpful. If you
don’t specifically give names to objects as you add them to your ActionScript code,
Flash names them for you, and you end up with names of the instance1 variety. So,
the next step for this project is to modify your code a little and add names for both
card1 and card2. (If you find the differences between class names, variable names,
and the name property of an object a little confusing, see the box on page 490.)
You can assign any string you want to the name property of card1 and card2, but
there’s no need to be too creative. Something like the following works just fine.
Create new lines, and then add:
card1.name = "Card 1";
card2.name = "Card 2";

chapter 14: organizing objects with the display list

www.it-ebooks.info

489

Adding
Objects to
the Display
List

Now the trace statements show the names of the objects in the Output panel. Instead
of getting “instance1” and so forth, you get “Card 1” and “Card 2.” Much better, but
you can fashion your trace() statements into something even more helpful by adding
some more explanatory text. Anything that appears in quotes in a trace() statement
is displayed literally in the Output panel. If you write a statement like trace(“dog”),
you see the word dog displayed in the Output panel. So you can modify your trace()
statement a bit to make a descriptive sentence about your card variables:
trace(card1.name, " is ", card1);

This statement displays an “almost sentence” that’s a little easier to understand:
Card 1 is [object PlayingCard1]. Creating this statement might seem like a lot of unnecessary work at this point, but as your ActionScript becomes more complicated,
statements like this are a big help in understanding what’s going on inside your
code. The next section uses trace() statements to report on the parent or display
object containers that hold the cards.
Coders’ Clinic

Naming Conventions and Your Sanity
In ActionScript, everything gets named. There are class
names, object names, variable names, and more. Sometimes,
when you’re up to your neck in code, you have one of those
can’t-see-the-forest-for-the-trees moments. One of the ways
experienced coders tell class names apart from variable names
is by the way they spell the names.
Flash gives you a fair amount of freedom in how you name
the classes that you create; however, it’s a convention to use
an initial uppercase letter for class names like PlayingCard1.

It’s also a convention to use an initial lowercase letter for
a variable name like card1. In this example, the names for
instances of cards are Card 1, Card 2, and so on. (Class names
and variable names don’t permit a space in the name, but
instance names do.) This makes the trace() statements a little
more readable, plus it’s different from the class and variable
names. Obviously, once you decide on a naming convention,
stick to it. It’ll make your code easier to read and understand.

Placing Objects Inside Display Containers
So far, the code that adds the two cards to the Display List isn’t specific about the
container that holds the objects. When no specific container is identified, ­ActionScript
places the object in the timeline that holds the code. As you might expect, if your card
is referred to as a “child,” the display object container holding the card is referred
to as a “parent.” You can use the trace statement to show the name of the parent
(the display object container) that holds your cards.
Note

If you look up the class description for DisplayObject in the ActionScript 3.0 Reference, you find that
it has a property called parent. Every display object is held in a display object container, so every display object
has a parent.

490

flash CS6: The Missing Manual

www.it-ebooks.info

Add these lines to the end of the code in the Actions panel:
trace(card1.name,
trace("The parent
trace(card2.name,
trace("The parent

Adding
Objects to
the Display
List

" is ", card1);
of ", card1.name," is ", card1.parent);
" is ", card2);
of ", card2.name," is ", card2.parent);

Placing card1.parent inside the trace statement parentheses causes Flash to show
the object class of the parent in the Output panel—in this case, MainTimeline. The
Output panel displays the words in the quotation marks verbatim. You can include
these words to make the output a little clearer for humans. As shown in Figure 1­ 4-7,
both of the cards have the same parent, meaning they’re both held in the same
display object container.

Figure 14-7

The trace() statement shows that the main timeline is the
parent of both cards. Programmers often use trace() to make
sure code is behaving as expected.

Once your animations get more populated, you’re likely to place display objects inside
other display object containers. To show that point, the next example adds a card
table to the Display List. The card table is a movie clip, so it has all the properties
and methods of the DisplayObjectContainer class. Using the addChild() method,
you can move one of the cards into the card table display object container. Finally,
you’ll add some additional trace statements at the end of the code to gain more
understanding about how the code works.
Follow these steps to update 14-1_Display_List.fla:
1. On new lines, type the following two lines of code. (You may want to keep
that first line with the other variable declarations):
var greenTable:GreenCardTable = new GreenCardTable();
greenTable.name = "Green Table";

The first line creates a new variable, greenTable. It’s an instance of the
­ reenCardTable symbol in the Library. (The drawing is a bit primitive, but think
G
of it as one of those professional green felt card tables.) The second line changes
the name property of this instance to “Green Table.”
2. To position the table, type the following line of code:
greenTable.x = 250;

This code positions greenTable so that it’s 250 pixels from the left margin. That
way, it won’t cover up the other items on the stage.

chapter 14: organizing objects with the display list

www.it-ebooks.info

491

Adding
Objects to
the Display
List

3. Next, add the following two lines of code:
addChild(greenTable);
greenTable.addChild(card2);

The addChild() method in the first line adds greenTable to the Display List. No
parent is designated, so greenTable is in the main timeline. In the second line,
you’re using the addChild() method a little differently from the previous examples. Since you’re running it specifically as a method of greenTable, a
­ ddChild()
adds card2 to the Display List as a child of greenTable. In other words, greenTable
is a display object container that holds card2. Figure 14-8 shows a diagram of
the relationships among the objects on the stage.

Stage
DisplayObject
DisplayObjectContainer

Figure 14-8

Up through step 5 below, your code displays two instances of playing cards.
One is in the main timeline, and the other card (card2) is in greenTable, a
display object container that is, in turn, contained in the main timeline.

Main Timeline
DisplayObject
DisplayObjectContainer

PlayingCard1 instance
card1
DisplayObject

GreenCardTable instance
greenTable
DisplayObject
DisplayObjectContainer

PlayingCard2 instance
card2
DisplayObject

4. Beginning on line 18, update the trace statements to match the following
code:
trace(card1.name, "is", card1);
trace("The parent of", card1.name,"is", card1.parent);
trace(card2.name, "is", card2);
trace("The parent of", card2.name,"is", card2.parent.name);
trace(greenTable.name, "is", greenTable);
trace("The parent of", greenTable.name, "is", greenTable.parent);

492

flash CS6: The Missing Manual

www.it-ebooks.info

5. Press Ctrl+Enter (⌘-Return) to test your animation.
When you test the code, the display looks like Figure 14-9. In the Output tab,
you see that now the parent of card2 is Green Table. The parent of Green Table
is an object of the MainTimeline class.

Adding
Objects to
the Display
List

The complete text in the Output panel reads:
Card 1 is [object PlayingCard1]
The parent of Card 1 is [object MainTimeline]
Card 2 is [object PlayingCard2]
The parent of Card 2 is Green Table
Green Table is [object GreenCardTable]
The parent of Green Table is [object MainTimeline]

Figure 14-9

After you add card2 to the Display List
as a child of greenTable, it appears in
its container. Now that it’s a container,
card2’s x/y coordinates use greenTable
(not the stage) as a reference point.
The card is placed 50 pixels from the
left edge and 50 pixels from the top of
greenTable’s borders.

If you’ve been following the examples in this chapter, then at this point your code
looks something like this:
1
2
3
4
5
6

var card1:PlayingCard1 = new PlayingCard1();
var card2:PlayingCard2 = new PlayingCard2();
var greenTable:GreenCardTable = new GreenCardTable();
card1.name = "Card 1";
card2.name = "Card 2";

chapter 14: organizing objects with the display list

www.it-ebooks.info

493

Adding
Objects to
the Display
List

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

greenTable.name = "Green Table";
card2.x = 50;
card2.y = 50;
greenTable.x = 250;
addChild(card1);
addChild(card2);
addChild(greengreenTable.addChild(card2);
trace(card1.name, " is ", card1);
trace("The parent of ", card1.name," is ", card1.parent);
trace(card2.name, " is ", card2);
trace("The parent of ", card2.name," is ", card2.parent);
trace(greenTable.name, "is", greenTable);
trace("The parent of", greenTable.name, "is", greenTable.parent);

The main thing the new code does is create and display a new display object
­container—the greenTable movie clip instance. A new addChild() statement places
card2 inside greenTable. If you’re keeping track of interesting Display List factoids,
here are some more for you:
• You can move display objects from one display object container to another with
the addChild() statement. There are two addChild() statements related to card2.
The first places card2 in the main timeline. The greenTable.addChild(card2) statement moves card2 from the stage into the greenTable ­DisplayObjectContainer.
A single instance, like card2, can appear in only one place at a time, so the latter
statement takes precedence.
• A display object’s position coordinates are relative to the display object container that holds it. Initially, card2 was positioned 50 pixels from the top and
50 pixels from the left border of the stage. After moving it to greenTable, the
code displays card2 relative to greenTable’s borders.
Modifying display containers
The objects inside a display object container are pretty much at the mercy of any
transformations that happen to the container. For example, suppose you move or
scale the width of greenTable while card2 is contained within it. Those changes and
transformations affect card2, since it’s a child of greenTable. You can test this process
by inserting these lines into your code beginning on line 12.
greenTable.y = 75;
greenTable.scaleX = 1.5;

The first line moves greenTable down from the top margin 75 pixels. The second line
scales the display object container, greenTable, making it one and one half times
its original width. When you test the code after these changes, you see that both
the move and the transformation affect card2 as well as greenTable (Figure 14-10).

494

flash CS6: The Missing Manual

www.it-ebooks.info

It’s interesting to note that it doesn’t matter whether the code places card2 in the
greenTable container before or after transforming the table: card2 is transformed
in either case.

Adding
Objects to
the Display
List

Figure 14-10

As discussed above, the transform statement that scales greenTable also scales
the card inside it.

Moving Objects from One Container to Another
It’s not unusual for a Flash animation to have more than one container, and you’ll
often want to move display objects from one container to another, just as you’d move
a document from one folder to another on your computer. The following updated
ActionScript code expands on the cards and card table theme. It adds a second
table to the stage (blue this time). It then places card1 on the new, blue table. Trace()
statements at the end of the code report on blueTable.
Note

If you’re following along, add the bold lines to your project. If you’d like to start from here, you can
use 14-2_Move_DisplayObjects.fla from the Missing CD (www.missingmanuals.com/cds).
1
2
3
4
5
6
7
8
9

var
var
var
var

card1:PlayingCard1 = new PlayingCard1();
card2:PlayingCard2 = new PlayingCard2();
greenTable:GreenCardTable = new GreenCardTable();
blueTable:BlueCardTable = new BlueCardTable();

card1.name = "Card 1";
card2.name = "Card 2";
greenTable.name = "Green Table";
blueTable.name = “Blue Table”;

chapter 14: organizing objects with the display list

www.it-ebooks.info

495

Adding
Objects to
the Display
List

10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

card2.x = 50;
card2.y = 50;
greenTable.x = 250;
greenTable.y = 75;
greenTable.scaleX = 1.5;
addChild(card1);
addChild(card2);
addChild(greenTable);
addChild(blueTable);
greenTable.addChild(card2);
blueTable.addChild(card1);
trace(card1.name, " is ", card1);
trace("The parent of ", card1.name," is ", card1.parent);
trace(card2.name, " is ", card2);
trace("The parent of ", card2.name," is ", card2.parent);
trace(greenTable.name, "is", greenTable);
trace("The parent of", greenTable.name, "is", greenTable.parent);
trace(blueTable.name, “is”, blueTable);
trace(“The parent of”, blueTable.name, “is”, blueTable.parent);

In this code, line 4 declares the blueTable variable, and line 9 gives it the name “Blue
Table.” Line 20 adds blueTable to the Display List, and then line 22 puts card1 in the
blueTable DisplayObjectContainer. The code is nearly identical to the code used for
greenTable (page 493). When you test the code, Flash Player displays it, as shown
in Figure 14-11.
So at this point you have two tables and two cards. One of the tables is distorted
a bit by scaling. Suppose you want to move a card from one table to another. That
would be a good job for a mouse click. You can add an event listener to the blue
table that waits for a mouse click and then moves card2 from the green table to
the blue table. Here’s the code for the event listener and the function that runs on
a mouse click. You can insert this code so it begins on line 24:
blueTable.addEventListener(MouseEvent.CLICK, clickTableListener);
function clickTableListener(evt:MouseEvent):void
{
blueTable.addChild(card2);
}

Now when you test your animation, you first see the blue table with card1 and the
green table with card2. If you click the blue table, card2 moves from the green table
to the blue table. It works as planned, but it’s kind of a one-shot deal and pretty dull.
One click, and the fun is over. It would be more exciting if you could click either table
to make card2 jump over to that table. It’s not hard to modify the event listener to

496

flash CS6: The Missing Manual

www.it-ebooks.info

do the job. In fact, the MouseEvent class has a special property—called target—that
identifies the object that’s clicked.

Adding
Objects to
the Display
List

Note It’s worth noting that clicking on the cards when they’re held in the “table” display object containers
triggers the event listener. When the cards can’t perform the function an error message appears. That’s not an
issue for this exercise, but would need to be accounted for in a finished project.

Figure 14-11

In the code that defines this page,
there are two display object containers
representing tables, with cards in them.
A scaleX() method has transformed the
green table (right). The transformation
affects both the table and the card in
the table.

As explained in Chapter 12, this process involves a listened-for event and an event
object. Like any object, the event object has properties, one of which is target.
This property stores the name of the object that initiates the event. In this case,
blueTable initiated the event, so it’s the target. To modify the code so that card2
jumps to whichever table is clicked, you need to modify the clickTableListener()
function so it identifies the clicked target object. Then you need to add an event
listener to greenTable.
Here are the changes you need to make to the code (shown in bold):
blueTable.addEventListener(MouseEvent.CLICK, clickTableListener);
greenTable.addEventListener(MouseEvent.CLICK, clickTableListener);
function clickTableListener(evt:MouseEvent):void
{
evt.target.addChild(card2);
}

Remember, evt is the variable name that identifies the MouseEvent in
c­ lickTableListener(). Like any variable, the actual name is up to you. It could be

chapter 14: organizing objects with the display list

www.it-ebooks.info

497

Adding
Objects to
the Display
List

event or simply the letter e. The property target identifies the object that triggered
the event. With the modified code, either of the tables can listen for the click event.
There’s nothing in the clickTableListener() function that’s specific to either the blue
or the green table, so it behaves relative to the container that’s clicked. When you
test the animation, card2 moves to the table you click. If it’s already on the table
you’re clicking, nothing happens.
Now that a display object (card2) is shuffling around between display object containers (greenTable and blueTable), it makes the trace() statements that report on parent
and child relationships a little more interesting. Unfortunately, the trace statements
run only once, and they don’t provide any updates when the clickTableListener()
function runs. One solution would be to copy and paste all the trace() statements
so they’re inside the clickTableListener() function’s brackets, but that adds a lot of
extra lines to your code. For a more elegant solution, you can turn all the trace statements into a single function, and then simply call that function whenever you need it.
Turning the trace() statements into a single function is relatively easy. Create a line
that defines the function with the keyword function, and a name you supply, like
traceDisplayList. Place all the trace statements inside the curly brackets that hold
the function’s code. When you’re done, it looks like the following. The bold line at
the top and the curly brackets are the only changes that need to be made:
function traceDisplayList():void
{
trace(card1.name, "is", card1);
trace("The parent of", card1.name,"is", card1.parent);
trace(card2.name, "is", card2);
trace("The parent of", card2.name, "is", card2.parent.name);
trace(greenTable.name, "is", greenTable);
trace("The parent of", greenTable.name, "is", greenTable.parent);
trace(blueTable.name, "is", blueTable);
trace("The parent of", blueTable.name, "is", blueTable.parent);
}

Throughout this chapter, you’ve added trace() statements as the code developed and
grew. If, as you’re working, you want to add more trace() statements, just place the
new lines inside the curly brackets. They’ll run with the other statements whenever
your code calls traceDisplayList().
Note

There are more details about creating functions and methods on page 426.

Now, to show the results of the trace() statements in the Output window, you need
only one line of code:
traceDisplayList();

498

flash CS6: The Missing Manual

www.it-ebooks.info

For example, if you add this line to the clickTableListener() every time someone
clicks one of the tables, the Output panel shows all the trace() statements. Here’s
the clickTableListener() code with the call to traceDisplayList() included:

Adding
Objects to
the Display
List

function clickTableListener(evt:MouseEvent):void
{
evt.target.addChild(card2);
traceDisplayList();
}

Test your project now with Ctrl+Enter (⌘-Return), and card2 jumps to whichever
table you click. Keep an eye on the Output panel, and you see that card2’s parent
is updated with each click.

Removing Objects from the Display List
The statement that removes a display object from the Display List is pleasingly
consistent with the statement that adds objects. It looks like this:
displayObjectContainer.removeChild(child);

So, if you want to remove card1 from the blue table, you write:
blueTable.removeChild(card1);

If you don’t specifically define the display object container, Flash assumes that
you’re referring to the main timeline. That’s the same assumption it makes with the
addChild() statement. For example, if you want to remove the blue table, you write:
removeChild(blueTable);

That removes blueTable from the main timeline. If blueTable is a display object container holding other objects, those contained objects also get removed. Everything
from the container on down disappears from view. If blueTable isn’t contained in the
main timeline—if it’s contained in another display object container, for example—the
code won’t find it and won’t remove it. The result is an error message, specifically
Error #2025: The supplied DisplayObject must be a child of the caller.
The previous section explained how to use a MouseEvent to move a card from one
table to another. That code used the target property to identify the table that was
clicked. To remove a card from the Display List when it’s clicked, you need to identify both the target (card1) and the target’s parent (blueTable). It may look a little
convoluted, but the code that does the trick looks like this:
evt.target.parent.removeChild(evt.target);

Here’s how that statement works, moving from left to right. As explained in the
previous section, evt.target identifies the object that was clicked, initiating the
event. By tacking the .parent onto that, you identify the container of the object that
was clicked. That’s all you need to invoke the removeChild() method. Remember,
removeChild() is a method of the display object container. Because the child you

chapter 14: organizing objects with the display list

www.it-ebooks.info

499

Managing
the Stacking
Order

want to remove is the object that was clicked, you can place evt.target inside the
parentheses of the removeChild() statement.
Here’s the event listener for card1, with a call to run traceDisplayList() at the end
of the function:
card1.addEventListener(MouseEvent.CLICK, clickCardListener);
function clickCardListener(evt:MouseEvent): void
{
evt.target.parent.removeChild(evt.target);
traceDisplayList();
}

As you see, there’s nothing in the function clickCardListener() that mentions card1. It
simply identifies the target that was clicked and the container of that target. So it’s
easy to add an event listener to card2 so that it works in exactly the same manner
and removes card2 from the Display List.
Note

Removing display objects from the Display List removes them from the main timeline and the stage,
but it doesn’t remove them from memory. As your programs increase in both size and their demands on computer
resources, it becomes important to remove them from memory when they’re no longer needed. To delete all
references to an object from memory you can use a statement like card2=null;.

It may not be the most entertaining card game in the world, but at this point when
you test your animation and code, it performs two basic card tricks:
• Click one of the tables, and card2 jumps to that table, if it’s not there already.
• Clicking card1 removes the card from the Display List.
In the next section, you’ll learn how to stack the deck the ActionScript way.

Managing the Stacking Order
As mentioned earlier, when you add display objects to the Display List, it’s like
laying cards on a card table. The first card appears on the table, and the next card
is placed on top of it (Figure 14-12). Each card placed on the table is at a specific
position in the stack. Like a lot of programming lists, the Display List position index
begins at 0. So the first object placed in a display object container is at position 0.
The second object is placed at position 1, and so forth. The position is known as the
index, and it’s represented by a number that’s an int type (integer). As the display
objects in your Flash animation become more numerous, it’s harder to keep track of
them. There are times when it might be easier for you, the ActionScripter, to identify
an object by its position in the stack rather than by its instance name. For example,
you might have a card game where you want to deal the top five cards in the deck.
In this case, the cards’ names don’t matter as much as their position in the deck.

500

flash CS6: The Missing Manual

www.it-ebooks.info

Adding Display Objects by Index Position
Just as display object containers have methods for working with child display objects
by name, they have other methods for working with them by their index. For example,
when you used the addChild() method earlier in this chapter, it looked like this:

Managing
the Stacking
Order

greenTable.addChild(card1);

This statement adds the display object card1 to the display object container
greenTable. Suppose there were already five cards on greenTable and you want
to place card1 in the second-from-the-bottom position. You use the addChildAt()
method:
greenTable.addChildAt(card1, 1);

The addChildAt() method needs two parameters to work: the variable name of the
display object (card1) and the index position (1). Because the position index starts
with 0 at the bottom, you use the int 1 to place the card in the second position from
the bottom.

Figure 14-12

The code in the box on page 506 places cards on the main timeline
display object container. Card 1 was placed first, then Card 2, and so forth.
Trace statements show that Card 1 is at position 0, Card 2 is at position 1,
and so forth.

chapter 14: organizing objects with the display list

www.it-ebooks.info

501

Managing
the Stacking
Order

The Flash document 14-3_Stacking_Order.fla (on the Missing CD page at www­.­
missingmanuals.com/cds) shows this example. The code below is similar to the
previous examples in this chapter. Here’s a rundown on how the code works:
• The lines with double slashes (//) are comments; they have no effect on the
way the program runs.
• Lines 2 through 6 declare the playing card variables.
• Lines 9 through 13 give each variable an instance name.
• Lines 16 through 25 use the x/y properties to set the position for each card so
that they overlap, making their stacking order easily visible, although the cards
aren’t displayed yet.
• Lines 28 through 31 add card2 through card5 to the Display List using the
a­ ddChild() method. This way, each new display object gets placed on top of the
previous one. As the code adds them, it gives each card a position index starting
with 0. So, card2 index = 0, card3 index = 1, card4 index = 2, card5 index = 3.
Because no display object container is explicitly defined, it places the display
objects in the main timeline. Card1 has not yet been displayed.
• Line 34 adds card1 to the Display List at index position 1, using the a
­ ddChildAt()
method. When card1 is added at index position 1, any card at or above
that index gets bumped up by one, to make room for the new card. No
two cards (­DisplayObjects) can have the same index in the main timeline
(­Display­ObjectContainer). All the cards, except for card2, are repositioned in
the stacking order.
• Line 36 calls the traceDisplayList() function.
• Lines 39 through 47 define the traceDisplayList() function. The first trace statement uses card1.parent to identify the display object container holding card1;
that is, the main timeline. The statement also uses the numChildren property
to display a value showing the number of children held in the display object
container. The rest of the statements use the getChildIndex() method of the
DisplayObjectContainer:
1
2
3
4
5
6
7
8
9
10
11
12

502

// Declare variables for
var card1:PlayingCard1 =
var card2:PlayingCard2 =
var card3:PlayingCard3 =
var card4:PlayingCard4 =
var card5:PlayingCard5 =

the
new
new
new
new
new

playing cards
PlayingCard1();
PlayingCard2();
PlayingCard3();
PlayingCard4();
PlayingCard5();

// Give the playing cards instance names
card1.name = "Card 1";
card2.name = "Card 2";
card3.name = "Card 3";
card4.name = "Card 4";

flash CS6: The Missing Manual

www.it-ebooks.info

13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47

Managing
the Stacking
Order

card5.name = "Card 5";
// Set the card’s position on the stage
card1.x = 0;
card1.y = 0;
card2.x = 50;
card2.y = 50;
card3.x = 50;
card3.y = 100;
card4.x = 50;
card4.y = 150;
card5.x = 50;
card5.y = 200;
// Place card2 through card5 on the stage (add to Display List)
addChild(card2);
addChild(card3);
addChild(card4);
addChild(card5);
// Insert card1 at a specific index position
addChildAt(card1,1);
traceDisplayList();
//Function to show Display List details in Flash’s Output panel
function traceDisplayList()
{
trace(card1.parent, "has", numChildren,"children");
trace(card1.name, "is at index position",getChildIndex(card1));
trace(card2.name, "is at index position",getChildIndex(card2));
trace(card3.name, "is at index position",getChildIndex(card3));
trace(card4.name, "is at index position",getChildIndex(card4));
trace(card5.name, "is at index position",getChildIndex(card5));
}

Test the animation, and you see a Flash stage that looks like Figure 14-13. The Output
panel shows a report on the number of display objects in the main timeline and the
index position of each card:
[object MainTimeline] has 5 children
Card 1 is at index position 1
Card 2 is at index position 0
Card 3 is at index position 2
Card 4 is at index position 3
Card 5 is at index position 4

chapter 14: organizing objects with the display list

www.it-ebooks.info

503

Managing
the Stacking
Order

You can experiment with the code by changing the index number in line 34. As a
result, you see card1 at different levels in the pile, and the Output panel reports a
different index position.

Removing Display Objects by Index Position
Display object containers have a method for removing the display objects they
hold by referencing their index position. You don’t need to mention the variable
name; just identify the index position by number. You can give the method a try in
14-3_Stacking_Order.fla. At line 35, insert a line with this statement:
removeChildAt(0);

Figure 14-13

Using the method addChildAt(card1,1) places card1 at the second index
position, because the position index begins counting at 0. For the full
code that creates this 14-3_Stacking_Order.fla animation, see page
502.

This statement removes card2, the first card that was placed in the main timeline.
Comment out the line with the trace() statements for card2, so it won’t produce an
error, by placing two slashes in front of the line so that it looks like this:
//trace(card2.name, "is at index position",getChildIndex(card2));

504

flash CS6: The Missing Manual

www.it-ebooks.info

Test the code, and you find that card2 isn’t displayed (Figure 14-14), and the index
position numbers for all the cards have changed:

Managing
the Stacking
Order

[object MainTimeline] has 4 children
Card 1 is at index position 0
Card 3 is at index position 1
Card 4 is at index position 2
Card 5 is at index position 3

Getting the Name or Index Position of a Display Object
A major part of the battle in writing ActionScript code is identifying a particular
object that you want to change or manipulate. Display object containers give you
two ways to identify the objects that they hold: You can identify them either by
their variable names or by their index positions. If you have either the name or the
index, the DisplayObjectContainer will provide the other descriptor. For example,
suppose greenTable is a display object container holding several cards. You can get
the index for card1 with a statement like this:
greenTable.getChildIndex(card1);

Figure 14-14

In this example, card2 was removed from the display, so only four cards are
displayed.

chapter 14: organizing objects with the display list

www.it-ebooks.info

505

Managing
the Stacking
Order

Attacking it from the other direction, if greenTable is a display object container
holding several cards and you want to know the name of a card at a specific index
position, you can use a command like this:
greenTable.getChildAt(2).name;

In 14-3_Stacking_Order.fla, the getChildIndex() method is used in the trace() statements to report on the index position of the various cards. It may be a little redundant,
but you can add statements using the getChildAt() method to display the names
of display objects at different index levels. To do so, add these lines before the last
curly brace of the traceDisplayList function:
trace("The
trace("The
trace("The
trace("The

name
name
name
name

of
of
of
of

the
the
the
the

object
object
object
object

at
at
at
at

index
index
index
index

position
position
position
position

0
1
2
3

is",getChildAt(0).name);
is",getChildAt(1).name);
is",getChildAt(2).name);
is",getChildAt(3).name);

Coders’ Clinic

Using a while Loop to Eliminate Repetitive Code
In this chapter, you see lots of nearly identical statements
grouped together, like the trace() statements in the example
above. The examples in this book use this method to clarify how
the code works. There’s nothing wrong with these statements,
and they produce fine results. But when you see repetitive code
like that, it’s important to know that there’s almost always a
more elegant way to handle the job. Usually, a while or a for
loop (page 438) will do the trick. For example, you can replace
the code above with the following:
var positionIndex:int = 0;

while (positionIndex < numChildren)
{
trace("The name of the object at
index position", positionIndex, "is",
getChildAt(positionIndex).name);
positionIndex++;
}

The first line creates a variable named positionIndex of type
int and stores the value 0 in it. The next line starts a while
loop. It says “while positionIndex is less than the number of
children in the display object container, run the code between
the curly brackets.” There are two statements in between

506

the curly brackets. The first is a trace() statement that uses
positionIndex to identify a child of the display object container.
That statement ends with the semicolon (;). The first time
positionIndex is used, it displays a number, and the second
time it’s the index for a getChildAt() method. The second and
last statement before the closing curly bracket increments
the positionIndex. So, on the first trip through the loop,
­p ositionIndex starts with a value of 0 and ends with a value
of 1. The loop continues to run until the value of positionIndex
is greater than or equal to the number of children in the display
object container. If you replace the trace() statements above
with this while loop, the lines displayed in the Output panel
are identical. They look like this:
The name of the object at index position 0 is Card 2
The name of the object at index position 1 is Card 1
The name of the object at index position 2 is Card 3
The name of the object at index position 3 is Card 4
The name of the object at index position 4 is Card 5
One major advantage that this while loop has over the more
literal code is that it works no matter how many children are
held in the display object container. You don’t have to know
in advance and write specific code for each child.

flash CS6: The Missing Manual

www.it-ebooks.info

Swapping the Position of Two Children
If you’re into multitasking, you’ll be glad to know you can reposition two display
objects at once using the swapChildren() or the swapChildrenAt() methods. As
you might anticipate at this point, the swapChildren() method uses the variable
names of the child display objects, while the swapChildrenAt() method uses the
index positions.

Summary of
Properties
and Methods

Going back to the tried-and-true green card table, here are a couple of examples
that show how to swap the positions of two child display objects. The following code
swaps positions using the variable names of the children:
greenTable.swapChildren(card1, card4);

To swap children by referencing their index positions, you provide an int value, like
this:
greenTable.swapChildrenAt(0,3);

Swapping children makes a pretty good mouse-click event. You can try it by
adding the following lines to the code in 14-3_Stacking_Order.fla . Adding the
t­ raceDisplayList() function to clickSwapListener() updates the Output panel after
the swap has taken place:
card2.addEventListener(MouseEvent.CLICK, clickSwapListener);
function clickSwapListener(evt:MouseEvent):void {
swapChildrenAt(0,4);
traceDisplayList();
}

Test the animation after you’ve added the event listener, and you find a little interactivity in the animation. Click card2, and it swaps position with the card at index
position 4. Click card2 again, and the cards move back to their original positions.
The trace() statements send updated reports to the Output panel.

Summary of Properties and Methods
This section gives you a summary of the properties and methods covered in this
chapter. This list isn’t exhaustive, but it includes some of the handiest and most
frequently used tools. You can find a complete list in the Flash CS6 help files:
Help→Flash Help→ActionScript 3.0 and Components→ActionScript 3.0 Language
and Components Reference. Look for the DisplayObjectContainer class, and then
scroll down to find the properties and methods. If you see a method and want more
details about it, click its name.

chapter 14: organizing objects with the display list

www.it-ebooks.info

507

Summary of
Properties
and Methods

DisplayObjectContainer Properties
All display object containers are also descendants of the DisplayObject type. They
have all the properties you’d expect in a displayable object, like x/y position coordinates, height, and width. In addition, they have a few properties that are particularly
useful in their role as containers. The summary below lists the name of the property
in bold, followed by a description, explaining the characteristics of the property and
a few details about its use. The formal description is the description found in Adobe’s
ActionScript 3.0 Reference. It lists the property name, and then on the right side of
the colon, it shows the data type stored in the property. The formal description is
helpful but a little abstract, so this list also provides an example, which is a little more
concrete and follows the card table and card theme used throughout this chapter.
The examples show how you’d use the property, assuming that the display object
container is an instance of a movie clip named greenTable.
• name. You can assign a name to a display object container using the name
property. You can use just about anything for a name. In the examples in this
book, the name property was used with the trace() statement. Be careful not
to confuse the name property with variable names or class names. See page
488 for more details about the name property.

Formal description: name: String
Example: greenTable.name
• numChildren. A property that keeps track of the number of children in a display object container. The value is an int data type. This value is helpful when
you’re writing routines that identify specific child objects in a container. If you
use numChildren along with the position index of the children, keep in mind
that the index begins its count at 0, while numChildren starts its count at 1. See
page 502 for an example that uses the numChildren property.

Formal description: numChildren: int
Example: greenTable.numChildren
• parent. Display object containers can have parents, too. Use the parent property to show the parent of the display object container, which has to also be a
DisplayObjectContainer type. When you work with the Display List, the methods
used most are those that belong to the display object container. Often the easiest way to identify the display object container is with the parent property. See
page 490 for more details about the parent property.

Formal description: parent: DisplayObjectContainer
Example: card1.parent. In this example, if card1 is a display object held in the display object container greenTable, the result identifies greenTable as the parent.

DisplayObjectContainer Methods
When you work with the Display List, you’re working with the methods of display
object containers. Methods like addChild() and removeChild() are indispensable.

508

flash CS6: The Missing Manual

www.it-ebooks.info

The summary list below is made up of three parts. The first part shows the name
of the method in bold, and then gives a description, explaining what the method
does, and the result or value that comes from the method. There may also be a page
reference pointing you to a place in this chapter that provides more details about
the method and related issues.

Summary of
Properties
and Methods

The second part of the summary shows the formal description of the method as
provided by Adobe in the help system’s ActionScript 3.0 Language and Components
Reference. From left to right, the formal description begins with the method name,
and then in parentheses shows the parameters required by the method. Parameters
include a descriptive word on one side of the colon and the data type on the other
side of the colon. Some methods have more than one parameter. On the right side
of the parentheses is another colon and a word that describes the data type or class
that the method returns. The formal description is somewhat abstract. The examples
at the end of each summary are more concrete, showing you how you’d write a
statement using the method. The examples continue using the card table and card
theme used in this chapter. The assumption is that the display object container in
the example is an instance of a movie clip named greenTable. The display object is
an instance of a movie clip named “card1.” Where a name property is used, card1
has a name property of “Card 1.”
• addChild(). Adds a display object to the Display List using the variable name of
the display object. Adding a display object to the Display List makes it visible in
the animation. The display object is added as a child of the display object container and then placed on the top of the visual stack, giving it the highest position index number. See page 501 for more details about the addChild() method.

Formal description: addChild(child:DisplayObject): DisplayObject
Example: greenTable.addChild(card1);
• addChildAt(). Adds a display object to the Display List using the variable name
of the child and a specified index position. The child is positioned at the exact
index included in the method parameters. Objects already on the Display List
at that index level or above are bumped up by one. The position index doesn’t
permit empty spots. So, for example, if a display object container has only four
children and you attempt to add a new child at index position 7, your animation won’t run, and you see an error message with the words, “The supplied
index is out of bounds.” For more examples using the addChildAt() method,
see page 501.

Formal description: addChildAt(child:DisplayObject, index:int):DisplayObject
Example: greenTable.addChildAt(card1,3);
• contains(). Determines whether a display object is held in a DisplayContainer­
Object. The result is true if the display object is in the display object container.

Formal description: contains(child:DisplayObject):Boolean
Example: greenTable.contains(card1);
chapter 14: organizing objects with the display list

www.it-ebooks.info

509

Summary of
Properties
and Methods

• getChildAt(). Returns the child display object instance at a particular position
index. After identifying the instance, you can use the properties and methods
of the object. See page 506 for more details.

Formal description: getChildAt(index:int):DisplayObject
Example: greenTable.getChildAt(3);
• getChildByName(). Returns the child display object by identifying the name
property. After identifying the instance, you can use the properties and methods of the object.

Formal description: getChildByName(name:String):DisplayObject
Example: greenTable.getChildByName(“Card 1”);
• getChildIndex(). Returns the position index of a display object using the variable name. The result is a value of type int. See page 502 for more examples
using the getChildIndex() method.

Formal description: getChildIndex(child:DisplayObject):int
Example: greenTable.getChildIndex(card1);
• removeChild(). Removes a display object from the Display List and from its
display object container. A child removed from the Display List is no longer
visible in the animation. The object is referenced by its variable name. If the
object is itself a display object container, then the display objects it holds are
also removed. For more details, see page 504.

Formal description: removeChild(child:DisplayObject):DisplayObject
Example: greenTable.removeChild(card1);
• removeChildAt(). Removes a display object from the Display List and from its
display object container. The object is referenced by its positionIndex; its name
or variable name isn’t required. If the object is itself a display object container,
then the display objects it holds are also removed. For another example of the
r­ emoveChildAt() method, see page 504.

Formal description: removeChildAt(index:int):DisplayObject
Example: greenTable.removeChildAt(2);
• swapChildren(). Swaps the position of two display objects in their display object
container. This changes the visual stacking order—the way objects appear to
overlap one another as well as other display objects in the container. For more
on swapChildren(), see page 507.

Formal description: swapChildren(child1:DisplayObject, child2:DisplayObject):
void
Example: greenTable.swapChildren(card1, card2);

510

flash CS6: The Missing Manual

www.it-ebooks.info

• swapChildrenAt(). Swaps the position of two display objects in their display
object container. This changes the visual stacking order—the way the objects
appear to overlap one another as well as other display objects in the container.
There are more details on the swapChildrenAt() method on page 507.

Summary of
Properties
and Methods

Formal description: swapChildrenAt(index1:int, index2:int):void
Example: greenTable.swapChildrenAt(1,3);

chapter 14: organizing objects with the display list

www.it-ebooks.info

511

www.it-ebooks.info

chapter

Controlling the Timeline
and Animation

15

O

rdinarily, Flash assumes you want to play your animation in sequential order
from the first frame in your timeline to the last. But sometimes “start at the
beginning and quit at the end” isn’t exactly what you want. Fortunately, by
using a combination of scenes, frame labels, and ActionScript (Chapter 12), you can
control your animation virtually any way you like.
For example, say you’re putting together an instructional animation. You want to start
with an introductory section, move on to the meat of your topic, and then wrap up
with a question-and-answer section. If you organize these sections into separately
named scenes, then you can play with the order of your animation quickly and
easily. If you decide to reposition the question-and-answer scene directly after the
introduction as a kind of pretest, for example, you can do that with a simple drag
of your mouse. You can even add buttons that the trainee can click to replay the
question-and-answer scene over and over, as many times as she likes.

In this chapter, you’ll see how to stop and start playback using ActionScript code.
You’ll see how to use Flash labels, scenes, and ActionScript to make the most common types of nonsequential playback effects, including looping (replaying a section
of your animation over and over again). To make these effects easy to test, you’ll also
see how to add interactive buttons to your animations. To start it off, this chapter
describes how to control the overall speed at which Flash plays your animation on
your audience’s computers.

513

www.it-ebooks.info

Slowing
Down (or
Speeding Up)
Animation

Slowing Down (or Speeding Up) Animation
As you saw in Chapter 1, animations are nothing more than a series of content-­
containing frames that Flash plays one after another so quickly that your eyes
interpret the overall effect as continuous movement.
You get a pretty good idea of how it will appear to your audience when you test it
on your own computer. But the speed at which Flash actually displays your frames
on someone else’s computer depends on several factors, many of which you can’t
control:
• Your audience’s computer hardware. Both processor speed and memory
affect animation playback, especially if the animation is very long or includes
multimedia, like bitmaps, sound, or video clips (Chapter 11). You have no control
over this factor unless you’re developing an animation for playback on a specific
set of machines: for example, if you’re creating a tutorial in Flash that you know
will be played only on the computers in your company’s training room.
• Your audience’s Internet connection. If you’ve added your animation to a web
page, the speed of your audience’s Internet connection affects how quickly your
animation downloads and plays on their computers. You have little or no control
over this factor (beyond preloading, which you can learn about in Chapter 19)
because, even if you’re targeting your animation for specific machines with
slower connections, Internet congestion may force download speeds of much
less than that.
• The delivery option you’ve chosen (if you’ve added video). If you’ve incorporated a video clip into your animation (Chapter 11), you’ve had to tell Flash
whether you want to:
• Embed the video into your Flash document. If you’ve chosen this option,
your animation won’t begin to play until the person has downloaded the
entire (enormous) Flash document, video clip and all. When the animation
does begin to play, however, neither his Internet connection speed nor
overall Internet traffic affect playback.
• Stream the video at runtime. If you’ve chosen not to embed the video
clip into your Flash document, the person’s Flash Player begins playing
the animation as soon as a few frames’ worth of the animation file have
finished downloading to his computer. When the animation does begin to
play, however, it might run in fits and starts, depending on his computer
hardware, Internet connection speed, Internet traffic, and the size of your
animation or video file.
• The size and configuration of your finished animation file. Large animation
files—files containing complex animated effects, lots of gradients, and transparent images, video clips, and so on—take longer than small files to download or
stream over the Internet. They can also take longer to play, because large files
tend to suck up all the memory on a computer or handheld device. You can

514

flash CS6: The Missing Manual

www.it-ebooks.info

control this factor by optimizing your animation to keep the file size as small
as possible and by preloading sections of your animation. (Chapter 19 shows
you how.)

Slowing
Down (or
Speeding Up)
Animation

• The frame rate you’ve applied to your animation. In your animation’s timeline,
you can tell Flash the maximum frame rate you want it to shoot for, in frames
per second (fps).
The easiest factor to control—and the only one covered in this chapter—is the last
one: the frame rate. The following section shows you how to set a new frame rate
for an animation.

Setting a Document Frame Rate
When you create a new animation, Flash assumes a maximum frame rate of 24 fps
(frames per second). In other words, given the constraints listed in the previous
section, Flash tries its best to display one frame every 1/24th of a second. Here’s
another way to look at frame rate: If your animation spans 240 frames, you’re looking at roughly 10 seconds of screen time.
Note

Previous versions of Flash started out using 12 fps because most people had slower Internet connections. At 24 fps, Flash matches the frame rate used for years by motion pictures.

In many cases, the standard 24 fps works just fine, but if you’re planning to put your
animation up on a website, you may want to consider a slower rate, like 12 fps. Your
rule of thumb should be to use the lowest frame rate that still provides smooth action for your animation. Usually, you decide on a frame rate when you create a new
Flash document. But you can change the frame rate at any time using the document
properties (as shown in Figure 15-1) or using ActionScript. Changing the frame rate
has some pretty significant side effects. First and most importantly, higher frame
rates speed up your document. If you have a 4-minute animation with a 12 fps frame
rate and you change it to 24 fps, your animation now finishes in 2 minutes. Too high
a frame rate can make animation look blurry. Too slow a frame rate creates herkyjerky movements and may cause audio syncing problems.
The next few examples use a Flash document, 15-1_Frame_Rate.fla, that you can
find on the Missing CD page at www.missingmanuals.com/cds/flashcs6mm.
To see the effects of different frame rates, follow these steps and feel free to add
some of your own experiments:
1. Open 15-1_Frame_Rate.fla , and then press Ctrl+Enter (⌘-Return) to test
the animation.
The Stutz Bearcat auto races across your screen at a blazing 12 fps. The car is
the only animated object in the movie and uses a motion tween to move from
left to right across the screen.

chapter 15: controlling the timeline and animation

www.it-ebooks.info

515

Slowing
Down (or
Speeding Up)
Animation

2. Below the timeline, click the Frame Rate setting (fps), and then type 8
(­Figure ­15-2).
You can click the Frame Rate and then type a new number, or you can drag to
change the setting.

Figure 15-1

Flash can play your movies
at frame rates from 0.01
frames per second (that is, a
super-slow 100 seconds per
frame) to a blistering 120
frames per second. Going
with a super-low or superhigh frame rate, though, can
cause audio synchronization
problems. Also, setting a
frame rate doesn’t ensure
that your animation will
actually play at that frame
rate; it’s just a suggested
maximum. Several other
factors (page 514) affect
playback, regardless of the
frame rate you set.

Frame rate setting

3. Test the animation by pressing Ctrl+Enter (⌘-Return).
The car moves across the screen in a decidedly herky-jerky fashion.
4. Click Modify→Document to open the Document Properties box, as shown in
Figure 15-1, and then for Frame rate, type a number from 24 to 120. Click OK.
Flash lets you type in a frame rate of anything between 0.01 and 120. But in
most cases, you want to stick with a frame rate of somewhere between 12 and
24 (the standard Hollywood movie frame rate). Every animation is different, of
course, and you might actually want to create an unusual effect. The Document
Properties window disappears. In the timeline, you see the new frame rate.
5. Test your new frame rate by choosing Control→Test Movie.
If you type in a frame rate greater than 24, then the car moves noticeably faster
and may even look a bit blurry.
Note

Frame rate affects the playback speed of the entire animation. Base your frame rate decisions on how
smooth you want the animation to be and the capabilities of your intended audience, as explained on page 515.
If you want to speed up (or slow down) only certain sections of your animation, change the rates by removing
(or adding) frames, as described on page 100.

516

flash CS6: The Missing Manual

www.it-ebooks.info

Setting a Frame Rate with ActionScript
ActionScript gives you the tools to change the frame rate for your animation, too,
since the stage has a frameRate property. (If you need more basics on ActionScript
and properties, see Chapter 12.) When you use ActionScript to set the frameRate
property for the stage, it has the same effect as setting a new frame rate in the
timeline when you’re designing your animation.

Slowing
Down (or
Speeding Up)
Animation

Figure 15-2

In addition to clicking the Frame Rate
setting (circled) in the timeline, Flash
gives you two additional ways to set
your animation’s frame rate. You can
select Modify→Document (which pops
up the window in Figure 15-1) or click
the stage and then change the frame
rate directly in the Properties panel
(Properties→Properties→FPS). Flash
doesn’t prevent you from changing
your frame rate in the middle of building an animation, but it’s such a basic
characteristic that you typically want
to set it once up front and change it
later only if you absolutely have to.

Frame rate setting

1. Add a new layer for actions to the timeline.
If you’re going to add code to the timeline, it’s good practice to add a special
layer at the top just for code and to name it something like “actions.” That way,
it’s much easier later if you have to hunt down and debug your code.
2. In the actions layer, click the first frame, and then open the Actions panel
(Window→Actions).
The Actions panel opens, as shown in Figure 15-3. For more details about the
tools available in the Actions panel, see page 416.
3. In the Actions panel, type the following line of code:
stage.frameRate=60;

chapter 15: controlling the timeline and animation

www.it-ebooks.info

517

Slowing
Down (or
Speeding Up)
Animation

Even though you’re changing the frameRate in ActionScript, the rate showing
below the time line still shows a frame rate of 24 fps (or whatever you used in
the last setting). In fact, the frameRate doesn’t officially change until the actions
on Frame 1 of the timeline are processed.
4. Click the 22nd frame in the actions layer of the timeline, and then press F7.
Flash inserts a blank keyframe in the timeline.

Click to open/close panels

ActionScript code

Figure 15-3

You type code directly
into the Actions panel.
Click the button to open
or close the side panels.
In this figure, the Current
Selection display shows
that the actions are stored
in (and take place at)
Frame 1.

Current selection

5. In the Actions panel, type the following code:
stage.frameRate=6;

Make sure that the 22nd frame in the timeline is selected when you type in the
code, because you want the frame rate to change at that point in the animation. The Current Selection tab should change to show a frame symbol and the
words actions: Frame 22.
6. Test your animation using Ctrl+Enter (⌘-Return).
The Stutz Bearcat races up to the stop sign and performs a Hollywood stop,
slowing down and rolling through the intersection, and then off the stage.

518

flash CS6: The Missing Manual

www.it-ebooks.info

Tip

Though you can change the frame rate of a timeline midstream, as shown in this example, in most cases,
it’s better to keep your frame rate at a single speed. Instead, to speed up the action, remove frames from the
sequence; if you want to slow things down, add frames. If you want to slow down or speed up a tweened motion,
that’s easy to do using the Motion Editor, as described on page 311.

Timeline Stop
and Go

Timeline Stop and Go
Starting and stopping an animation is similar to hitting the Pause and Play buttons
on a DVD player. If your audience is viewing your animation in the desktop version
of Flash Player, then they can pause and play the animation by pressing Enter or
Return, just as you start and stop the playback when you’re working in the Flash
authoring environment. ActionScript gives you the tools to start and stop animations programmatically. There are all sorts of ways you can put this feature to use.
Suppose you want the Stutz Bearcat to make a real stop at that stop sign, instead
of the kind of stop that’ll get you a ticket. You can place a stop() command in the
timeline at the frame where you want the animation to stop.
Note The stop() and go() examples in this section also use the car-driving frog graphics. If you’re continuing
to use your document from the previous exercises, delete the code on Frames 1 and 22 that changes the timeline
speed. If you want to start with a new sample document, download 15-2_Timeline_Stop_Go.fla from the Missing
CD page at www.missingmanuals.com/cds/flashcs6mm.

Here’s how to tell your animation when to stop using ActionScript:
1. Open 15-2_Timeline_Stop_Go.fla .
The actions layer at the top of the timeline has keyframes at Frame 1 and
Frame 22, but there’s no code in the frames.
2. Right-click Frame 22, and then choose Actions from the shortcut menu.
The Actions panel opens, and the current selection is set to Frame 22.
3. Type the following code:
stop();

This line of code is a little more complex than it may appear. In essence, it tells
the main timeline of the animation to stop playing. A more complete version of
this statement would read this.stop(). In that case, “this” refers to the main timeline. If you don’t explicitly reference the timeline you’re stopping, ActionScript
assumes you mean the current timeline, which in this case is the main timeline.
4. Test your animation using Ctrl+Enter (⌘-Return).
When the main timeline reaches the 22nd frame, it stops. Oddly, the wheels
of the Stutz Bearcat keep on spinning (Figure 15-4). (That’s got to be hard on
the tires!) The car on the stage is an instance of the StutzBearcatFrog symbol
chapter 15: controlling the timeline and animation

www.it-ebooks.info

519

Timeline Stop
and Go

in the Library. The symbol is a movie clip made up of two frames that make
the car’s wheels spin. To stop the wheels from turning, you need to stop the
StutzBearcat animation, too.

Figure 15-4

In this scene, the animation of the main timeline
stops, but the animation
in the car’s movie clip
keeps running, so the
wheels spin even when
the car is stopped. To
restore the laws of physics, you have to stop both
the main timeline and
the car’s movie clip using
ActionScript statements.

5. In the Actions panel, add the following line of code:
stutzBearcat.stop();

Now Frame 22 has two stop() statements. The first stops the main timeline, and
the second stops the instance of the stutzBearcat movie clip.
6. Test your animation using Ctrl+Enter (⌘-Return).
When the animation runs, the car and the car’s wheels make a legal stop in
front of the stop sign.

Using ActionScript to Start a Timeline
As you saw in the previous steps, the stop() command stops an animation nicely.
But what about getting that Bearcat rolling again? You stopped the animation by
putting the stop() statement in the frame where you wanted to stop, but putting a
play() statement in the following frame, as logical as it sounds, will do you no good.
The Flash Player will never reach the next frame—it’s stopped. So you have a couple
of choices, depending on what you want to trigger the starting and stopping. If
you want your audience to control it, then you can give them clickable buttons or
controls. If you want the animation to resume on its own, then a TimerEvent is the
best tool in your toolbox. You can add a TimerEvent to the same frame where the
stop() happened, as shown in Figure 15-5. When the timer is complete, it can t­ rigger

520

flash CS6: The Missing Manual

www.it-ebooks.info

a play() statement for both the main timeline and the stutzBearcat movie clip. Modify
the code on Frame 22 of the actions layer to read as follows:

Timeline Stop
and Go

1
stop();
2
stutzBearcat.stop();
3
4
var carTimer = new Timer(400,1);
5
carTimer.start();
6
7
carTimer.addEventListener(TimerEvent.TIMER_COMPLETE,
t­ imerCompleteListener);
8
9
function timerCompleteListener(evt:TimerEvent):void
10 {
11
play();
12
stutzBearcat.play();
13

}

Figure 15-5

The tab at the bottom
of the Actions panel
provides details about
the location of the code
shown. In this case, the
code resides on the 25th
frame of the actions layer.

The first two lines were already in the code. Line 4 creates a new timer called carTimer.
The first number in parentheses (400) sets the timer to wait a little less than half a
second (400 thousandths of a second). The second number (1), sets the timer to run
once. Line 5 starts the timer. The remainder of the code sets up the event handler.

chapter 15: controlling the timeline and animation

www.it-ebooks.info

521

Organizing
Your
Animation

Line 7 registers the event listener to run the function timerCompleteListener() when
the timer runs out. (For more details on events and event listeners, see page 460.)
The code between the curly brackets (line 11 and line 12) are the statements that start
the main timeline and the stutzBearcat movie clip. For the completed exercise, download 15-3_Timeline_Stop_Go_done.fla from the Missing CD (www.­missingmanuals.
com/cds/flashcs6mm).
Note In 1915, Erwin “Cannonball” Baker set a record driving from Los Angeles to New York in 11 days, 7 hours,
and 15 minutes in a Stutz Bearcat.

Organizing Your Animation
As you see in a lot of the examples earlier in this book, you don’t have to do a thing
to your standard timeline, organization-wise. You can let Flash play your animation
sequentially, from Frame 1 right through to Frame 500 (or whatever number your
last frame is) with no problems.
If you need your animation to jump around and play out of sequence, though, there
are a few ways you can do it. Which method is best depends on what you’re trying
to do. Here are three methods, along with their pros and cons:
• Use labels to create bookmarks in the timeline. If you break an animation into
named chunks with frame labels, then you give your animations the potential to
be flexible and more interactive, because you can write ActionScript actions that
target (act on) each individual chunk. For example, you can let your audience
decide whether to play the ralph_reacts scene first, last, or skip it altogether.
This method is one of the most popular, especially with the ActionScript crowd.
It’s easy to create labels and easy to use them in ActionScript. In short, wherever
you use a frame number to refer to a specific frame in a timeline, you can also
use a frame label.
• Divide your animation into separate .swf files and load them as needed.
This method is great if you have different teams working on a long animation.
Team members can create movie clips independently, and then a master movie
clip can load the other movie clips as needed. One of the advantages of this
method is that it’s faster, especially if you’re sending .swf files over the Internet.
Your audience needs to download only the .swf files they actually want to view.
• Create scenes within your Flash document. Scenes have more benefits for the
Flash designer than they do for either the Flash coder or the Flash audience. If
you break an animation into scenes, then you can find what you’re looking for
quickly; you can also easily rearrange your animation, using the Scene panel.
Scenes make it easy to focus on a small section of your animation while you’re
creating and previewing it. You don’t have to preview an entire animation when
all you want to see is one small section. All the scenes are stored in a single .swf

522

flash CS6: The Missing Manual

www.it-ebooks.info

file, so your audience has to download the complete file, even if they’re viewing
only one or two of the scenes.

Organizing
Your
Animation

Tip
Both scenes and labeled frames are a natural fit for creating a website in Flash because they let you
organize your content nonsequentially. Page 456 shows you an example of linking content to navigation buttons.

Working with Labeled Frames
Labeled frames are like named bookmarks. Once you label a frame, you can jump to
that specific point in the timeline using the label’s name. Labeled frames are great
tools to use when you want to give your audience an opportunity to interact with
the animation. For example, if you’re creating a series of lessons, you can create a
label for each lesson. You can then give your students a table of contents, where
they can jump to any lesson with the click of a button. Or, suppose you’re using
Flash to build an animated website and you want to display a different web page
when someone clicks a button on your navigation bar. If she clicks the Contact
Us button, for instance, you want to display a web page showing your company’s
contact information.
Technically, you don’t have to label your frames in order to do this. You can create
an event listener for your Contact page button that uses code like this:
gotoAndPlay(15);

The problem with this approach is that if you go back and add frames to the beginning of your timeline, it muffs up your code. If you add 10 frames to the beginning
of your animation, for example, the old Frame 15 is now the new Frame 25. So, to
make your button work again, you’d have to change the ActionScript code to this:
gotoAndPlay(25);

A much better approach is to give Frame 15 a meaningful label, like contact, and
write the ActionScript code this way:
gotoAndPlay("contact");

When you label a frame like this, Flash always associates the same frame with the
label—no matter what number that frame ends up being. So you can edit your
timeline to your heart’s content without ever having to worry that you’re breaking
your actions. As a significant side benefit, using words rather than numbers makes
your code easier to read and understand.
The following sections show you how to label frames, and how to reference those
labels in ActionScript code. This exercise uses a file called 15-4_Frame_Labels.
fla, which you can find at the Missing CD page at www.missingmanuals.com/cds/
flashcs6mm. The completed project is in a file named 15-5_Frame_Labels_done.fla.
Adding a Frame Label
Labeling a frame is easy. All you have to do is select a frame and then, in the Properties panel, type a name for the label.
chapter 15: controlling the timeline and animation

www.it-ebooks.info

523

Organizing
Your
Animation

Note

As with all content (images, sounds, actions, and so on), the label you attach to a keyframe stays in
force until the next keyframe.

To label a frame:
1. Open 15-4_Frame_Labels.fla in Flash, and then press Enter to play the
animation.
This rather abbreviated movie is made up of three words: Intro, Main, and Credits.
Each word is animated using shape tweens. There are new words at Frame 1,
Frame 16, and Frame 46. The animation has three layers: words, buttons, and
labels. You can label any keyframe in a timeline, but if you place all your labels
in a single layer, they’re easier to find.
2. In the timeline, in the labels layer, click the first frame.
Flash highlights the selected frame, and the Properties panel shows properties associated with Frame 1. (If the Properties panel isn’t showing, then go to
Window→Properties.)
3. In the Properties panel, click the Label→Name box (Figure 15-6), and then
type intro.
Your first label is complete. In the timeline, Flash displays a little red flag in the
frame you attached the label to, followed by the label itself. In the Properties
panel, you may need to click the triangle button next to Label to expand the
Label subpanel.

Figure 15-6

Flash assumes a label type of Name, and that’s exactly what you want in most circumstances. (The other label types Flash has are Comment, which displays your label in the
timeline but doesn’t let you access it using ActionScript, and Anchor, which lets you
designate the frame as a separate HTML anchor page that your audience can return to
using the browser’s Back button.)

4. In the labels layer, click Frame 16, and then press F6.
A new keyframe appears at Frame 16. Only keyframes can have labels. So to
attach a new label to Frame 16, you need to create a keyframe first.

524

flash CS6: The Missing Manual

www.it-ebooks.info

5. In the Properties panel, click the Label→Name box, and then type main .
The second label named main appears in the labels layer.

Organizing
Your
Animation

Frequently Asked Question

The Difference Between Scenes and Labeled Frames
It sounds like scenes and frame labels do the same thing:
Both let me break up my animation into chunks and make the
chunks interactive, and both let me target a frame using a
name instead of just the frame number. So if they both do the
same thing, when do I use one over the other?
Using labeled frames is very similar to using scenes. But there
are three big differences between the two:
• Simply dragging scenes around in the Scene panel
rearranges the way Flash plays your animation. It doesn’t
work that way with frame labels. (You can rearrange the
way your animation plays using labeled frames, but you
have to write the ActionScript code to do it.)
• It’s harder to break up scenes than to add labels. When
you use scenes, you need to either add new content for

each scene as you build your animation, or—if you’ve
already created your animation and want to break it into
scenes after the fact—you need to cut and paste frames
from the original Scene 1 into your new scenes. Hardly
rocket science, but it is extra work. Adding or changing
frame labels is much quicker.
• As a designer, you see separate timelines when you work
with scenes. When you work with frames, you see one big
timeline. This difference is usually the deal breaker: Some
people love working with content in separate timelines;
some people hate it. It’s interesting to note that no matter
which method you use, Flash stores everything in one big
timeline in the published SWF file.

6. In the labels layer, click Frame 46, and then press F6.
A new keyframe appears at Frame 46.
7. In the Properties panel, click the Label→Name box, and then type credits .
The third label named “credits” appears in the labels layer.
Targeting a frame label with ActionScript
After you’ve labeled a frame, you can reference that label in an ActionScript action.
This section shows you how to program three buttons that jump to a specific frame
label in the timeline.
Note

The example in this section is identical to the one on page 532 except for two differences: This example
shows ActionScript targeting labeled frames in a single timeline, while the one on page 532 shows ActionScript
targeting separate scenes.

chapter 15: controlling the timeline and animation

www.it-ebooks.info

525

Organizing
Your
Animation

To target a labeled frame:
1. Open the Flash file, and then move the playhead to Frame 1.
On the stage you see the word “Intro” and three buttons with the text “Play
Intro,” “Play Main,” and “Play Credits.”
2. Test the animation by choosing Control→Test Movie.
In the test window, you see the word “Intro” recede, the word “Main” approach
and recede, and the word “Credits” approach. Clicking the Play Intro, Play Main,
and Play Credits buttons turns the buttons from red to yellow but has no other
effect on the animation.
3. Below Flash’s timeline, click the New Layer button. Then click the name and
type actions, as shown in Figure 15-7.
A new layer named actions appears in the timeline. You’ll use this layer to hold all
of your ActionScript code. As a rule of thumb, it’s best to keep your ActionScript
code as close together as possible. When snippets of code are tucked away in
different layers or movie clips, it’s harder to troubleshoot.

Actions layer

Labels layer

Timeline labels

Figure 15-7

When you place
ActionScript code in the
timeline, it’s always best
to devote a specific layer
to the code, which makes
it easier to find and debug
your code later. It’s also
a good idea to keep both
the labels layer and the
actions layer at the top of
the timeline.

New layer

4. In the actions layer, create a keyframe at Frame 15 by selecting the frame
and then pressing F6.
An empty circle appears in Frame 15, indicating a keyframe.
5. With Frame 15 still selected, type the following ActionScript statement in
the Actions panel:
stop();

This statement stops the animation from playing when it reaches Frame 15. This
marks the end of the “intro” segment of the animation.
6. Create keyframes and stop() statements for Frames 44 and 60, similar to
what you did in steps 4 and 5.

526

flash CS6: The Missing Manual

www.it-ebooks.info

At this point, each of the three animation segments (intro, main, credits) has a
stop() statement at the end. If you test your animation now, it will stop at the
end of the Intro. In the following steps, you’ll write code for each of the three
Play buttons.

Organizing
Your
Animation

7. Click the outside edge of the Play Intro button.
The button shows a selection box, and a button icon appears in the Properties
panel, as shown in Figure 15-8. If you see the letter T in the Properties panel, it
means you selected the Play Intro text, not the Play Intro button, so try again.

Button selected

Button icon

Figure 15-8

These buttons are made up of two parts:
a button symbol, plus text placed over the
symbol. To select just the button, click the
edges outside the text. You can tell whether
you’ve selected the button symbol or the
text by checking the icon that shows in the
Properties panel.

Text selected

Text icon

8. In the Properties panel, name the button instance btnIntro.
There are three instances of buttons on the stage: Play Intro, Play Main, and Play
Credits. They’re all instances of the BullsEye button in the Library. Before you
can write ActionScript code for each button, you have to name it.

chapter 15: controlling the timeline and animation

www.it-ebooks.info

527

Organizing
Your
Animation

9. Repeat steps 7 and 8 to name the remaining two buttons.
Using a consistent naming convention, name the Play Main button btnMain, and
the Play Credits button btnCredits.
10. Click Frame 1 in the actions layer, and then type the following code to create
an event listener for btnIntro:
1
2
3
4
5
6

btnIntro.addEventListener(MouseEvent.CLICK, clickIntroListener);
function clickIntroListener(evt:MouseEvent)
{
gotoAndPlay("intro");
}

Line 1 registers a MouseEvent listener for btnIntro. Lines 3 through 6 comprise
the function clickIntroListener(). This function holds the code that runs when
someone clicks the btnIntro button. (For more details on handling events
and event listeners, see page 448.) Line 5 holds the important action for the
function. The gotoAndPlay() statement tells the Flash Player to jump to the
frame labeled “intro” and to begin playing from that point forward. You can
place either a label, like “intro,” or a specific frame number, like “16,” inside the
gotoAndPlay() parentheses. As explained on page 523, labels are much more
flexible than specific frame numbers.
11. Add event listener code for the remaining two buttons. When you’re through,
it should look like this:
btnIntro.addEventListener(MouseEvent.CLICK, clickIntroListener);
btnMain.addEventListener(MouseEvent.CLICK, clickMainListener);
btnCredits.addEventListener(MouseEvent.CLICK, clickCreditsListener);
function clickIntroListener(evt:MouseEvent)
{
gotoAndPlay("intro");
}
function clickMainListener(evt:MouseEvent)
{
gotoAndPlay("main");
}
function clickCreditsListener(evt:MouseEvent)
{
gotoAndPlay("credits");
}

528

flash CS6: The Missing Manual

www.it-ebooks.info

When you have several similar statements, like these mouse event listeners, you
can save time by writing and testing one statement. Then, with a little copy, paste,
and modify magic, you can quickly create the similar statements. If things don’t
work as planned, double-check the way you modified the code. In this case,
you’d carefully examine all the code where “intro,” “main,” and “credits” appear.

Organizing
Your
Animation

12. Test your animation using Ctrl+Enter (⌘-Return).
If your code is working properly, the animation plays the “intro” and then
stops. When you click any of the Play buttons, Flash plays that segment and
then stops. If your code isn’t working quite right, compare your project with
15-5_Frame_Labels_done.fla.
As this example shows, frame labels and gotoAndPlay() statements are powerful
tools for animations that play out of sequence. Labels give you an easy and convenient way to mark off segments in a timeline, and you can add as many of them as
you want. There’s another related statement, gotoAndStop(), which does exactly
what you imagine. It jumps to a specific frame and stops Flash Player from moving
on to the next frame. The next section of this chapter explains how to use scenes
to accomplish the same tasks.

Working with Scenes
A scene in Flash is a series of frames to which you assign a name of your choosing.
When you’re working in Flash, each scene has its own timeline. In the preceding
example using labels, a single timeline was marked off into three parts: intro, main,
and credits. Each segment occupied frames in the same timeline. The first 15 frames
made up the “intro,” the next 30 frames were labeled “main,” and the final 15 frames
were labeled “credits.” You can use scenes to break a larger animation into smaller
chunks that can be targeted with ActionScript.
Each time you create a new scene, Flash displays a brand-new timeline for you to
fill with content. Then, when you play your animation, Flash plays each scene in topdown order, beginning with the first scene listed in the Scene panel (Figure 15-9),
and ending with the last.
As the following sections show, after you create scenes, you can rename them and
reorganize them with the click of a button.
Tip

As an alternative to using scenes, you may want to consider publishing separate .swf files and loading
them into your main animation as needed. This method can be helpful when teams of animators produce a long
animation. Each team works with separate Flash documents and publishes its own .swf files.
Creating a scene
Flash automatically starts you out with one scene (cleverly named Scene 1) each
time you create a new Flash document.

chapter 15: controlling the timeline and animation

www.it-ebooks.info

529

Organizing
Your
Animation

To create additional scenes:
1. In the timeline, create content for the frames you want in your first scene.
If you’re using the example file 15-6_Scenes.fla, you see two layers, buttons,
and words, each of which extends from Frame 1 through Frame 15. (You can
download this example file from the Missing CD page at www.missingmanuals.
com/cds/flashcs6mm.)

Figure 15-9

Every animation you create has at least one scene (named
Scene 1, unless you tell Flash differently). By using the
Scene panel to create and name new scenes, you can
organize long animations into manageable chunks. Flash
displays the timeline for each scene separately, so it can be
easy to forget which scene you’re in at any given time. In
fact, your only cue is the scene name Flash displays in the
Edit bar. If you don’t see it (along with the little clapper
icon), choose Window→Toolbars→Edit Bar.

Delete Scene
Add Scene

Duplicate Scene

2. Choose Window→Other Panels→Scene.
The Scene panel appears.
3. Click the Add Scene icon.
In the Scene panel, Flash creates a new scene and then places it directly below Scene 1. Flash also displays a brand-new timeline and a clean, fresh stage
(Figure 15-10).
4. In the timeline, create content for the frames you want in your new scene.
When you’re done, you may want to rename the scene (as discussed in the
next section), and then test it by choosing Control→Test Scene. Or, to create
additional scenes, simply repeat steps 3 and 4.
Renaming a scene
The names Flash gives each scene you create—Scene 1, Scene 2, Scene 3, and so
on, as you see in Figure 15-10—aren’t particularly useful if you’re using scenes as a
way to find the frames you need quickly. Fortunately, Flash makes it easy for you to
rename scenes. Here are the steps:

1. Choose Window→Other Panels→Scene.
The Scene panel appears.
530

flash CS6: The Missing Manual

www.it-ebooks.info

2. In the Scene panel, double-click the name of the scene you want to change.
Flash displays the scene name in an editable text box.

Scene icon

Organizing
Your
Animation

Figure 15-10

Each time you create a new scene, Flash
hides the timeline for the previous scene
and displays a brand-new workspace. At
this point, Flash associates everything you
add to the stage and the timeline to the
newly created scene—here, Scene 7. (Flash
names scenes sequentially; in this figure,
Scenes 2 through 6 were created and then
deleted.)

Scene panel

New timeline

3. Type the new name.
You’ll need to refer to this name in ActionScript code if you’re planning to make
your animation interactive, so short and meaningful is best. For example, you
might choose intro for an introductory scene, main for the meat of your animation, and credits for the last few wrap-up frames that display your company’s
name and contact info.
Reorganizing scenes
Flash always plays scenes in order from the scene that appears at the top of the
Scene panel down to the scene that appears in the bottom. To change the order in
which Flash plays your scenes:

1. Choose Window→Other Panels→Scene.
The Scene panel appears.
Note

Another way to change the order in which Flash plays your scenes and frames is by using ActionScript,
as shown in the next.

chapter 15: controlling the timeline and animation

www.it-ebooks.info

531

Organizing
Your
Animation

2. In the Scene panel, click the name of the scene you want to move, and then
drag it above or below the other scenes, as shown in Figure 15-11.
The instant you let up on your mouse, Flash reorders the scenes in the Scene
panel. The new order is the order in which Flash plays your animation when you
choose Control→Test Movie.

Change scene sequence

Figure 15-11

Dragging a scene to a new location in the Scene panel automatically reorganizes the sequence in
which Flash plays your animation—no ActionScript necessary. The line that appears as you drag a
scene lets you know where Flash will put the scene when you let up on your mouse.

Note

To play just the scene currently on the stage, select Control→Test Scene (instead of Control→Test

Movie).
Targeting a scene with ActionScript
In Flash-speak, targeting a scene means writing ActionScript code that performs
some action on a scene. The example in this section shows how to program the buttons to jump to a new scene and begin playing the animation at that point. The tools
you use are similar to those used with labels: event listeners and the gotoAndPlay()
statement. Figure 15-12 gives you a quick overview of how the finished example looks.
Tip

For more information on creating button symbols, see page 271.

3. Open the file 15-7_Scenes_Actions.fla .
In the Scene panel (Window→Other Panels→Scene), notice that the animation
contains three scenes (intro, main, and credits). The stage has three corresponding buttons labeled Play Intro, Play Main, and Play Credits.
Note

You can download the example files for this section from the Missing CD page at www.missingmanuals.
com/cds/flashcs6mm. The file 15-7_Scenes_Actions.fla is the starting point, and 15-8_Scenes_Actions_done.fla
is the completed animation with ActionScript.

4. Test the animation by selecting Control→Test Movie.
In the test window, the word “Intro” recedes; the word “Main” approaches and
recedes; and the word “Credits” approaches. The Play Intro, Play Main, and Play

532

flash CS6: The Missing Manual

www.it-ebooks.info

Credits buttons turn from red to yellow when you move your mouse over them
and turn green when clicked. But none of the buttons affect the animation.

Organizing
Your
Animation

Figure 15-12

You may want to break an animation
into scenes so that you can give
your audience the ability to play the
scenes independently. Here, pressing
the Play Credits button plays the
credits scene, pressing the Play Main
button plays the main scene, and
pressing the Play Intro button plays
the (you guessed it) intro scene. To
put together an interactive animation, you have to first create named
scenes, and then tie those scenes to
buttons using ActionScript code.

5. Click the Edit Scene icon (Figure 15-13), and then choose “intro” if it’s not
­already chosen.
The Edit bar displays “intro” to let you know you’re about to edit the intro scene.
On the stage, you see the three buttons shown in Figure 15-12.

Figure 15-13

You can switch from scene to scene in your animation using the Scene panel,
but you’ll probably find clicking the Edit Scene icon much handier, because
the Edit Scene icon doesn’t disappear while you’re working.

chapter 15: controlling the timeline and animation

www.it-ebooks.info

533

Organizing
Your
Animation

6. Below Flash’s timeline, click the New Layer button. Then click the name and
type “actions,” as shown earlier in Figure 15-7.
A new layer named actions appears in the timeline. You use this layer to hold all
your ActionScript code. As a rule of thumb, it’s best to keep your ActionScript
code as close together as possible. When snippets of code are tucked away in
different layers or movie clips, it makes it hard to troubleshoot.
7. In the actions layer, create a keyframe at Frame 15 by selecting the frame
and then pressing F6.
An empty circle appears in Frame 15, indicating a keyframe.
8. With Frame 15, still selected, type the following ActionScript statement in
the Actions panel:
stop();

This statement stops the animation from playing when it reaches Frame 15. Without a stop() statement here, the Flash Player automatically plays the next scene.
9. Repeat steps 3 through 6 to create action layers, keyframes, and stop()
statements on the last frames of the main scene and the credits scene.
Use the Edit Scene icon to move from one scene to another.
10. Go back to the intro scene, and then click the first frame in the actions layer.
Flash displays the timeline for the intro scene.
11. In the Actions window, type the following code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

534

btnIntro.addEventListener(MouseEvent.CLICK, clickIntroListener);
btnMain.addEventListener(MouseEvent.CLICK, clickMainListener);
btnCredits.addEventListener(MouseEvent.CLICK, clickCreditsListener);
function clickIntroListener(evt:MouseEvent):void
{
gotoAndPlay(1,"intro");
}
function clickMainListener(evt:MouseEvent):void
{
gotoAndPlay(1,"main");
}
function clickCreditsListener(evt:MouseEvent):void
{
gotoAndPlay(1,"credits");
}

flash CS6: The Missing Manual

www.it-ebooks.info

If you’ve been following the ActionScript code sections in this and previous
chapters, the event listeners used in this code should look pretty familiar. If
you need to brush up on event listeners, check out page 448. The only differences between this code and the code used to target labels is in the way
the gotoAndPlay() method is used. In this example, gotoAndPlay() has two
parameters inside the parentheses. The first parameter is a frame number, but
it could just as easily be a label like “start” or “intro.” The second parameter is
the name of a scene. Like labels, the name of the scene has to be inside quotes.
Each of the statements on lines 7, 12, and 17, tell Flash Player to go to a scene
and begin playing the animation at the first frame of that scene.

Organizing
Your
Animation

12. Select lines 1 through 3 in the Actions panel, and then press Ctrl+C (⌘-C).
The three statements that register event listeners for the buttons are copied
and stored on your computer’s Clipboard.
13. Go back to the main scene, and click the first frame in the actions layer.
Flash displays the timeline for the main scene.
14. Click the first line in the Actions panel, and then press Ctrl+V (⌘-V).
You’ve just copied the three statements that register event listeners into the
Actions panel. Each scene is shown on a new timeline beginning with keyframes
at Frame 1 for each layer. The statements that register event listeners in the
intro scene don’t register event listeners for the other scenes. Note that you
don’t need to (and shouldn’t) copy the functions, just the code that uses the
addEventListener() method.
15. Go back to the credits scene, and click the first frame in the actions layer.
Flash displays the timeline for the main scene.
16. Click the first line in the Actions panel, and then press Ctrl+V (⌘-V).
The three statements that register event listeners are copied into the Actions
panel.
17. Test your animation using Ctrl+Enter (⌘-Return).
If your code is working properly, the animation plays the intro and then stops.
When you click any of the Play buttons, Flash plays that segment and then stops.
Note Witha long exercise like this, it’s super-easy to miss a step. To see a working example, check out the
finished file 15-8_Scenes_Actions_done.fla.

chapter 15: controlling the timeline and animation

www.it-ebooks.info

535

Looping a
Series of
Frames

Looping a Series of Frames
Looping—replaying a section of your animation over and over again—is an efficient
way to create long-playing effects for a modest investment of effort and file size.
Say, for example, you want to create a repetitive background effect like sunlight
glinting off water, palm fronds waving in the breeze, or flickering lights. You can
create the frames necessary to show the effect briefly (a couple seconds’ worth
or so), save the frames as a movie clip, and place an instance of that movie clip in
one of the layers of your animation so that the effect spans your entire animation.
Flash automatically replays the movie clip until you tell it otherwise, so you get an
extended effect for a just a few frames’ worth of work—and just a few frames’ worth
of file size, too. What a deal! (For a more in-depth look at movie clip symbols, check
out Chapter 7.)
Note

You’ve seen this kind of looping background effect in action if you’ve ever watched The Flintstones—or
just about any other production cartoon, for that matter. Remember seeing the same two caves shoot past in the
background over and over again as Fred chased Barney around Bedrock? Earlier in this chapter, the car’s spinning
wheels were made up of a two-frame movie clip that looped.

To loop a series of frames using a movie clip symbol:
1. Open the file 15-9_Loop_Frames.fla , which you can download from the
­Missing CD page at www.missingmanuals.com/cds/flashcs6mm .
On the stage, you see a sprinkling of white stars on a blue background. In the
Library, you see four symbols, including the blink_lights movie clip symbol
(Figure 15-14).
Since you’ve never seen this movie clip before, take a look at the preview.
Note

To loop a section of your main timeline, all you have to do is attach the following action to the last
frame of the section you want to loop: gotoAndPlay(1). (If you want your loop to begin at a frame other than
Frame 1, replace the 1 in the preceding ActionScript code with the number of the frame at which you want Flash
to begin looping.)

2. In the Library, select the blink_lights movie clip. Then, in the Library’s preview
window, click the Play icon.
You see the lights on the cactus change from red to yellow, pink, and blue in
rapid succession.
3. Preview the main animation by selecting Control→Test Movie.
In the test window, you see a lone shooting star streak across the background.

536

flash CS6: The Missing Manual

www.it-ebooks.info

4. Close the test window to go back to the workspace.
First stop: Add an instance of the blink_lights movie clip symbol to the animation.

Looping a
Series of
Frames

5. In the xmas_cactus layer, click the first keyframe (Frame 1) to select it. Then
drag the blink_lights movie clip from the Library to the stage.
Choose Control→Test Movie again to see the results. In the test window that
appears, you see the lights on the cactus blink repeatedly as the shooting star
moves across the screen. In the test window, you can stop the main timeline
from looping by choosing Control→Loop. The shooting star on the main timeline
stops looping, but the lights on the cactus continue to blink because they’re in a
separate timeline in the blink_lights movie clip. If you don’t want your embedded
movie clip to loop, you need to tell Flash to stop playing the movie clip after the
first time through. To so instruct it, attach the stop() action to the last frame of
your movie clip symbol (not to the movie clip instance).

Figure 15-14

Looping a series of frames using a
movie clip is super-easy because Flash
does all the work. In fact, Flash always
assumes you want to loop the movie
clips you add to your animations. (If
you don’t want to loop them, then you
can tell Flash to stop playing a movie
clip after the first time through by
attaching the stop() action to the last
frame of your movie clip symbol.)

Movie clip symbol

Looping Part of the Timeline
Sometimes, you’ll want to loop just a portion of the timeline. Usually in this kind of
situation, you provide buttons or some other means for letting the viewer switch
between looping portions of the animation. The file 15_10_Loop_Partial.fla is a simple
(some might say silly) animation with two sections. In this exercise, you’ll create two
looping segments on the timeline using the gotoAndPlay() main timeline method.

chapter 15: controlling the timeline and animation

www.it-ebooks.info

537

Looping a
Series of
Frames

Then you’ll add two button symbols to the stage and use code snippets to program
the buttons to play the different segments.
1. Open the file 15_10_Loop_Partial.fla .
You can download the file from the Missing CD at www.missingmanuals.com/
cds/flashcs6mm.
2. Press Ctrl+Enter (⌘-Return) to review the animation.
You can’t preview all the action for this animation by simply playing the timeline.
That’s because it uses movie clip symbols that contain tweens. For the first
48 frames of the animation, you see squares marching across the stage. From
Frame 49 to Frame 96, you see circles marching.
3. Add a new layer and name it actions looping .
The actions looping layer will hold the ActionScript code that makes these two
segments loop. At the end of each segment, a single gotoAndPlay() method
will send the playhead back to the beginning of that segment.
4. Move the playhead to Frame 48, and then press F6 to create a keyframe.
The gotoAndPlay() methods must be anchored to specific frames in the timeline.
5. Press F9 to open the Actions window and add the following code:
gotoAndPlay("squares");

The gotoAndPlay() method works with either frame numbers or labels. In this
example, you’ll use labels. Don’t forget the quotes.
6. Move the playhead to Frame 96, and then press F6 to create a keyframe.
At this frame, you’ll add code to loop the second segment.
7. Press F9 to open the Actions window, and add the following code:
gotoAndPlay("circles");

8. Select the buttons layer and move the playhead to Frame 1. Then drag
instances of ButtonCircle and ButtonSquare from the Library onto the stage.
These buttons were premade using Flash’s button symbol. All you need to do
is place them on the stage and program them with ActionScript.
9. Select the ButtonSquare instance. Then go to Window→Code Snippets to
open the snippets window (Figure 15-15).
You must select an object before you can use the Timeline Navigation snippet.
If you haven’t selected an object, then Flash prompts you to do so.
10. Open the Timeline Navigation folder and double-click “Click Go to Frame
and Play.”

538

flash CS6: The Missing Manual

www.it-ebooks.info

There are several other navigation snippets worthy of later investigation in this
folder.

Looping a
Series of
Frames

11. When prompted to set the instance name, type btnSquare and then press OK.
If you followed these steps to the letter, you didn’t name the button instance
when you dragged it to the stage. ActionScript needs an instance name, so it
prompts you to provide one.
12. In the function named “fl_ClickToGoToAndPlayFromFrame,” change the
­ otoAndPlay() method to read:
g
gotoAndPlay("squares");

13. Select the ButtonCircle instance on stage. Then go to Window→Code Snippets to open the snippets window.
The next few steps repeat the snippet process for the ButtonCircle symbol.

Open code snippets

Figure 15-15

Make sure you’ve selected
a button symbol before
you use the code snippets. If you’re using the
Essentials workspace, you
can use a button to open
the snippets window.

Selected button symbol

chapter 15: controlling the timeline and animation

www.it-ebooks.info

539

Looping a
Series of
Frames

14. Open the Timeline Navigation folder and double-click “Click Go to Frame
and Play.”
15. When prompted to set the instance name, type btnCircle and then press OK.
You’re adding the same snippet twice to your code, so Flash has to give the
second listener function a distinguishable name. In this case, it simply adds
“_2” to the name.
16. In the function named “fl_ClickToGoToAndPlayFromFrame_2,” change the
gotoAndPlay() method to read:
gotoAndPlay("circles");

17. Press Ctrl+Enter (⌘-Return) to review the animation.
When you play the animation this time, the squares segment loops until you
click the circle button. You can jump back and forth between segments with a
click of the button. If your squares and circles aren’t behaving, then compare
your animation to 15-11_Loop_Partial done.fla.
Design Time

Power to the People
Early on, one of the beefs people had with Flash advertising
and splash screens (intro pages) was the inability to control
the animations. It wasn’t easy to stop, start, bypass, or control
the sound on some of those pages. It gave Flash a bad name.
Things have changed. You can use Flash to create entire webbased environments with ingenious and creative navigation
systems. If you don’t, even though your audience can right-click
(or Control-click) your animation to view a context menu that
lets them interact with your animation, context menus aren’t
particularly useful when it comes to providing consistent
playback control. For one thing, few audience members know
about them. Also, Flash gurus who also happen to be expert
ActionScript coders can modify, rearrange, add to, and delete
menu options.
Don’t be one of them. Consider the Flash experience from your
audience’s point of view. You won’t go wrong by giving power
to the people. Giving your audience as much control as possible
is always a good idea, but it’s crucial if you’re planning to put
your Flash animation on the Web. You can’t possibly know your
web audience’s hardware configuration.
Say, for example, you create a splash page animation with a
stage size of 550 x 400 pixels, and a file size of 10 MB. Someone
accessing your animation on a handheld, over a slow connec-

540

tion, or on a machine that’s already maxed out running 10 other
resource-hogging programs won’t be able to see the animation
you see on your machine.
But even if everyone on the planet had a high-speed connection
and the latest computer hardware, giving your audience control
would still be important. Why? Because no matter how kickbutt your animation is, by the 23rd time through, it’s going to
wear a little thin. If you don’t offer at least one of the options
listed below, you risk turning away repeat visitors:
• The ability to bypass intro splash screens and advertising
and go straight to the site’s home page.
• The ability to stop and restart the animation.
• The ability to turn off or turn down the audio.
• The ability to choose which sections of your animation
to play.
• The ability to choose a low-bandwidth, reduced length,
or small-screen version of your animation.
You can accomplish these feats using a combination of buttons,
components, and some ActionScript code. So be merciful to
your audience and let them choose the Flash experience that
works on their end.

flash CS6: The Missing Manual

www.it-ebooks.info

Reversing a Series of Frames

Reversing
a Series of
Frames

Reversing a series of frames is a useful effect. A basketball bouncing up and down,
a flag waving side to side, a boomerang advancing and receding: These things are
all examples of reversing a single series of frames.
Instead of creating the two complete series of frames by hand—one showing a ball
falling, for example, and another showing the same ball bouncing back up—you
can copy the frame series, paste it, and use Modify→Timeline→Reverse Frames to
reverse the pasted frames.
Note

If you need a file for reverse frame experiments, you can download 15-12_Reverse_Frames.fla from
the Missing CD (www.missingmanuals.com/cds/flashcs6mm).

Reversing Frames in the Timeline
When you use Modify→Timeline→Reverse Frames in conjunction with Flash’s
c­ opy-and-paste function, you can create the reverse of a series of frames quickly,
right in the timeline.
To create a reversed series of frames using Modify→Timeline→Reverse Frames:
1. Click the first frame in the series you want to reverse. Then Shift-click the
last frame in the series you want to reverse.
Flash highlights every frame in the series, from first to last.
2. Select Edit→Timeline→Copy Frames. In the timeline, click the first frame where
you want to insert the reversed series of frames.
Flash highlights the selected frame.
3. Select Edit→Timeline→Paste Frames.
Flash pastes the copied frames onto the timeline, beginning at the selected
frame.
4. If the pasted frame series isn’t highlighted, select it.
5. Choose Modify→Timeline→Reverse Frames (Figure 15-16).
Flash reverses the frames in the timeline.

chapter 15: controlling the timeline and animation

www.it-ebooks.info

541

Reversing
a Series of
Frames

Tip

You can reverse the action in a motion tween by selecting the frames you want to change. Right-click
the selected frames and then choose Reverse Keyframes from the shortcut menu.

Figure 15-16

Use the Modify→
Timeline→Reverse Frames
command to reverse the
order of the frames in
the timeline. Sometimes,
you’ll want to change the
order of existing frames.
Here the count will change
from a count up (One, Two,
Three…) to a countdown
(Ten, Nine, Eight…).

542

flash CS6: The Missing Manual

www.it-ebooks.info

chapter

Components for
Interactivity

16

C

reating common Flash elements like playback controls (Play and Pause buttons), text fields, checkboxes, and buttons can add up to a lot of grunt work.
Since they pretty much look the same in every animation, some kind Flash
developers did the grunt work for you and put ready-made versions of these Flash
bits and pieces—called components—right into the program.
A component is a compiled, prebuilt movie clip that you can drag onto the stage
and customize. Flash comes with dozens of components (Figure 16-1). If you do a lot
of work in Flash, you’ll appreciate the time components can save you. But another
great thing about components is the consistency they give. For example, the user
interface components discussed in this chapter all look like they belong together. If
you don’t like their style, Flash gives you some convenient ways to change their appearance. So, if you’re working in a design shop, you can add time-tested components
to your projects and still give each client a look that matches her image and brand.
There’s a consistency in the way you work with components, which also makes them
easy to use. This chapter starts off showing you how to add, modify, and write code
for the Button and ColorPicker components. By the time you’re done, you’ll not only
know how to work with Button components, but you’ll also be 90 percent of the
way to knowing how to use the other Flash components.
After you learn how to add, modify, and program a couple of components, you’ll
learn about the different types of components available and what they can do for
you. To wrap it all up, you’ll learn how to find and install components that come
from sources other than Adobe.

543

www.it-ebooks.info

Adding
Components

Note

Using components requires a fair amount of ActionScript knowledge. But creating your own components is an even more ActionScript–intensive proposition. If you’d like to explore creating your own components,
check out both the ActionScript 3.0 Language and Components Reference you find in Flash Help (see page 448),
and a good book that covers both ActionScript and object-oriented design. Colin Moock’s Essential ActionScript
3.0, and ActionScript 3.0 Cookbook by Joey Lott et al. (both O’Reilly) are two of the best on the market.

Figure 16-1

Flash CS6 Professional comes with dozens of components. Components for ActionScript 3.0 documents
include user interface controls to create interactive buttons, boxes, and lists (similar to HTML form controls (not
shown); and video controls, as discussed on page 403.

User interface
components

Video
components

Adding Components
Adding a component to your animation is the first step in using that component.
As you’ll see in the following sections, adding an instance of a component to the
stage is similar to adding an instance of a symbol: All you have to do is drag and
drop. But instead of dragging components from the Library panel, you drag them
from the Components panel.
To add a component to your animation:
1. Select Window→Components.
The Components panel appears.

544

flash CS6: The Missing Manual

www.it-ebooks.info

2. In the Components panel, click to select the component you want, and then
drag it to the stage.

Adding
Components

As Figure 16-2 shows, Flash displays an instance of the component on the stage.
It also places a copy of the component in the Library (Window→Library).

Checkbox component
on stage

Components panel

Checkbox component
in the library

Figure 16-2

When you drag a
component from the
Components panel to the
stage, Flash automatically adds the component
and a Component Assets
folder to the Library.

Tip

Flash gives you another way to add a component: In the Components panel, double-click the component.
When you do, Flash immediately places an instance of the component on the center of your stage.

In most cases, adding a component to the stage is just part of the process. After you
add the component, you still need to customize it and—depending on the component
you choose—add ActionScript code to make it work with the other parts of your
animation. That’s exactly what you’ll do in the following steps. In this example, you’ll
learn how to add buttons to an animation and then use those buttons to control both
the main timeline and the timeline of a movie clip that’s added to the main timeline.
This project uses a file, 16-1_Button_Component.fla, that you can download from
the Missing CD page (www.missingmanuals.com/cds/flashcs6mm). If you’d like to
see the completed project, you can download 16-3_Map_Components_done.fla.
The first steps in this example set up the Flash document so it works with Button
components and the ActionScript code that makes the buttons work. That involves
creating new layers for actions, labels, and buttons.

Chapter 16: Components for Interactivity

www.it-ebooks.info

545

Adding
Components

1. In Flash, open 16-1_Button_Component.fla .
There’s a layer named “words” containing five keyframes. In the last four keyframes are the names of famous cities. There’s a second empty layer called
“maps.” In the Library, there’s a folder called “map jpgs” and a movie clip called
“Maps.”
2. Click the New Layer button in the lower-left corner of the timeline to add
three layers. From top to bottom, name them actions, labels, and buttons.
3. In the labels layer, click Frame 1, and then Shift-click Frame 5.
Flash selects all five frames.
4. With the frames selected, press F6.
Empty keyframes are created in each of the frames. You need to have keyframes
to create labels in each of the frames.
5. Add labels to each of the five keyframes by clicking each frame and then
typing its name in the Properties→Label→Name box.
Name Frame 1 world; name Frame 2 paris; name Frame 3 london; name Frame
4 moscow; and name Frame 5 beijing. ActionScript uses these labels to find
specific frames in the timeline. You won’t be using this layer again, so you can
go ahead and lock the contents by clicking the button under the padlock.
6. In the Library, double-click the Maps movie clip.
The movie clip opens in Flash.
7. Drag the playhead to inspect the individual frames in the Maps movie clip,
and then click the Scene 1 button.
As you move the playhead, each frame shows a different map. The labels in
the timeline name the map. When you click the Scene 1 button, the movie clip
closes and brings you back to the main timeline.
8. Click the maps layer in the main timeline, and then drag the Maps movie
clip to the stage.
The Maps movie clip appears in all five frames of the main timeline because
there’s only one keyframe in the maps layer.
You don’t have to sweat positioning the movie clip by hand; you can do the job
with the Properties panel, as shown in Figure 16-3.
9. With the Maps movie clip selected, in the Properties panel, type the instance
name maps .
You have to name the instance of the Maps movie clip before you can control
it with ActionScript.

546

flash CS6: The Missing Manual

www.it-ebooks.info

Once the Maps movie clip is positioned and named, lock the maps layer so you
don’t accidentally move it when you’re repositioning other elements on the stage.

Adding
Components

If you test your animation at this point (Ctrl+Enter or ⌘-Return on a Mac), you’ll
see the maps and city names flash by rapidly. So far, your steps have set up a
sort of slideshow with labels that you can use as bookmarks for your buttons
and ActionScript code. In the next steps, you’ll add buttons and use ActionScript
to control both the main timeline and the Maps movie clip timeline.

Corner of stage
Corner of maps movie clip

X/Y coordinates

Figure 16-3

The Maps movie clip is
exactly the same size as
the Flash document, 550 x
400 pixels. Here, the Maps
movie clip isn’t lined up
with the stage, but setting the X/Y coordinates
in Properties to 0,0 positions it perfectly to cover
the entire stage. © 2008
Google Maps

10. In the timeline, click the buttons layer.
You want to place all the new buttons in the buttons layer of the timeline.
11. Select Window→Components to open the Components panel, and then drag
the Button component to the stage.
The button appears on the stage, and two items appear in the Library: a button
symbol and the Component Assets folder.
Note

When you add your first component to a Flash project, it increases the file size of the published .swf
file by about 20 to 50 kilobytes. This isn’t a whopping leap in file size by today’s standards, but it’s good to know
that if you add more components, they usually won’t increase your file size by the same amount. They’ll add only
a few more kilobytes for each component. That’s because most components share a certain amount of underlying
code. Once the basic code is added to the .swf file, it’s available to any components that need it.

12. With the button selected, in the Properties panel, type the instance name
btnParis .
When you select the button, the Instance Name box is at the top of the Properties panel. As with other symbols, you have to name the Button components
before ActionScript can work with them.

Chapter 16: Components for Interactivity

www.it-ebooks.info

547

Adding
Components

13. Select the button on the stage, and then in the Properties panel, if necessary, expand the Component Parameters subpanel.
The Component Parameters subpanel shows the two parts of each parameter:
its name and its value, as shown in Figure 16-4. You customize components for
your project by changing the parameter values. Some parameters, like those with
true/false values, have checkboxes. Other parameters, like the label parameter
for buttons, have text boxes where you can type a new label.

Figure 16-4

Use the Component Parameters subpanel to make changes to the component
p­ arameters. The names of parameters appear on the left. Use the text boxes, menus,
and checkboxes on the right to change the parameters’ values.

Note

In earlier versions of Flash, you used the Components Inspector (Shift-F7) to set component parameters.
In Flash Professional 6, those responsibilities appear in the Component Parameters subpanel in the Properties
panel. Not a bad move, since it puts all your property and parameter settings in the same neighborhood, and
you have one less window cluttering the screen.

14. Click the text box for the label parameter, and then type Paris .
What you type in this text box changes the word that appears on the button.
You don’t need to change any of the other parameters right now, but here’s a
rundown on their uses:
• emphasized. If this value is checked, or in programmer-speak true, it
changes the button’s appearance. Use it when you want to make one button stand out from a group of buttons.
• enabled. If this value is deselected, the button won’t work. It’s helpful in
situations where you don’t want your audience to use a button but you
still want it to be visible.
• labelPlacement. As it sounds, this parameter gives you several choices for
the way a label is positioned: left, right, top, or bottom.
• selected. Like “emphasized,” this parameter changes the button’s appearance to show that it’s selected.

548

flash CS6: The Missing Manual

www.it-ebooks.info

• toggle. If this value is true, then the button works like a toggle, and its
appearance changes to reflect that.

Adding
Components

• visible. You can hide a button by deselecting the “visible” parameter.
Note

Components are sometimes called black boxes because you can’t inspect their inner workings. The
only things you can look at or change are the characteristics that the developer exposes (lets you access) through
the Properties panel, the Component Parameters, or ActionScript classes.

15. Drag three more buttons from the Library to the stage. Give them the instance names “btnLondon,” “btnMoscow,” and “btnBeijing,” and then label them
“London,” “Moscow,” and “Beijing.”
As shown in Figure 16-5, you don’t have worry too much about how the buttons are arranged. In the next steps, you’ll use the Align tool to position them
precisely.

Figure 16-5

Arrange the buttons so that they’re roughly,
end to end, in a left-to-right order: Paris,
London, Moscow, and Beijing. Then use Flash’s
Modify→Align tools to tidy them up. © 2008
Google Maps

16. Select all the buttons, and then select Modify→Align→Distribute Widths.
The Distribute Widths command evenly lines the buttons up end to end.

Chapter 16: Components for Interactivity

www.it-ebooks.info

549

Adding
Components

17. Select Modify→Align→To Stage, and then Select Modify→Align→Bottom.
A checkmark appears next to To Stage on the menu, meaning that subsequent
align commands will be relative to the stage; the Bottom command pushes all
the buttons to the bottom of the stage.
18. Press Ctrl+G (⌘-G) to group the buttons, and then select Modify→Align→
Horizontal Center.
This command centers the buttons at the bottom of the stage. You won’t be
doing anything immediately with single buttons, but you may as well ungroup
them now with a Ctrl+Shift+G (⌘-Shift-G).
At this point, you’ve got everything positioned on the stage and you’ve labeled all the
necessary frames. The only thing that’s missing is the ActionScript code that glues
it all together. If you test the animation at this point, it’s pretty clear what that code
needs to do. The first thing it needs to do is stop the movie clips from playing when
the animation starts. The second thing the code needs to do is program the buttons
to jump to specific frames in the main timeline and the Maps movie clip timeline.

Making Button Components Work with ActionScript
If you’ve followed the ActionScript code exercises earlier in this book, chances are
you’ve been introduced to ActionScript 3.0’s event listeners. Unlike previous versions,
ActionScript 3.0 uses a single method for recognizing and reacting to events. The
following example uses event listeners to react to clicks on the Button components.
If you need to brush up on using event listeners, see page 448.
1. In the actions layer, click Frame 1, and then press F9 (Option-F9).
The Actions panel opens.
2. Type the following code to stop the main timeline and the Maps movie clip.
stop();
maps.stop();

The first line stops the main timeline. The second line stops the Maps movie
clip from playing.
3. Type the following code to register an event listener for the Button component with the variable name btnParis , as shown in Figure 16-6.
btnParis.addEventListener(MouseEvent.CLICK, clickParisListener);

Event listeners come in two parts. This first part registers an event listener. In
other words, it tells ActionScript to wait for a mouse click on btnParis. When
there’s a click, the clickParisListener() function runs.
4. Type the code for the clickParisListener() function:
function clickParisListener(evt:MouseEvent):void
{
gotoAndStop(“paris");

550

flash CS6: The Missing Manual

www.it-ebooks.info

Adding
Components

maps.gotoAndStop(“paris");
}

The clickParisListener() function has two lines of code that control movie clip
timelines. As you might guess, the gotoAndStop() method moves to a specific
frame and then prevents the playhead from moving beyond that frame. The
first line inside the curly brackets moves the playhead on the main timeline to
the frame labeled “paris,” which displays the word “Paris” on the stage. The
second line inside the curly brackets moves the playhead on the Maps movie
clip to a frame also labeled “paris.” This displays the map of Paris background,
as shown in Figure 16-7.

Figure 16-6

As you type code, the
Actions panel can provide
help.
Top: Use the menu in the
upper-right corner of the
Actions panel to turn on
Show Code Hint.
Bottom: Then, for
example, after you enter
MouseEvent and a period
(.), a drop-down menu
displays the properties and methods for
­MouseEvent. You can keep
on typing, or you can
make a selection from
the list.

Chapter 16: Components for Interactivity

www.it-ebooks.info

551

Adding
Components

5. Press Ctrl+Enter (⌘-Return) to test the animation.
When the animation runs, it stops on the first frame showing the world map.
Click the Paris button, and the word “Paris” appears and the background map
changes to a city map of Paris.

Figure 16-7

ActionScript code controls the main
timeline, which displays the word
“Paris,” and the Maps movie clip, which
displays the Paris city map background.
© 2008 Google Maps

6. Add event listeners for the remaining three buttons with the following code.
When you’re done, the code in Frame 1 in the actions layer should look like this:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

552

stop();
maps.stop();
btnParis.addEventListener(MouseEvent.CLICK,clickParisListener);
btnLondon.addEventListener(MouseEvent.CLICK,clickLondonListener);
btnMoscow.addEventListener(MouseEvent.CLICK,clickMoscowListener);
btnBeijing.addEventListener(MouseEvent.CLICK,clickBeijingListener);
function clickParisListener(evt:MouseEvent):void
{
gotoAndStop("paris");
maps.gotoAndStop("paris");
}
function clickLondonListener(evt:MouseEvent):void
{
gotoAndStop("london");
maps.gotoAndStop("london");

flash CS6: The Missing Manual

www.it-ebooks.info

18
19
20
21
22
23
24
25
26
27
28

Adding
Components

}
function clickMoscowListener(evt:MouseEvent):void
{
gotoAndStop("moscow");
maps.gotoAndStop("moscow");
}
function clickBeijingListener(evt:MouseEvent):void
{
gotoAndStop("beijing");
maps.gotoAndStop("beijing");
}

7. Test the animation again.
When you test the animation, button clicks display the city name and a matching background map.
In this example, it would have been easier to use a single timeline for both the words
and the background maps, but the point is to show how buttons or events can control multiple timelines—in this case, the main timeline with the words and the Maps
movie clip timeline with the maps.

Modifying Components in the Properties Panel
There are several ways you can modify components after you’ve added them to your
project. The most straightforward way is to change the properties of the component
in the Component Parameters subpanel. Suppose you’d like to make the buttons in
the previous example wider, so they run all the way across the bottom of the stage.
Select btnParis, and in the Properties panel’s “Position and Size” section, click the
link button “Lock width and height values together.” When the link is broken, you
can change width and height independently. Change the width setting to 137.5 (a
fourth of the width of the stage). The width of btnParis changes, but all the other
properties (position, height, and color) remain the same, as shown in Figure 16-8.

Figure 16-8

Changing the properties of
an instance of a component
changes that single instance.
Notice that the other buttons, btnLondon, btnMoscow,
and btnBeijing, remain the
same width. © 2008 Google
Maps

Chapter 16: Components for Interactivity

www.it-ebooks.info

553

Adding
Components

For this example, go ahead and make all the instances of the Button component the
same width: 137.5. Then use the Align commands to align them along the bottom of
the stage, so it looks like Figure 16-9.

Figure 16-9

Using the Properties panel,
you can change the properties of the instances on
the stage. Here the width
of the Button components
has been changed. © 2008
Google Maps

Adding a ColorPicker Component
One of the great things about Flash components is their consistency. Once you know
how to add and customize one component, like the Button component, it’s easy to
apply that knowledge to other components. For example, the ColorPicker tool appears in an animation as a little color swatch. When your audience clicks the swatch,
it displays a palette of colors to choose from, as shown in Figure 16-10. Using this
handy tool, you can give your audience the power to change the colors of elements
in your animation. Even though components like buttons and color pickers have very
different purposes, the steps for adding them to the stage, setting their parameters,
and creating event listeners to react to them are very similar.

Figure 16-10

The ColorPicker is one of those components that’s fun for your audience. It gives them a
way to customize elements in your animation to suit their own tastes. © 2008 Google Maps

554

flash CS6: The Missing Manual

www.it-ebooks.info

In this example, you’ll add a ColorPicker component to the animation so your audience can choose a background color for the main timeline.

Adding
Components

Note This example continues exercises that started at the beginning of this chapter. If you didn’t work
on those examples but would like to jump in at this point, download the file 16-2_Color_Picker.fla from the
Missing CD page at www.missingmanuals.com/cds/flashcs6mm. To see the final version, get 16-3_Map_­
Components_done.fla.

1. In the timeline, unlock the maps layer.
The maps layer is a good place to put the ColorPicker because there are no
keyframes. Placing the ColorPicker in the maps layer makes it available in every
frame in the animation.
2. Select Window→Components, and then drag a ColorPicker component on
the stage.
You can place the ColorPicker anyplace you like, but the upper-right corner
is a good spot if you can’t decide. In addition to the instance on the stage, a
ColorPicker gets added to the Library. If you delve into the Library folder named
Component Assets, you find that folders and items specific to the ColorPicker
have been added as well.
3. With the ColorPicker selected, type cpBackground in the Properties panel
for the instance name.
It’s good to identify object types as you create instance names. In this case cp
is used to identify the object as a ColorPicker. Background indicates what the
ColorPicker is changing.
4. Press F9 (Option-F9) to open the Actions window, and then type the following code to import the ColorPickerEvent.
import fl.events.ColorPickerEvent;

When you create documents with Flash, you automatically have access to the
most commonly used ActionScript classes, like the MovieClip class, the Shape
class, and so on. The ColorPickerEvent isn’t included, so you need to import
the packages that define those classes. If you try to run your program without
importing the package, you see an error that says “Error 1046: Type was not
found…”.
5. Continue your code by registering an event listener for the ColorPicker and
a function that runs when the ColorPicker changes:
cpBackground.addEventListener(ColorPickerEvent.CHANGE,changeColorPicker);
function changeColorPicker(evt:ColorPickerEvent):void
{
opaqueBackground = evt.color;
}
Chapter 16: Components for Interactivity

www.it-ebooks.info

555

Adding
Components

This code follows the standard event listener format. One statement registers
the event listener for an object, and the function explains what to do when the
event happens. If you’re already familiar with event listeners, the juicy bit of this
example is the line that says opaqueBackground = evt.color;. This line changes
the background color of the main timeline. The opaqueBackground property
is inherited by all DisplayObjects. The ColorPicker event has a property, appropriately called color, that holds the value of the color that was selected. (If you
need to brush up on events and event handling, see page 448.)
6. With the ColorPicker selected, in the Component Parameters, change the
selectedColor and the showTextField parameters.
At first the selectedColor parameter is set to black. If you want folks to notice
that they can change the color, it’s best to set this to something more colorful.
Note that this command changes only the color displayed in the ColorPicker. It
doesn’t actually change the background color at this point; that’s done by the
code within the event listener.
The showTextField parameter gives the audience a text box where they can type
a color’s hexadecimal value. You can assume that your audience would rather
click a color swatch, so set this parameter to false.
7. Select the Maps movie clip on the stage, and then select Properties→Color
Effect→Alpha and type 50.
The Maps movie clip becomes semi-transparent, letting the background color
show through, as explained in Figure 16-11.

Figure 16-11

The background color won’t show through if there’s a completely opaque movie clip
covering the stage. Setting the movie clip’s alpha value to 50% lets the background color
show through, giving the image on top a pleasing color effect.

556

flash CS6: The Missing Manual

www.it-ebooks.info

8. Press Ctrl+Enter (⌘-Return) to test the animation.
When the animation first runs, there’s no background color, since the code that
sets the background color is inside the ColorPicker event. The color changes
when you select a new color in the ColorPicker. If you use the buttons to jump
from city to city, the background color remains constant until a new color is
selected.

Adding
Components

As this example shows, the steps for putting the ColorPicker component into action are similar to those for using the Button component. Adding an instance of the
component to the stage, creating an event listener, and changing the component
parameters are much the same. The only differences are related to the components’
purpose and behavior.
Modifying the ColorPicker with ActionScript
Components have properties just like any other objects. When you change the parameters of a component, you’re changing properties that the author of the component
has made available to designers. (Other component properties are hidden, where
you can’t mess with them.) You can change those properties using ActionScript, too.
Specifically, you can change a component’s properties while an animation is running,
or as coders like to say, “You can change the properties at runtime.”

Here’s an example that changes the ColorPicker using ActionScript code. The
ColorPicker’s palette shows bunches of colors, many of them very similar. There
may be times when you don’t want to offer so many color choices. For example, if
you’re letting customers choose the color for their new Stutz Bearcat automobile,
you may offer only a handful of color options. Using ActionScript, you can specify
each color shown on the palette, as long as you know the hexadecimal code that
identifies the color.
Add this to the code for your ColorPicker project (step 5 on page 555). You can
place it following the line that begins with the word “import”:
cpBackground.colors =
[0xFF0000,0xFF7700,0xFFFF00,0x00FF00,0x000044,0x0000FF,0x0066FF];

The colors property of the ColorPicker is an array. The values held inside an array
are enclosed in square brackets and separated by commas. The odd-looking numbers, like 0xFF7700, are hexadecimal values. Now, when you test the animation, the
ColorPicker shows a palette of only seven colors, as shown in Figure 16-10.
Tip Use Flash’s color panel (Window→Color) to look up the hexadecimal numbers for the colors you need.
Select a color, and the hexadecimal value appears in the text box, as shown in Figure 16-12. Replace the # with
ActionScript’s identifier for hex values, 0x.

Chapter 16: Components for Interactivity

www.it-ebooks.info

557

The Built-In
Components

You can use similar code to change the properties of the ColorPicker (or other components). In step 6 on page 556, you used the Component Parameters subpanel
to change the ColorPicker’s showTextField property. To change that setting using
ActionScript, use a statement like this:
cpBackground.showTextField = false;

Figure 16-12

Drag the crosshairs to choose a hue, and then adjust the brightness of the color using the vertical
slider on the right. When you’re happy with the color previewed at the bottom, select and copy the
hexadecimal number that appears in the box. To use the number in ActionScript, replace the # with
0x (ActionScript’s identifier for hex values).

The Built-In Components
Choose Window→Components, and you see a panel full of built-in components that
you can drag and drop into your Flash document. Well, it’s almost that easy. You see
different components depending on whether your document is based in A
­ ctionScript
2.0 or ActionScript 3.0. Like any ActionScript code, you can’t mix version 2.0 components and version 3.0 components in the same document. This forward-looking
chapter focuses on the ActionScript 3.0 components. The ActionScript 3.0 built-in
components fall into three main categories:
• Flex components. Flex is a programming tool that, like Flash Professional,
creates applications using ActionScript and SWF files. Also, like Flash, Flex
programs can make use of prebuilt components, which are saved in SWC files.
• User interface components. Similar to HTML components, Flash user interface
components include buttons, checkboxes, lists, text fields, and windows—­
everything you need to create a Flash form and collect data from your audience.
• Video components. These components give you tools to work with video clips.
For example, they work with streaming video (where a movie begins to play
before the entire file is downloaded). These components are an indication of
Flash’s growing role as a tool to provide web-based video.

558

flash CS6: The Missing Manual

www.it-ebooks.info

Note

This chapter focuses on the user interface components, because they’re by far the most popular Flash
components. For an introduction to the video components, see page 403.

The Built-In
Components

User Interface Components
Similar to HTML form components, Flash’s popular user interface components
(­Figure 16-1) let you interact with your audience, display information, and gather information. Examples of user interface components include buttons, checkboxes, text
fields, and drop-down lists. In this section, you’ll find details about ­ActionScript 3.0
user interface components. For each component, there’s a Component Parameters
subpanel that lets you tweak the component. If you use components a lot, some
of the parameters will become very familiar, because they work with several different components. Other parameters are specific to the purpose of a particular
component, and you may need to refer to this section for the full explanation. See
the box on page 560.
Note

There’s a companion file for this section, 16-4_Component_Index.zip. You can see it in Figure 16-13,
and download it from the Missing CD page (www.missingmanuals.com/cds/flashcs6mm). The ZIP-compressed file
holds a Flash document and some other assets used to demonstrate the various user interface components. Test
the document with Ctrl+Enter (⌘-Return), and you’ll see buttons for each component, as shown in Figure 16-13.
Click a button to see a component in action. Want to see the ActionScript code behind the component? Click the
frame code button, and you’ll find the code with lots of explanatory comments. Use the button at the bottom of
the window to return to the main index.

frame code button

Figure 16-13

There’s a lot to learn about
c­ omponents—more than can fit in
the pages of this chapter. Working
examples can be a big help, so there’s
a companion file for this section, download it from the Missing CD page (www.
missingmanuals.com/cds/flashcs6mm).
For each component example, you can
see the underlying ActionScript code.
Just click the “frame code” button.

Chapter 16: Components for Interactivity

www.it-ebooks.info

559

The Built-In
Components

Button
The Button component hardly needs introduction. It’s a multipurpose component
you can use to receive input from your animation’s audience. The process of using
a Button component is covered in detail beginning on page 545, and you see an
example of the clickable Button component in Figure 16-14.

Figure 16-14

Similar to HTML buttons, Button components are straightforward, no-nonsense, clickable
buttons you hook up to ActionScript. For example, you can customize a Button component’s
label to read Add Text or Clear, as shown here, and then write the code necessary to carry out
those tasks.

Up to Speed

Learning the Parameters
Back in the days when you used the Component Inspector
to set parameters, you had type in the proper words for a
parameter. Words like true, false, left, right, top, and bottom.
The problem was, it wasn’t always obvious what word the
component expected. That meant you had to look up the
component in the Flash docs or your handy Missing Manual. In
Flash CS6 ­P rofessional, component parameters are friendlier.

Now, with the Component Parameters subpanel, you use
checkboxes for true and false values. If you have a positioning
choice, such as left, right, top, or bottom, they’re presented
in a handy drop-down menu. If a color is expected, you can
choose it from a panel of color swatches. Hooray for progress
and helpful widgets!

You may be wondering when it’s best to use a Button component and when it’s best
to use Flash’s button symbol from the Common Libraries. If you’re into customizing a
button with, say, animations and other snazzy effects, then go for the button symbol
from the Common Libraries or design your own button symbol. The symbol gives
you a movie clip timeline where you can do your magic—for all the details, see page
546. The Button component is a predesigned button that you don’t have to fiddle
with too much to make it useful. The button is a good alternative if you’re using
other components, because they’ll all have a similar look. As you see in the Button
Parameters table (Table 16-1), one handy built-in feature of the Button component
is the toggle parameter. When you set this parameter to “true,” the button displays
on/off characteristics. Clicking the button turns it on, and the button stays down.
Click it again, and it pops back up into position.

560

flash CS6: The Missing Manual

www.it-ebooks.info

The Built-In
Components

Table 16-1. Parameters for the Button component.
Button Parameters

Expected Value

Purpose

emphasized

selected or deselected

Changes appearance of button to
stand out from other buttons.

enabled

selected or deselected

If deselected, the button doesn’t
accept audience input.

label

a string of characters

Explanatory text label for button.

labelPlacement

left, right, top, bottom

Positions label relative to button.

selected

selected or deselected

Changes appearance of a toggle
button to show it’s selected.

toggle

selected or deselected

Gives the button on/off functions.

visible

selected or deselected

If deselected, the component is
hidden.

CheckBox
The checkbox is another familiar friend to anyone who has completed an online
survey or filled out a questionnaire. The CheckBox component lets you offer your
audience an easy way to choose multiple options, as shown in Figure 16-15. With
checkboxes, folks can make several selections in a group of options. If you want to
limit your audience to a single choice, use the RadioButton component. Checkboxes
are common in computer programs, on the Web, and in print, so your audience will
easily understand how to use them. You can customize the CheckBox component at
design time using the following parameters (Table 16-2). For example, if you check
the selected parameter in the Component Parameters subpanel, a checkmark appears in the checkbox when your animation first runs.

Figure 16-15

Unlike RadioButton components (page 571), CheckBox components let your audience make
multiple selections.

Chapter 16: Components for Interactivity

www.it-ebooks.info

561

The Built-In
Components

Note

For ActionScript coders, there are two distinct categories for time: design time and runtime. Design
time is where you are now, when you have Flash open on your computer and you can control events, drawings,
and all details in Flash. Runtime is when your Flash project is out there in the world, where your audience is
viewing it and controlling it.

Using ActionScript, you can change components’ properties while the animation is
running. For example, examine the following code, which could appear at any time
within your animation:
cbApples.enabled = false;
cbOranges.visible = false;
cbBananas.selected = true;

This code turns off the CheckBox cbApples, making it appear grayed out and unclickable. The CheckBox cbOranges is hidden entirely, and cbBananas is selected,
so it sports a handsome checkmark.
Table 16-2. Parameters for the CheckBox component.
CheckBox
Parameters

Expected Value

Purpose

enabled

selected or deselected

If deselected, CheckBox doesn’t
accept audience input.

label

a string of characters

Explanatory text for CheckBox.

labelPlacement

left, right, top, bottom

Positions label relative to
component.

selected

selected or deselected

Makes a checkmark appear in the
checkbox.

visible

selected or deselected

If deselected, the component is
hidden.

ColorPicker
The ColorPicker component (shown in Figure 16-16) displays a palette of colors, giving
your audience an opportunity to select a single color. You can give your audience
a way to customize, text, background colors, and just about any other elements in
the display. For example, suppose you’re selling laptop computer cases. You can
limit the colors shown in the ColorPicker to just those you have available. (You can
learn how to use the ColorPicker tool in detail on page 557.) Select ColorPicker, and
in the Component Parameters subpanel, you see the parameters shown in the following table (Table 16-3).

562

flash CS6: The Missing Manual

www.it-ebooks.info

The Built-In
Components

Table 16-3. Parameters for the ColorPicker component.
ColorPicker
Parameters

Expected Value

Purpose

enabled

selected or
deselected

If deselected, ColorPicker doesn’t respond
when clicked.

selectedColor

hexadecimal color
value

The currently selected color that’s displayed
when the palette is closed. ActionScript
code can work with the hexadecimal value
of this color.

showTextField

selected or
deselected

If selected, a text field displays the
hexadecimal value of the selectedColor
parameter, and your visitors can type a new
hexadecimal value.

visible

selected or
deselected

If deselected, the component is hidden.

Figure 16-16

The ColorPicker component makes it easy for your audience to select a
single color from an entire palette of options. Using ActionScript code,
you can limit the colors shown in the palette.

ComboBox
As Figure 16-17 shows, the ComboBox component lets you display a drop-down
list of options. Use this component when you want to offer people an easy way to
choose a single option (like which animation they want to play, or which web page
they want to hop to) from a predefined list. You can customize the ComboBox
component at design time using the Component Parameters subpanel to change
the parameter values (Table 16-4). Flash automatically adds a scroll bar to your
ComboBox component if you create a long list (over five options). Short list or long,
the ComboBox component lets your audience choose only one option. If you want to

Chapter 16: Components for Interactivity

www.it-ebooks.info

563

The Built-In
Components

offer people a list from which they can Shift-click or Ctrl-click multiple options, use
the List component (page 567). The ComboBox uses a DataProvider as the source
for its list. You can point to an external file or create the DataProvider in ActionScript
within your document. For more details, see the box on page 566.

Figure 16-17

Use the ComboBox component to give your audience a single choice from a list of items.

Table 16-4. Parameters for the ComboBox component.
ComboBox
Parameters

564

Expected Value

Purpose

dataProvider

a DataProvider object
(for more details, see
the box on page 566)

Points to a data source to provide the items
in the list. The DataProvider object can come
from an external source, or you can create one
using ActionScript code. You can also manually add values by clicking the Value box in the
Component Inspector.

editable

selected or deselected

If deselected, your audience can’t make
changes to the ComboBox.

enabled

selected or deselected

If deselected, your audience can’t use the
ComboBox.

prompt

a string of characters

The words that appear before your visitor uses
the ComboBox.

restrict

a string of characters

Limits the characters that a visitor can enter in
the text field.

rowCount

a number value

Sets the number of items displayed in the list.
If the list has more items, a scroll bar appears.
If the list has fewer items, the list is sized to fit.

visible

selected or deselected

If deselected, the component is hidden.

flash CS6: The Missing Manual

www.it-ebooks.info

DataGrid
The DataGrid component lets you display a table containing multiple rows and columns of data, similar to a spreadsheet, as shown in Figure 16-18. DataGrid parameters
are listed in Table 16-5.

The Built-In
Components

Figure 16-18

The DataGrid component displays information in a spreadsheet-style format with rows
and columns.

Table 16-5. Parameters for the DataGrid component.
DataGrid
Parameters

Expected Value

Purpose

allowMultipleSelection

selected or deselected

If selected, allows the selection of
more than one list item in the data
grid.

editable

selected or deselected

If deselected, your audience can’t
change the DataGrid.

headerHeight

a number value

Sets header height in pixels.

horizontalLineScrollSize

a number value

The amount of content to be
scrolled, horizontally, when your
audience clicks a scroll arrow.

horizontalPageScrollSize

a number value

The number of pixels the scroll
marker moves when your audience clicks the scroll bar track.
Similar to a Page Up or Page Down
command.

horizontalScrollPolicy

ON, OFF, AUTO

Controls whether a scroll bar
appears in the component.

resizableColumns

selected or deselected

If deselected, your audience can’t
change column widths.

rowHeight

a number value

Sets the height of the rows in
pixels.

Chapter 16: Components for Interactivity

www.it-ebooks.info

565

The Built-In
Components

DataGrid
Parameters

Expected Value

Purpose

showHeaders

selected or deselected

If deselected, the DataGrid doesn’t
display headers.

sortableColumns

selected or deselected

If deselected, your audience can’t
sort the data in the columns.

verticalLineScrollSize

a number value

The amount of content to be
scrolled, vertically, when a scroll
arrow is clicked.

verticalPageScrollSize

a number value

The number of pixels the scroll
marker moves when your audience clicks the scroll bar track.
Similar to a page up or page down
command.

verticalScrollPolicy

ON, OFF, AUTO

Controls whether a scroll bar
appears in the component.

Frequently Asked Question

Providing Data
What’s a DataProvider?
Several Flash components—notably List, DataGrid, TileList,
and ComboBox—use DataProvider objects to fill in the blanks.
The DataProvider class is like any other ActionScript class; it
has properties and methods, all of which relate to storing
and retrieving data. You can use methods like AddItem and
AddItemAt to fill a DataProvider with a list of items. When
it’s time to use a component, you can assign your prefilled
DataProvider to the dataProvider parameter (or property) of a
component. For example, here’s the code that adds fine wines
to a DataProvider named wineList:
wineList.addItem({label:"Chateau Thames
Embankment", data:24});

In this example, each item consists of two parts: label and
data. Label stores a text string representing the name of the
wine, while data stores a number value representing the wine’s
quality rating. (Yes, that’s 24 out of a possible 100.) If you’re
familiar with XML, the paired format consisting of a name and
a value may look familiar.
In this format, you can add the items to a List component.
The List component expects to receive a name and a data
element for each item. To make these fine wines appear in a
list component, you assign the wineList DataProvider to the
lstFineWine List component:
lstFineWine.dataProvider = wineList;

The DataProvider is one more way that Flash Components
achieve consistency even though their purposes and functions
are different.

wineList.addItem({label:"Domaine Dogtown
Reserve", data:18});

wineList.addItem({label:"Cuvee Cuyahoga",
data:21});

566

flash CS6: The Missing Manual

www.it-ebooks.info

Typically, you use this component when you want to transfer data from your server
(for example, product names, descriptions, and prices) and display it in Flash in
table form. But you can also use it to display the data you collect (or create) in your
Flash animation. You can populate the cells in the data grid from an external source,
or you can create a DataProvider and store values in it, using ActionScript (see the
box on page 566).

The Built-In
Components

Label
A Label component lets you add noneditable, nonclickable text to your Flash creation.
To use the Label component, add the text you want displayed to the text parameter
in the Component Inspector. If you’re using ActionScript code, then assign a string
to the text property of the label (Table 16-6). As an alternative, you can display
HTML-encoded text using the htmlText parameter or property.
Tip For most Flash designers, using Flash’s Text tool is easier and keeps .swf files smaller. Even if you want
to change text during runtime with ActionScript, you can do that with a text field.

Table 16-6. Parameters for the Label component.
Parameters

Expected Value

Purpose

autoSize

selected or deselected

If selected, the label shows all of its text,
regardless of the W and H properties.

condenseWhite

selected or deselected

When selected, this removes extra white
space from HTML text.

enabled

selected or deselected

If deselected, your audience can’t access
the component.

htmlText

HTML-encoded text

Displays HTML encoded text, showing formatting, hyperlinks, and other features.

selectable

selected or deselected

If checked, your audience can select the
text in a label.

text

a string of characters

The text shown in the display.

visible

selected or deselected

If deselected, the component is hidden.

wordWrap

selected or deselected

Controls line breaks in large chunks of text.

List
You use the List component (Figure 16-19) to create a clickable, scrollable list from
which your audience can Shift-click to select multiple options. The List uses a
DataProvider as the source. You can point to an external file, or you can create the
DataProvider in ActionScript within your document. For more details, see the box on
page 566. The items that make up each row in a list consist of a label and data. The
label appears in the list display; the data is the part that’s invisible to your audience
but accessible to ActionScript. So, for example, you can create a list where someone

Chapter 16: Components for Interactivity

www.it-ebooks.info

567

The Built-In
Components

can choose an employee by name; that selection can then pass the employee’s ID
number to another part of your program.

Figure 16-19

The List component is similar to multiple checkboxes (see page 561) in that both let your
audience select multiple options (once you customize the List component by setting
allowMultipleSelection to true in the Component Parameters, Table 16-7). But because List
components are scrollable, they tend to take up less screen real estate than checkboxes,
and so they’re helpful when your stage is already packed with graphics and other
components.

Table 16-7. Parameters for the List component.

568

List Parameters

Expected Value

Purpose

allowMultipleSelection

selected or deselected

If deselected, your audience can
select only one item from the list at
a time.

dataProvider

a DataProvider object
(for more details see
the box on page 566)

Points to a data source to provide
the items in the list. The DataProvider
object can be an external source,
or you can create one using
ActionScript.

enabled

selected or deselected

If deselected, your audience can’t use
the List component.

horizontalLineScrollSize

a number value

The amount of content to be scrolled,
horizontally, when your audience
clicks a scroll arrow.

horizontalPageScrollSize

a number value

The number of pixels the scroll
marker moves when your audience
clicks the scroll bar track. Similar to a
Page Up or Page Down command.

horizontalScrollPolicy

ON, OFF, AUTO

Controls whether a scroll bar appears
in the component.

verticalLineScrollSize

a number value

The amount of content to be scrolled,
vertically, when a scroll arrow is
clicked.

flash CS6: The Missing Manual

www.it-ebooks.info

List Parameters

Expected Value

Purpose

verticalPageScrollSize

a number value

The number of pixels the scroll
marker moves when your audience
clicks the scroll bar track. Similar to a
Page Up or Page Down command.

verticalScrollPolicy

ON, OFF, AUTO

Controls whether a scroll bar appears
in the component.

visible

selected or deselected

If deselected, the component is
hidden.

The Built-In
Components

NumericStepper
You use the NumericStepper component to create a clickable list of numbers, as
shown in Figure 16-20. Simpler for people to use than a type-in-your-own-number
text field, this component makes it easy for you to limit your audience’s choices to
a predefined set of valid numbers. See Table 16-8 for the parameters used with the
NumericStepper component.

Figure 16-20

When you use the NumericStepper component, your audience gets an easy way to
specify a number, and you don’t have to use ActionScript to examine the number and see
whether it’s valid (as you would have to if you let them type any number they want).

Table 16-8. Parameters for the NumericStepper component.
Parameters

Expected Value

Purpose

enabled

selected or deselected

If deselected, your audience can’t use the
component.

maximum

a number value

Sets the highest number the component
can display.

minimum

a number value

Sets the lowest number the component
can display.

Chapter 16: Components for Interactivity

www.it-ebooks.info

569

The Built-In
Components

Parameters

Expected Value

Purpose

stepSize

a number value

Sets the amount the value changes with
each click.

value

a number value

The current value selected by the
NumericStepper.

visible

selected or deselected

If deselected, the component is hidden.

ProgressBar
The ProgressBar component, shown in Figure 16-21, is a visual indicator that a file—like
a Flash .swf file—is loading. There are two ways a ProgressBar can work. If you’re
loading a file and have no way of knowing how big the file is, then you can’t very
well say the file is, for example, 50 percent loaded. In that case, the progress bar
is considered indeterminate. In other words, it provides some motion, kind of like a
barber’s pole, to show that something’s going on. On the other hand, if you know
how big the file is, you can give your audience more detail on the process. You’ve
probably seen the ProgressBar in action when Flash animations are loading from
web pages. To have the ProgressBar report on the progress of loading a file, type
the name and path of the file in the source parameter (Table 16-9). In ActionScript,
you assign the name to the source property of the ProgressBar. You can also use
ActionScript to access the percentComplete property, giving you a way to create
a companion line of text.

Figure 16-21

The ProgressBar component lets you give your audience a visual indication of how long
they have left to wait for an animation (or a web page) to load.

570

flash CS6: The Missing Manual

www.it-ebooks.info

The Built-In
Components

Table 16-9. Parameters for the ProgressBar component.
Parameters

Expected Value

Purpose

direction

left or right

Sets whether the bar fills from the left or
from the right.

enabled

selected or deselected

If deselected, your audience can’t access
the component.

mode

event, polled, manual,

Selects different methods for providing
progress information. Event and polled are
the most common modes.

source

an object that’s being
loaded; for example, a
Loader instance

Sets the source for the object that’s being
loaded.

visible

selected or deselected

If deselected, the component is hidden.

RadioButton
When you want to make sure your audience chooses just one of several mutually
exclusive options, use a group of RadioButton components (Figure 16-22). Radio
buttons are frequently used in programs and on the Internet, so it’s likely your audience will be familiar with them. See Table 16-10 for a list of parameters to use with
the RadioButton component.

Figure 16-22

RadioButton components let you offer your audience mutually exclusive options, so you
always use RadioButton components in groups of two or more. (If you think you want a
single radio button, you probably want to use a checkbox.) Turning on one radio button
tells Flash to turn off all the other radio buttons with the same groupName.

Table 16-10. Radiobutton parameters.
RadioButton
Parameters

Expected Value

Purpose

enabled

selected or deselected

If deselected, your audience can’t use the
component.

groupName

RadioButtonGroup

Identifies the group of buttons from
which your audience can make a single
selection.

Chapter 16: Components for Interactivity

www.it-ebooks.info

571

The Built-In
Components

RadioButton
Parameters

Expected Value

Purpose

label

a string of characters

Explanatory text for the RadioButton
component.

labelPlacement

left, right, top, bottom

Positions the label relative to the button.

selected

selected or deselected

Changes the appearance of the
RadioButton to show it’s checked.

value

An object like a string
or a number

Defines the values represented by radio
buttons.

visible

selected or deselected

If deselected, the component is hidden.

ScrollPane
The ScrollPane component helps you include an image that’s too big to fit into your
animation. Think about some of those map programs that let you move a map image inside a frame. You can let your audience position an image using scroll bars
or by dragging in the image. Figure 16-23 shows you the ScrollPane in action, and
Table 16-11 lists the multitude of parameters you find in the Component Inspector.
There are two parameters for each type of scroll bar: horizontal and vertical. These
parameters determine how far the window scrolls when you click the scroll bar’s
arrows and when you click the body or track of the scroll bar. A ScrollPolicy lets you
define scrolling behavior and assign that behavior to many objects and components.
The ScrollPolicy settings can get a little involved, but in most cases, you can leave
horizontalScrollPolicy and verticalScrollPolicy set to AUTO without adverse effects.

Figure 16-23

When you display an animation or image using the ScrollPane component, Flash automatically tacks on scroll bars that people can use to choose which part of the animation
they want to see through the window.

572

flash CS6: The Missing Manual

www.it-ebooks.info

The Built-In
Components

Table 16-11. Parameters for the ScrollPane component.
ScrollPane
Parameters

Expected Value

Purpose

enabled

selected or deselected

If deselected, your audience can’t use
the component.

horizontalLineScrollSize

a number value

The amount of content to be scrolled,
horizontally, when your audience clicks a
scroll arrow.

horizontalPageScrollSize

a number value

The number of pixels by which to move
the scroll marker on the horizontal scroll
bar when your audience clicks the scroll
bar track.

horizontalScrollPolicy

ON, OFF, AUTO

Controls whether a scroll bar appears in
the component.

scrollDrag

selected or deselected

If selected, your audience can drag an
image within the ScrollPane.

source

name and path to the
file to be displayed;
this can be an Internet
address

Sets the source for the file to be displayed in the ScrollPane.

verticalLineScrollSize

a number value

The amount of content to be scrolled,
vertically, when your audience clicks a
scroll arrow.

verticalPageScrollSize

a number value

The number of pixels by which to move
the scroll marker on the vertical scroll
bar when your audience clicks the scroll
bar track.

verticalScrollPolicy

ON, OFF, AUTO

Controls whether a scroll bar appears in
the component.

visible

selected or deselected

If deselected, the component is hidden.

Slider
The Slider component gives your audience an easy way to select a value. Better still,
it helps you prevent them from choosing a useless value. (Ever had someone type
his name into a box where you expected a number?) Sliders are a natural for controlling volume or sizing an image, and there are lots of creative ways to use them.
Use the maximum and minimum parameters to set the range (Table 16-12). Use the
snapInterval parameter to count by fives or twos if you want. The tickInterval parameter refers to a visual scale that appears above the slider, as shown in Figure 16-24.

Chapter 16: Components for Interactivity

www.it-ebooks.info

573

The Built-In
Components

Table 16-12. Parameters for the Slider component.
Slider Parameters

Expected Value

Purpose

direction

horizontal or vertical

Sets the Slider’s orientation.

enabled

selected or deselected

If deselected, your audience can’t access
the component.

liveDragging

selected or deselected

If selected, lets your audience drag to
change the Slider’s value. If you deselect
the parameter, it’s up to you to move the
Slider through ActionScript to display a
value.

maximum

a number value

The high number on the Slider’s scale.

minimum

a number value

The low number on the Slider’s scale.

snapInterval

a number value

Sets the precision available on the
Slider’s scale.

tickInterval

a number value

Shows visual tick marks above the Slider.

value

a number value

The value represented by the Slider’s
position.

visible

selected or deselected

If deselected, the component is hidden.

Figure 16-24

The slider component doesn’t automatically provide numbers for its scale. Here the
numbers were added using Flash text.

TextArea
The TextArea component (Figure 16-25) is an all-purpose, multiline, scrollable text
field that’s useful for presenting text to your audience. It’s also useful when you want
your audience to be able to type a long comment, or any other information longer
than a few words. You can modify the text property through ActionScript, which
means you can change the text that appears in a text field while your animation is
running. (See Table 16-13 for a list of TextArea parameters.)
574

flash CS6: The Missing Manual

www.it-ebooks.info

The Built-In
Components

Table 16-13. Parameters for the TextArea component.
TextArea
Parameters

Expected Value

Purpose

condenseWhite

selected or deselected

When selected, removes extra white space
from HTML text.

editable

selected or deselected

If deselected, your audience can’t make
changes to the component.

enabled

selected or deselected

If deselected, your audience can’t access the
component.

horizontalScrollPolicy

ON, OFF, AUTO

Controls whether a scroll bar appears in the
component.

htmlText

HTML-encoded text

Displays HTML encoded text, showing formatting, hyperlinks, and other features.

maxChars

a number value

Limits the number of characters that the
TextArea component can contain. The setting 0 means there’s no limit.

restrict

a string of characters

Lets you specify which characters your audience can type into the TextArea component.
For example, you can limit input to the numbers 0–9 if you expect a phone number.

text

a string of characters

The text to be displayed in the TextArea.

verticalScrollPolicy

ON, OFF, AUTO

Controls whether a scroll bar appears in the
component.

visible

selected or deselected

If deselected, the component is hidden.

wordWrap

selected or deselected

Controls line breaks in large chunks of text.

Figure 16-25

The TextArea and TextInput components both let your audience type text, but the
T­ extArea component (shown here) lets them type multiple lines of text. Flash automatically adds scrollbars if someone types in more text than the TextArea component’s
dimensions can display.

Chapter 16: Components for Interactivity

www.it-ebooks.info

575

The Built-In
Components

TextInput
The TextInput component lets you create a single-line text field, used mostly as a
field in a form. (See Table 16-14 for the list of TextInput parameters.) Using this component lets you give your audience a free-form text field just long enough to type
what you want them to type (for example, a name, phone number, or email address).
Table 16-14. Parameters for the TextInput component.
TextInput
Parameters

Expected Value

Purpose

displayAsPassword

selected or deselected

When selected, disguises the actual characters in the display.

editable

selected or deselected

If deselected, your audience can’t change the text.

enabled

selected or deselected

If deselected, the component can’t be
accessed by the audience.

maxChars

a number value

Limits the number of characters that can be
contained in a TextInput component. If it’s
set to 0, then there’s no limit.

restrict

a string of characters

Used to limit the characters that can be
typed into the TextInput component; for
example, you can limit input to numbers if
you expect a phone number.

text

a string of characters

The text shown on the display.

visible

selected or deselected

If deselected, the component is hidden.

TileList
The TileList is used to display several images in a grid (Figure 16-26). For example,
you may want to show several thumbnail images in a row. When your audience clicks
a thumbnail, a larger version of the image is displayed (See Table 16-15).
Table 16-15. Parameters for the TileList component.

576

TileList Parameters

Expected Value

Purpose

allowMultipleSelection

selected or deselected

If selected, your audience can select
more than one image.

columnCount

a number value

Sets the number of columns in the grid.

columnWidth

a number value

Sets the width of the columns in pixels.

dataProvider

a DataProvider object
(for more details, see
the box on page 566)

Points to a data source to provide
the items in the list. The DataProvider
object can come from an external
source, or you can create one using
ActionScript code.

direction

horizontal or vertical

Sets whether the TileList scrolls horizontally or vertically.

flash CS6: The Missing Manual

www.it-ebooks.info

TileList Parameters

Expected Value

Purpose

enabled

selected or deselected

If deselected, your audience can’t use
the component.

horizontalLineScrollSize

a number value

The amount of content to be scrolled,
horizontally, when your audience clicks
a scroll arrow.

horizontalPageScrollSize

a number value

The number of pixels by which to
move the scroll marker on the horizontal scroll bar when your audience
clicks the scroll bar track.

rowCount

a number value

Sets the number of rows in the grid.

rowHeight

a number value

Sets the height of the rows in pixels.

scrollPolicy

ON, OFF, AUTO

Controls whether a scroll bar appears
in the component.

verticalLineScrollSize

a number value

The amount of content to be scrolled,
vertically, when your audience clicks a
scroll arrow.

verticalPageScrollSize

a number value

The number of pixels by which to
move the scroll marker on the vertical
scroll bar when your audience clicks
the scroll bar track.

visible

selected or deselected

If deselected, the component is hidden.

The Built-In
Components

Figure 16-26

Usually TileList components are filled with images and captions. In honor of this chapter’s
topic, this TileList is filled with images of other components.

Chapter 16: Components for Interactivity

www.it-ebooks.info

577

The Built-In
Components

UILoader
Think of the UILoader (user interface loader) as a container for images (.jpg, .gif, and
.png) and Flash animations (.swf) that are outside of your Flash application. You provide the name and path of the file you want to load into the source parameter (Table
16-16). If you’re ActionScripting, you can assign the name to the source property of
the UILoader. Through ActionScript, you can also access the percentLoaded property.
Table 16-16. Parameters for the UILoader component.
UILoader
Parameters

Expected Value

Purpose

autoLoad

selected or deselected

If deselected, the UILoader waits until
it receives a load() statement.

enabled

selected or deselected

If deselected, your audience can’t
access the component.

maintainAspectRatio

selected or deselected

Determines whether an image maintains its proportions; usually left set
to true.

scaleContent

selected or deselected

If selected, the UILoader automatically scales the image to fit the
loader’s dimensions.

source

name and path to the file to
be displayed; this can be an
Internet address

Sets the source for the file to be
loaded.

visible

selected or deselected

If deselected, the component is
hidden.

UIScrollBar
The UIScrollBar component is a fancy, color-customizable scrollbar you can add to a
TextField or TextArea field to make your text fields match your overall color scheme
(see Table 16-17 for parameters).
Table 16-17. Parameters for the UIScroller component.

578

UIScrollBar
Parameters

Expected Value

Purpose

direction

horizontal or vertical

Sets the orientation of the
scroll bar.

scrollTargetName

instance name of a textArea or
textInput component

Identifies the text field to be
scrolled.

visible

selected or deselected

If deselected, the component
is hidden.

flash CS6: The Missing Manual

www.it-ebooks.info

Finding
Additional
Components

Finding Additional Components
In addition to the components that ship with Flash, you can also find components on
the Web (try searching for “Flash components” using your favorite search engine).
Below are a few of the most popular sources for Flash components as this book
goes to press:
• Flash Exchange (www.adobe.com/cfusion/exchange/index.cfm). Adobe hosts
a website called Flash Exchange (see Figure 16-27). Adobe itself doesn’t create
the components on the Flash Exchange; instead, regular folks and third-party
software companies submit the components, and the site categorizes and rates
them. To visit the Flash Exchange, select Help→Flash Exchange.

Figure 16-27

The Flash Exchange
website (which you
can surf to by selecting
Help→Flash Exchange)
lists hundreds of components in nearly a dozen
different categories, from
Navigation to Commerce
and Accessibility. Some
you pay for; others you
can download for free.
Use the component
specifications, number
of downloads, and rating
associated with each
component to help you
decide which ones to try.

• The Flash Components Network (www.flashcomponents.net). Similar to Adobe’s
Flash Exchange, this site lists and rates Flash components submitted by a variety
of Flash enthusiasts and software companies.
• ActionScript.org (www.actionscript.org). This everything-Flash site lists dozens
of freely downloadable components.

Chapter 16: Components for Interactivity

www.it-ebooks.info

579

Finding
Additional
Components

Note

Because anyone with the time, inclination, and ActionScript experience can create a Flash component,
Flash enthusiasts (as opposed to established software companies) create most of the Flash components on the Web.
Many of the components are free, but there’s a downside: Components don’t always come with the documentation
you need to customize them, and they virtually never come with a guarantee. They may not work as promised,
and they may harbor viruses that can damage your computer. Don’t be afraid to try out useful components, but
do exercise the same care and caution you use when you download and install any other software program.

Up to Speed

Installing Third-Party Components
After you find and download a component (page 572 lists
several online component resources), you need to install the
component so you can use it in Flash:

Macintosh HD:Users:username:Library:Application
Support:Adobe:Flash CS6:language:Configuration:Com
ponents .

1. First, exit Flash if you’ve got it running.

4. Start Flash.

2. Place the .swc or .fla file containing the component in the
folder where you keep components.

5. Open the Components panel (Window→Components)
and check to make sure the new component is available.

3. For PCs, use C:\Program Files\Adobe\Adobe Flash CS6\
language\Configuration\Components . For Macs, use

CODERS’ CLINIC

Getting a Component’s Version Number
Like programs, components get updates from time to time.
Perhaps the folks who designed the component added new
features, or maybe they needed to make changes so that the
component would be compatible with an updated version of
Flash. In any case, there may come a time when you’ll want to
find out the version number of a component that you’re using in
your Flash project. Fortunately, every component has a version
property, so there’s a consistent way to check. All you need to

do is drag an instance of the component onto the stage, and
then add this ActionScript code to the timeline:
trace(component_instance_name.version);

Replace “component_instance_name” with the actual instance name of the component you added to the stage. Press
Ctrl+Enter (⌘-Return) to test your document. The component’s
version number appears in the Output panel (Figure 16-28).

Figure 16-28

You can display the version number of a component in the Output panel simply by placing a
snippet of code in the Actions panel.

580

flash CS6: The Missing Manual

www.it-ebooks.info

chapter

Choosing, Using, and
Animating Text

17

T

ext plays a big part in many Flash projects, and you can put it there in a few
ways. As explained on page 220, you can use the Text tool to create text
fields and then alter the text’s appearance using the Properties panel. But if
you want your text to undergo changes over the course of an animation, you need
the power of ActionScript. This chapter shows you how to use ActionScript to edit,
format, and manipulate text fields as your animation runs. First, you need to know
about font embedding, to ensure that your audience sees exactly the typefaces you
specify. Then, to edit text on the fly, you’ll learn how to add and remove characters
from strings of text. The remainder of the chapter explains how to create text fields
using ActionScript and how to format and animate text.

What Font Does Your Audience Have?
When you create your Flash masterpiece, you use the fonts installed on your computer. Dozens of fonts show up in the Properties→Character→Family list. Franklin
Gothic or French Script, anyone? Whenever a program like Flash needs a font, it
gets the font description from the file on your computer. Font files mathematically
describe the outlines of each character. Flash uses this description to display type
at all different sizes, just like resizing a vector image (page 357).
When your project is finished and you publish it, you create an SWF file (page 7).
There are two ways that Flash handles text. It can look up the font description and
then draw the image, or it can turn the text into a raster image. Raster images are
fine, but because the text is converted to a graphic, you can’t edit the words or
characters when the animation is running on your audience’s computer. It looks

581

www.it-ebooks.info

What Font
Does Your
Audience
Have?

like text, but it’s really just another graphic. If Flash stores the name of the font in
the SWF file, then Flash Player looks up the font description and has everything it
needs to draw those beautiful, complicated glyphs that make up a typeface. You
can change the text on the fly using ActionScript, and your audience can even add
and edit text if you let them. There’s only one snag with using the font name in your
Flash projects: If your audience’s computer doesn’t have the font file for Franklin
Gothic or French Script, Flash Player uses another font in its place. In the best cases,
the difference doesn’t show. In the worst cases, your text looks strange and doesn’t
fit properly in the space you’ve provided.

Embedding Fonts in Your SWF file
It’s not always possible to anticipate the fonts your audience will have. (Heck, these
days it’s hard to guess whether your audience will be watching on a computer, a
smartphone, a tablet, or a television screen.) So Flash provides a way to put the
font descriptions in the SWF file. In Flash-speak, that’s called embedding the font.
With the font description in the animation file, Flash Player has everything it needs.
Of course, embedding adds to the size of the SWF file, but at least your audience
sees the animation as you designed it. In earlier versions of Flash (before CS5), you
had to remember to embed all the fonts you used in your animation. Now, Flash
automatically embeds any characters used in text fields. However, if you want to
generate new text on the fly or give your audience the ability to add text, you need
to embed additional font descriptions.
You need to embed fonts if:
• You create new text objects, like text fields, on the fly using ActionScript.
• You edit text with ActionScript using new characters, numerals, or punctuation.
• You give your audience a way to add or edit text with TLF editable, Classic
dynamic, or Classic input text.
If you’re using Flash CS4 or earlier, it’s best to manually embed fonts unless your
project meets one of the criteria below.
You don’t need to embed fonts if:
• You place your text in fields at design time and use TLF read only, TLF selectable, or Classic static text.
• All the text in your project is in text fields, and it won’t change when the animation runs.
• You choose device fonts: _sans, _serif, or _typewriter. This specification automatically uses fonts already installed on your audience’s computer, phone,
or tablet.
As mentioned earlier, embedding font descriptions in your SWF files adds to the
file size—and you want to keep those SWF files as small as possible. Flash lets you
embed only the necessary fonts and characters—no extras. You wouldn’t want to
embed Zapf Chancery, for example, if you’re not using that font, and you don’t need
582

flash CS6: The Missing Manual

www.it-ebooks.info

to embed character descriptions for Q, z, #, and | if they don’t appear in your text
and there’s no potential for them to be used when your animation runs. The Font
Embedding dialog box (Figure 17-1) gives you the tools to embed just the right fonts
and characters.

Family
Character ranges ActionScript tab

What Font
Does Your
Audience
Have?

Figure 17-1

If you’re new to Flash,
the concept and process
of embedding fonts can
be a little mind-boggling.
Fortunately, in Flash
Professional CS6, you can
do all these chores in one
spot—the Font Embedding dialog box.

Style

Follow these steps to embed specific characters from a font in your SWF file:
1. With your Flash document open, choose Text→Font Embedding.
The Font Embedding dialog box opens.
2. Make sure the Options tab is selected, and then use the Family menu to
select the Family and Style you want to embed.
The family is the common name you use for a font, like Times, Arial, or, as shown
in Figure 17-1, Franklin Gothic Book. The style includes Regular, Bold, Italic, and
other characteristics.
3. In the Name box, type a name for the font, like Franklin Gothic Book letters
numbers punctuation .
Use a name that helps you identify the font description later. This name appears
in the Library panel.
4. Use the “Character ranges” list to choose the specific characters you want
to embed.

Chapter 17: Choosing, Using, and Animating Text

www.it-ebooks.info

583

What Font
Does Your
Audience
Have?

Here’s where you control how much data goes into the SWF file. So if you need
only lowercase letters, no numbers or punctuation, you can choose Lowercase
[a..z] (27/27 glyphs). The more characters you add, the bigger your SWF gets.
Glyph is another word for character; it also includes numerals and punctuation.
5. Optional: Add characters to the “Also include these characters” box.
Suppose you need to include the dollar sign, a comma, and periods, but don’t
need to include all 52 punctuation glyphs. Just type the necessary punctuation into this box, and don’t select the punctuation option in the “Character
ranges” list.
6. Optional for ActionScript: If you’re going to use create text fields on the fly
with ActionScript, click the ActionScript tab.
The ActionScript tab has three sections: “Outline format,” Linkage, and Sharing.
7. Optional for ActionScript: In the Linkage section, turn on “Export for
­ActionScript.”
The buttons and boxes in the ActionScript tab change from grayed out to available. Flash automatically turns on “Export in frame 1,” making your font available
at the beginning of your animation.
8. Optional for ActionScript: In the “Outline format” section, choose either
Classic (DF3) or TLF (DF4).
Your choice here must match the choices you make when you create text fields.
If you happened to use the Palatino font in both Classic text fields and TLF text
fields, then you need to embed the Palatino font for both text engines.
9. Optional for ActionScript: In the Class box, type a name, like Franklin-­
GothicBook .
Like everything in ActionScript, your font description is an object based on a
class. In this step, you provide the name for a new class, which is based on the
flash.text.Font class.
10. Optional for ActionScript: Click the green checkmark button.
Flash displays a message: “A definition for this class could not be found in the
classpath, so one will be automatically generated in the SWF file upon export.”
Translation: This is a new class that didn’t previously exist, so Flash will create
the necessary code to create the class when you publish your SWF file.
11. On the left in the Font area, click the + button.
Flash creates a font symbol and adds it to your Flash document. The name you
provided in step 3 appears in the Font list in the Embedded Font dialog box,
and the font symbol is shown in the Library.

584

flash CS6: The Missing Manual

www.it-ebooks.info

There are a few technical details when you embed fonts in your SWF files. If the
font’s appearance isn’t important to your project, then consider using system fonts,
as described in the box below. Create separate font symbols for each style, such
as Bold, Italic, and Regular. Remember, TLF text and Classic text are two different
beasts where Flash and ActionScript are concerned. You can use both types of text
in a single Flash document, but when you export text for ActionScript, you need to
make sure it matches the text type.

Controlling
Text with
ActionScript

Frequently Asked Question

Device Fonts: _sans, _serif, and _typewriter
At the top of the list in Properties→ Character→Family, there
are fonts called _sans, _serif, and _typewriter. What are they,
and how do I use them?
These three font options are known as device fonts. Device
fonts include three generic styles: _sans is similar to Helvetica
or Arial, _serif is similar to Times or Times New Roman, and
_typewriter is similar to Courier or Courier New. You find these
choices at the top of the font lists in the Properties→Character
panel and the Text→Font menu. If you specify device fonts
when you create text fields, then Flash Player always looks for

a font that’s installed on the device (computer, smartphone,
or whatever) that’s playing the animation. Sometimes, small
file size is an overriding concern. Perhaps you know that your
audience will be using a slow Internet connection or handheld
devices. When you choose device fonts for your animation, no
fonts are embedded in the .swf file. On the Web, this makes
for smaller, faster Internet transmission. On handhelds, this
conserves resources such as CPU power and battery life. In
both cases, you give up some control over the appearance
of the type.

Controlling Text with ActionScript
If you’re used to using a word processor, it probably seems pretty natural to format
your text with menus and the Properties panel. After all, they aren’t that much different from Microsoft Word menus and dialog boxes. On the other hand, if you want
to make major changes to text on the fly, or if you want to format text with HTML
or CSS, you have to use ActionScript to produce your text. You saw some text and
ActionScript examples in Chapter 12 (page 432). You’ll find more here. First, the
elementary basics, which begin with string theory.

ActionScript Text: String Theory
Flash has lots of text containers, like TLF editable and Classic dynamic text. And then
there are the components: Label, TextArea, and TextInput. All of these text-displaying
tools use the String data type (page 432). As far as ActionScript is concerned, a
string is similar to an array, in that it’s a list of characters. The list can be a single
character or hundreds of characters. Each character is in a specific position in the
list—its index number (page 488). Arrays and strings both begin counting at position
zero (0). So if the string is “Stutz Modern Motorcars,” that capital S is at position 0.

Chapter 17: Choosing, Using, and Animating Text

www.it-ebooks.info

585

Controlling
Text with
ActionScript

Note

Strings are common to most programming languages, and there are loads of books that explain how
to perform string manipulation magic. Most Flash programs don’t require such trickery. This chapter explains some
of the most common techniques used by Flash designers. However, if you’re an aspiring string magician, you may
want to start out with ActionScript 3.0 Cookbook or Essential ActionScript 3.0, both published by O’Reilly.

Creating a New String
You want to use the name of your company, “Stutz Modern Motorcars,” in an
­ActionScript program. The typical way to do so is to create a variable with the data
type string, and then store the name of your company inside that variable. Whenever
you need the company name to appear in your program, you can provide the name
of the variable. Here’s the way you’d create a string variable for your company name:
var strCompanyName:String = "Stutz Modern Motorcars";

This statement does a few things in a single line. It creates and names a String variable strCompanyName, and then it assigns a string value to the variable. You only
have to create the variable with the var statement once, and then you can use it as
many times as you want. In this case, the variable name begins with the three letters “str” to indicate that it’s a string, but that’s not necessary. The variable name
could be a single letter.
Note

String values, like “Stutz Modern Motorcars”, are always shown within either double or single quotes.
One of the reasons you can use either type of quotes is that it provides an easy way to include quotes within your
string. So here are examples of valid strings:
strDont = "don't";
strQuote = 'Ed said, "I love my Stutz Bearcat. I drive it everywhere."';

The important rule is that you have to begin and end the string with the same type of quotation mark.

Because you assign your strings to variables, you can change the strings’ values. For
example, if the boss changes the name of Stutz Modern Motorcars to the simpler
(and even more modern) Stutz Motor Company, you can update your ActionScript
code by assigning the new name to the strCompanyName variable, like so:
strCompanyName = "Stutz Motor Company";

Joining Strings
One of the most common ways to modify a string is to add more text to it. In geekspeak that’s called concatenation, but you can think of it as joining strings. Suppose
your boss finally gets around to filling out those incorporation papers, and your
company has yet another new name. If you want to add the word “Incorporated”
to the existing strCompanyName, here’s how you’d do it:
strCompanyName = strCompanyName + ", Incorporated";

586

flash CS6: The Missing Manual

www.it-ebooks.info

As you can see, you’re adding a new string value to the end of the existing string.
The end result is a complete name, “Stutz Motor Company, Incorporated.” Joining
strings is such a common and popular task that there’s a shortcut to help you do so
with fewer keystrokes. It looks like this:

Controlling
Text with
ActionScript

strCompanyName += ", Incorporated";

That line of code does exactly the same thing as the preceding example, just with
fewer keystrokes. Make sure you keep the + sign to the left of the = sign. When you do
it the other way around, the code has an entirely different meaning to ActionScript.
Note If you want to test some of these string examples, you can use the trace() statement to display the
string in the Output panel. For example, to display strCompanyName, add this line to your ActionScript code:
trace(strCompanyName);

Make sure all the string variables are declared with a var statement like this:
var strCompanyName:String = "Stutz Modern Motorcars";

If they’re not declared before they’re used, you’ll get an error.

When you have a string inside quotes, like “, Incorporated,” it’s known as a string
literal. The string is literally what’s inside the quotes, similar to a constant. When a
string is represented by a variable, like strCompanyName, it’s a string variable. In
most situations, you can use either representation. For example, here’s another way
you can construct the new company name:
var strCompanyName:String = "Stutz Motor Company";
var strInc:String = ", Incorporated";
strCompanyName += strInc;

You can use a combination of string literals and string variables when you’re joining a string. You see this technique in use when websites greet you by name. An
ActionScript example looks like this:
var strVisitorName = "Chris Grover";
strGreeting = "Hello, " + strVisitorName + ". What can I do to put you in a
Stutz Bearcat today?";

When you join strings with the concatenation operator (+ or +=), everything inside
the quotes has to be on a single line. That’s one of the reasons you see multiple assignment statements when an ActionScripter is creating a long paragraph of text.
var strSalesPitch:String = "The legendary Stutz Bearcat. ";
strSalesPitch += "It's your best value in high-performance ";
strSalesPitch += "sport cars today. ";
strSalesPitch += "At the Stutz Motor Company, we want to know, ";
strSalesPitch += "what can we do to put you in a Stutz Bearcat today?";

Chapter 17: Choosing, Using, and Animating Text

www.it-ebooks.info

587

Controlling
Text with
ActionScript

This block of text produces a single long string. Even though there were line breaks
in the ActionScript code, those have no effect on the string when it is displayed. The
line breaks are dictated by the properties and size of the text container. To see how
you specifically place line breaks in a string, see the next section.
Note This last example is shown in 17-1_Join_Strings.fla in the Missing CD (www.missingmanuals.com/cds/
flashcs6mm). A trace statement added to the code displays the completed string in the Output panel.

Using TextField’s appendText() Method
When you’re using objects of the TextField class, you can use the appendText()
method. In fact, appendText() is preferred because it runs faster than the concatenation operator. Here’s some code that shows appendText() in action:
1
var tfBearcatBanner:TextField = new TextField();
2
var strSalesPitch:String = new String();
3
strSalesPitch = "Stutz Motor Company\nHome of the legendary Stutz
Bearcat\n";
4
tfBearcatBanner.text = strSalesPitch;
5
tfBearcatBanner.appendText("What can we do to put you in a Bearcat
­today?");
6
7
tfBearcatBanner.x = 40;
8
tfBearcatBanner.y = 40;
9
tfBearcatBanner.width = 280;
10 tfBearcatBanner.height = 160;
11
12 addChild(tfBearcatBanner);

The first two lines create a text field and a string. The third line puts some text in the
string strSalesPitch. Line 4 assigns that string to the text property of the text field.
Line 5 is where the appendText() method comes in. The text in the parentheses is a
string literal, but it could just as easily be a variable. Lines 7 through 10 position and
size the text field on the stage. The last line adds the text field to the Display List,
which makes it visible on the stage. When you run this bit of code, Flash Player displays the text as shown in Figure 17-2. This example is called 17-2_Append­_Text.fla
in the Missing CD (www.missingmanuals.com/cds/flashcs6mm).

Figure 17-2

The last line of text shown here in Flash Player was added to the TextField using the
appendText() method.

588

flash CS6: The Missing Manual

www.it-ebooks.info

Adding Line Breaks to a String
When you’re typing text into a text field, you hit the Enter (or Return) key to begin
a new line, but that doesn’t work when you’re creating a string in ActionScript. You
need to insert a special signal within the string. It’s a backslash with a lowercase n,
which stands for new line. Here’s an example:

Controlling
Text with
ActionScript

strSalesPitch = "Stutz Motor Cars \n Home of the legendary Stutz Bearcat";

If placed in a multiline text field and given enough room to display, this string
­appears as two lines:
Stutz Motor Cars
Home of the legendary Stutz Bearcat
There’s a space after the word “Cars” and before the word “Home,” because, after
all, strings are literal. To avoid the extra space at the beginning of the second line,
you have to eliminate the space characters on both sides of \n. It looks strange to us
humans, because we see individual words, but that’s not the way ActionScript sees
a string. ActionScript just sees a long line of characters: letters, numbers, spaces,
and punctuation. The only thing that really grabs its attention is the sequence \n.
When ActionScript sees that backslash followed by a lowercase n, it knows that’s
the signal for a new line.

Finding a String Within a String
Suppose your Flash animation is more like a computer program. It’s so complex that
you’ve provided 200 pages of help text to help your audience learn how to use it.
You want to create some sort of search function so folks can zero in on the help they
need. A string that’s inside another string is often called a substring, and ActionScript
provides some methods to help you find a substring inside a larger string.
To make it simple, this example is going to search for the word “legendary” within
the longer string “Home of the legendary Stutz Bearcat.” Not quite hundreds of
pages, but you get the idea. All strings inherit the same properties and methods
from the string class. Two of those methods are indexOf() and lastIndexOf(), and
they’re specifically used to search for substrings. As with any good method, you
put them to work by tacking them onto the end of an object. Here’s some code to
show how it works:
var strSalesPitch:String = "Home of the legendary Stutz Bearcat."
strSalesPitch.indexOf("legendary");

The first line creates the string variable named strSalesPitch. The second line runs
the string method indexOf(). The method needs to know what substring you’re
searching for, so you provide that as a parameter. You can put the string literal right
inside the parentheses, as shown here with “legendary,” or you can provide a string
variable, which, of course, wouldn’t include the quotes.
So what does the indexOf() method do? It gives you back a number. Specifically, it
gives you the index number where the searched-for string begins. In the case above,

Chapter 17: Choosing, Using, and Animating Text

www.it-ebooks.info

589

Controlling
Text with
ActionScript

strSalesPitch.indexOf(“legendary”) is equal to 12, because if you start counting at
zero, and you count the letters and spaces, you find that the letter “l” is at index 12.
The lastIndexOf() method works in a similar manner, except that it starts searching
from the end of the string rather than the beginning. If either method is unable to
find the substring, it gives back the number –1. That result is actually helpful, since
you can use it with conditional statements. For example, this code would work:
if (strSalesPitch.indexOf("legendary ") == -1) strComment = "Not legendary.";

The if() statement tests to see if the string “legendary” is part of strSalesPitch. If the
statement doesn’t find that string, then the indexOf() method returns –1. When that
condition exists, the words “Not legendary” are assigned to strComment. It’s also
useful to partner the “does not equal” (!=) operator with indexOf() and lastIndexOf().
So you can write code that says something like the following:
if (strSalesPitch.indexOf("legendary") != -1) strComment = "This is a
legendary automobile.";

In other words, if the code finds the substring, it assigns the string “This is a legendary automobile.” to strComment.

Replacing Words or Characters in a String
Search and replace go hand in hand in the computer world. Suppose there were
changes at the car dealership and you needed to make changes to your sales pitch:
“Home of the legendary Stutz Bearcat.” You can use the replace method. It works
like this:
strSalesPitch = strSalesPitch.replace("Stutz Bearcat","Toyota Prius");

As usual with methods, you tack replace() onto the end of the object, in this case, a
string. For parameters, you provide the search words or letters, and then you provide
the replace words or letters. Also, as usual, you use a comma to separate parameters
when there’s more than one. The replace() method works with both string literals,
like the ones shown here, or string variables.

Converting Strings to Uppercase or Lowercase
You can change the case of a string using the toUpperCase() or toLowerCase()
methods. Part of the String class, you use these the same way as the other methods.
Continuing with the car dealership theme, here are some examples that use trace()
to display the strings in the Output panel:
var strSalesPitch = "Home of the legendary Stutz Bearcat";
trace("This is the initial string: \n" + strSalesPitch);
trace("\nThis is toUpperCase: \n" + strSalesPitch.toUpperCase());
trace("\nThis is toLowerCase: \n" + strSalesPitch.toLowerCase());

The first line creates the strSalesPitch variable and assigns the words “Home of
the legendary Stutz Bearcat” to the variable. The next line uses trace() to send
the string to the Output panel. (As mentioned on page 473, the trace() statement

590

flash CS6: The Missing Manual

www.it-ebooks.info

is a favorite debugging tool of ActionScripters.) The first string inside the trace()
statement’s parentheses is a string literal that explains what’s to follow: “This is the
initial string:.” The \n is the newline character that forces the following text to start
on a new line. It works in the Output panel the same way it works in a text field.
The + (concatenation operator) joins the two strings. The last string is the variable
strSalesPitch. The final two lines are nearly identical to the second line. They add
one more \n to provide some additional, helpful white space. Finally, the methods
are applied to the strings. What appears in the Output panel comes as little surprise:

Creating Text
Fields with
ActionScript

This is the initial string:
Home of the legendary Stutz Bearcat
This is toUpperCase:
HOME OF THE LEGENDARY STUTZ BEARCAT
This is toLowerCase:
home of the legendary stutz bearcat
Enough with the string theory. The next sections show how to create text on the fly
using ActionScript and how to format that text using a few different tools. This
example is named 17-4_Change_Case.fla in the Missing CD (www.missingmanuals.
com/cds/flashcs6mm).

Creating Text Fields with ActionScript
You’ve seen how to create and then display objects using ActionScript (page 481),
and text fields are no different. You create, and if needed, format the object, and
then you use the addChild() method to add the text field to the Display List. ­Objects
added to the Display List are on the stage, and they’re visible unless you’ve programmed them otherwise.
ActionScript has two text field classes. The TextField class is the basis for Classic text:
static, dynamic, and input. Use the TLFTextField class to create TLF text. Fortunately,
the properties and methods in both classes are nearly identical, so if you know how
to use one, then you can use the other, too. For example, both text fields use the
.text property to define the characters displayed in the text field—more on that
later. The following examples use the new TLFTextField, which offers more bells and
whistles, but it shouldn’t be hard to translate the techniques to a Classic TextField.
Note The properties and methods related to TLF text fields are defined by the TLFTextField class. That means
if you ever have a question, or if you’re ever digging deeper for details about text, you can look up “TLFTextField”
in the ActionScript 3.0 Language and Components Reference (page 448), where you’ll find a listing of all the
properties, methods, and events that are part of the TLFTextField class. This section will familiarize you with quite
a few of these features.

Chapter 17: Choosing, Using, and Animating Text

www.it-ebooks.info

591

Creating Text
Fields with
ActionScript

You create a new text field like you create an instance of any ActionScript class, using its constructor method. Here’s some code that creates a text field and displays
it. Try this demonstration yourself to create a TLFTextField:
1. I n a n ew Ac t i o n S c ri p t 3 .0 d o c u m e n t , o p e n t h e Ac t i o n s p a n e l
(Window→Actions).
At this point, there’s nothing on the stage and a single frame in the timeline.
2. Type the following code and press Enter (Return):
var tlfBanner:TLFTextField = new TLFTextField();

Somewhere as you type or when you hit Enter (Return), Flash generates its own
line of code at the top of your document:
import fl.text.TLFTextField;

Cleverly, Flash knows you need to import the class to create a TLFTextField
object.
3. Continue your code with the following lines:
tlfBanner.text = "Stutz Motor Company\nHome of the legendary Stutz Bearcat";
addChild(tlfBanner);

4. Press Ctrl+Enter (⌘-Return) to test your code.
The result looks like Figure 17-3—not pretty, but at least there’s some text on
the screen. Obviously, a little formatting comes next.

Figure 17-3

Text created in ActionScript usually requires some formatting before it’s ready for prime time. Here the typeface
is small and a bit blah. The text doesn’t fit in the 100 x 100 pixel text field that ActionScript provides unless you
specify different dimensions. And because there was no code to position the text field, it showed up in the upperleft corner.

If you’ve followed the earlier ActionScript examples in this book, the code may seem
pretty familiar. The first line you typed creates a variable called tlfBanner that’s an
instance of TLFTextField. At that point, ActionScript automatically wrote the code
to import the TLFTextClass. In step 3, you created a string literal: “Stutz Motor
Company\nHome of the legendary Stutz Bearcat,” and assigned it to the text field’s
.text property. The last line of code adds the text field to the Display List, making
the text field visible on the stage. Without a single Flash tool touching the stage,
you made text, albeit a bit dull and truncated, appear in a Flash animation. In the
next few steps, you’ll spruce it up.

592

flash CS6: The Missing Manual

www.it-ebooks.info

This example used a string literal to set the text property. In some cases, especially
if you want to perform some string magic, as explained earlier in this chapter, you
may want to use a string variable. That works, too. For example, you could get the
same result in the text field using these lines:

Creating Text
Fields with
ActionScript

var strSalesPitch:String = new String();
strSalesPitch = "Stutz Motor Company\nHome of the legendary Stutz Bearcat";
tlfBanner.text = strSalesPitch;

The first line creates an instance of the String class. The next line assigns a value to
the string variable. You could use any of the string tricks, like append or replace, at
this point. The last line assigns the string variable to the text field’s .text property.

Positioning, Sizing, and Formatting a Text
Field
You position and size your text field on the stage as you do other visual elements.
In fact, because text fields are rectangular, it’s very similar to working with a rectangle. You use the x and y properties to put the text field in a certain spot on the
stage, and then you use the width and height properties to size the text field. So,
the first step for the Bearcat banner is to move away from that upper-left corner,
and then give it enough width to show all the text. Here’s the code you add before
the addChild() statement:
tlfBanner.x = 40;
tlfBanner.y = 40;
tlfBanner.width = 240;
tlfBanner.height = 160;

Formatting the Text Field’s Background and Border
In addition to positioning and sizing text fields, you can format text fields by changing their properties. For example, you can add colored backgrounds and borders
for text fields. These are the same properties you change in the Properties panel
using color pickers and text boxes. The difference here is that you’re accessing the
properties with your code. In the case of backgrounds and borders, not only do you
have to set the color and size, but you also need to set the background and border
properties to true so that they display something like this:
tlfBanner.border = true;
tlfBanner.borderColor = 0x993300;
tlfBanner.borderWidth = 5;
tlfBanner.background = true;
tlfBanner.backgroundColor = 0xFFFFCC;

Chapter 17: Choosing, Using, and Animating Text

www.it-ebooks.info

593

Creating Text
Fields with
ActionScript

Tip

Here’s an important point to keep in mind when you’re learning to work with text and ActionScript:
Formatting a text field is different from formatting text. You use TLFTextField properties to change the appearance
of the box that holds text, but you can’t change the typeface or font size using text field properties. There’s an
extra step and an extra object when it comes to specifying type, as explained on page 596.

Those aren’t the only color tricks you can perform on a text field. You can set the alpha (transparency/opacity) property for the text (.alpha), the border (­.borderAlpha),
or the background (.backgroundAlpha). As usual with alpha properties, you use a
number between 0 and 1 to set the opacity, where 0 is completely transparent and
1 is completely opaque. So a statement like this:
tlfBanner.backgroundAlpha = .20;

makes the background 20 percent opaque.

Adjust the Space Between Text and Border
If you’re going to go to the trouble of giving your text field a background color and a
border, you probably don’t want your text scrunched up against the edge. To create
some breathing room, use the text field’s padding properties. There’s a property
for each edge—top, bottom, left, and right—so you use a different setting for each.
In this example, 24 pixels is used for all the edges:
tlfBanner.paddingTop = 24;
tlfBanner.paddingLeft = 24;
tlfBanner.paddingRight = 24;
tlfBanner.paddingBottom = 24;

When you want to change something in your text field but don’t know the exact
name of the property, you can use code hinting to help. So, in the previous example,
you can type the variable name for the text field, tlfBanner, and press period (.).
After you do that, code hinting displays a scrollable list of properties for the object,
which in this case is a TLFTextField, as shown in Figure 17-4. Scroll through the list
and look for a property that sounds like it might handle the chore at hand. Most
property names are pretty descriptive, as is the case with the padding properties.
If you double-click the property name, Flash adds it to your code. If you begin typing letters, code hinting automatically scrolls to properties beginning with those
letters. So, if you’re working with a TLFTextField, hit .pa to see the padding options.

Autosizing a Text Field
It’s hard to set the dimensions for a text field when you don’t know how much text
it’s going to hold. The ideal solution to this common dilemma is to pin one or more
of the edges of the text field down to the stage and let the other edges shrink and
grow to accommodate the text. ActionScript lets you do just that with the help of
two tools: the TextField’s autoSize property and the TextFieldAutoSize class. First,
you use the value of one of the TextFieldAutoSize constants to define the edge of
the text field you want to pin down. Then you pass that value to your TextField’s
autoSize property. It sounds more complicated than it is: The good news is you can
take care of the whole job with a single line of code:
594

flash CS6: The Missing Manual

www.it-ebooks.info

tlfBanner.autoSize = TextFieldAutoSize.LEFT;

On the right side of the assignment operator (=), TextFieldAutoSize is set to the
constant LEFT. Then the value is assigned to txtBanner’s autoSize property. The
autoSize property expects this value to come packaged with the TextFieldAutoSize
object. It won’t work if you just try to assign the LEFT constant by itself. There are
four constants that control the sizing behavior of a text field:

Creating Text
Fields with
ActionScript

• TextFieldAutoSize.NONE is what you use if you don’t want to set autosizing
in your code. The text field doesn’t resize at all. If there’s more text than can be
displayed in the text field, it simply doesn’t show.

Figure 17-4

When in doubt about
the properties you can
apply to an object, give
code hinting a try. After
the field name, you see
a colon (:) and the type
of object used to set the
property. It could be a
number, string, Boolean,
or other type. Next is a
hyphen (-) and the name
of the class that defines
the property. You might
see TLFTextField listed or
one of the classes from
which it inherits properties, such as DisplayObject
or Sprite.

• TextFieldAutoSize.LEFT is one of the most common settings. In this case,
the left edge of the text field stays anchored. The right edge can resize to accommodate text (see Figure 17-5). If it’s a multiline text field and there are line
breaks, the bottom can resize, too. When wordWrap is used, only the bottom
is resized. The left, right, and top edges stay put. To turn wordWrap off, add a
line of code like this:
tlfBanner.wordWrap = false;

Chapter 17: Choosing, Using, and Animating Text

www.it-ebooks.info

595

Formatting
Characters
and
Paragraphs

Figure 17-5

With the TextFieldAutoSize constant set to LEFT, this multiline text field can adjust
the right and bottom edges to accommodate more text.

Room for growth

• TextFieldAutoSize.RIGHT is used less frequently, because it behaves as if the
text is right-justified and flowing to the left. The right edge stays anchored.
When a single line runs long, the left edge resizes. If it’s a multiline text field
and there are line breaks, the bottom resizes, too. When wordWrap is used,
only the bottom is resized.
• TextFieldAutoSize.CENTER comes in handy for headers or other cases where
you want your text right in the middle. Resizing is equally distributed to both
the left and right edges. For multiline text fields with line breaks, the bottom
resizes to accommodate the new lines. If wordWrap is set to true, then the bottom resizes and the left, right, and top edges stay put.

Formatting Characters and Paragraphs
Formatting text is such a noble endeavor that ActionScript devotes an entire class
to the job. Once you learn the ins and outs of the TextFormat class, you can do it all.
It works the same for TLF and Classic text and all the text types they encompass.
You can apply a single format to an entire text field and then fine-tune specific
words or phrases with special formatting like bold, italic, or color highlights. Some
formatting properties you apply to specific characters, while others you apply to
entire paragraphs.
Most of the action takes place using the properties of the TextFormat class. As you’d
expect, the TextFormat class has character-level properties that set font names, size,
style, and color. It also includes paragraph-level properties that control the alignment, margins, indents, kerning, leading (line spacing), and bullets.
TextFormat is an object itself, so you need to create an instance of the TextFormat
class to use in your program. Here’s an example of code that does that:
var txtFormat:TextFormat = new TextFormat();

596

flash CS6: The Missing Manual

www.it-ebooks.info

The next step is to choose the format options you want to include in this specific
instance of the class. For example, you can choose the typeface and font size using
the TextFormat’s properties:

Formatting
Characters
and
Paragraphs

txtFormat.font = "Cooper Black";
txtFormat.size = 20;
txtFormat.align = "center";

As explained earlier, when you use ActionScript to create text fields, you need to
choose fonts that you know are on your audience’s computers, or you need to embed
the fonts in the SWF file (see page 568). If the font isn’t available, then the Flash
Player finds a substitute. In this example, the big, bold Cooper Black font is specified.
The number in the size property refers to points, the traditional typographic measurement also used in programs like Microsoft Word. The actual size and readability
of typefaces at the same size can vary, so it’s good to review and experiment when
choosing a typeface and size. The .align property centers the text in the text field.
Once you’ve established your type specs in the TextFormat object, you need to use
the text field’s setTextFormat() method and provide your newly created format as
the parameter. That means you put it inside the parentheses, like this:
tlfBanner.setTextFormat(txtFormat);

This statement registers the format for the entire txtBanner text field. A TextFormat
object can include as many or as few properties as you want.
You can use more than one instance of the TextFormat class. Suppose you want to
apply special formatting to a word or two. You can create formats that make type
bold, italic, or change its color. Here’s code that creates two new TextFormat objects,
one for bold text and one for italic text.
var txtFormatBold:TextFormat = new TextFormat();
txtFormatBold.bold = true;
var txtFormatItalic:TextFormat = new TextFormat();
txtFormatItalic.italic = true;

If you want to apply formatting to a word or phrase inside a text field, you need to
tell ActionScript exactly which characters to format, which you do using the index
numbers in the string. For example, if you want to italicize the word “legendary” in
the text “Home of the legendary Stutz Bearcat,” you need to count characters. Don’t
forget to start that count at 0. Then, when you use the setTextFormat() method, you
also provide a starting point and ending point for the formatting. It looks like this:
tlfBanner.setTextFormat(txtFormatItalic,12,20);

Formatting with ActionScript is similar to setting properties in the Properties panel.
When you apply the txtFormatItalic format, it doesn’t mess with any of the other
formatting properties. It leaves the font and size settings as they were, changing
only the properties that it specifically defines.

Chapter 17: Choosing, Using, and Animating Text

www.it-ebooks.info

597

Formatting
Characters
and
Paragraphs

Tip

When you format text with the setTextFormat() method, the text has to already be assigned to the text
field, and the formatting applies to the entire text field. If you assign the text after running setTextFormat(), it
won’t be as “dressed up” as you expect.

Here’s a chunk of ActionScript code that uses most of the TLFTextField and
­TextFormat coding tricks covered so far. The lines beginning with // are comments.
You can download this code from the Missing CD (www.missingmanuals.com/cds/
flashcs6mm). The file is named 17-5_Format_Text.fla:
1
import fl.text.TLFTextField;
2
import flash.text.TextFormat;
3
4
// Define variables, instances of TLFTextField and TextFormat
5
var tlfBanner:TLFTextField = new TLFTextField();
6
var txtFormat:TextFormat = new TextFormat();
7
var txtFormatItalic:TextFormat = new TextFormat();
8
var txtFormatBold:TextFormat = new TextFormat();
9
10
// Assign a string literal to the .text property of the TLFTextField
11
tlfBanner.text = "Stutz Motor Company\nHome of the legendary Stutz
Bearcat";
12
13
// Position and size properties
14
tlfBanner.x = 40;
15
tlfBanner.y = 40;
16
tlfBanner.width = 220;
17
tlfBanner.height = 160;
18
19
// Background and border properties
20
// Remember to set the .background and .border properties to "true"
21
tlfBanner.border = true;
22
tlfBanner.borderColor = 0x993300;
23
tlfBanner.borderWidth = 5;
24
tlfBanner.background = true;
25
tlfBanner.backgroundColor = 0xFFFFCC;
26
tlfBanner.backgroundAlpha = 1;
27
28
// Padding properties determine the distance between the text
29
// and the edge of the text field
30
tlfBanner.paddingTop = 24;
31
tlfBanner.paddingLeft = 24;
32
tlfBanner.paddingRight = 24;
33
tlfBanner.paddingBottom = 24;
34
35
// Autosize permits the text field to grow to accommodate the text
36
tlfBanner.autoSize = TextFieldAutoSize.LEFT;

598

flash CS6: The Missing Manual

www.it-ebooks.info

37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62

// Turn off wordWrap for this banner; you might want it on
// for paragraph text where line breaks aren't as critical
tlfBanner.wordWrap = false;
// Turn multiline on so the text box displays more than one line
tlfBanner.multiline = true;

Formatting
Characters
and
Paragraphs

// Define text specifications like font, size, and color
// through the txtFormat an instance of the TextFormat class
txtFormat.font = "Times";
txtFormat.size = 20;
txtFormat.align = "center";
// Heres are two more TextFormat objects that set italics and bold
txtFormatItalic.italic = true;
txtFormatBold.bold = true;
// Assign the format using the text field's .setTextFormat() method
// The second text format makes specific characters in the
// text field italic
tlfBanner.setTextFormat(txtFormat);
tlfBanner.setTextFormat(txtFormatItalic,32,41);
tlfBanner.setTextFormat(txtFormatBold, 42,55);
// The addChild method adds the text field to the Display List
// making it visible on the stage.
addChild(tlfBanner);

Line 5 creates the text field called tlfBanner, and line 11 assigns a string literal to its
text property. The lines from 14 through 35 tweak various text field properties, changing its appearance and behavior. Lines 45 through 51 focus on setting properties for
TextFormat objects. On lines 56 through 58, TextFormat objects are applied to the
tlfBanner text field using the .setTextFormat method. The first one is applied to the
entire text field, while the other two target specific characters by position. The last
line adds tlfBanner to the display list, making it visible on the stage.
When all is said and done, the text field looks like Figure 17-6 (shown in Flash Player).

Figure 17-6

This text was created and formatted entirely by
ActionScript. Using the TextFormat object, you can
apply formatting to an entire block of text or to specific
characters, as shown in the italic and bold words in this
example.

Chapter 17: Choosing, Using, and Animating Text

www.it-ebooks.info

599

Formatting
with HTML
and CSS

Formatting with HTML and CSS
When you’re working in ActionScript, there’s more than one way to format text.
The previous technique using ActionScript’s TextFormat object works well when
you’re working on a project on your own. The properties and methods are familiar
if you’re used to working with Flash’s Properties panel. Flash also lets you use the
same formatting tools used by web designers: HTML (hypertext markup language)
and CSS (Cascading Style Sheets). There are a few reasons why you might want to
go this route for a project. Perhaps your project uses lots of text and it’s already
formatted using HTML. In some cases, you may be working on a large project where
some people are responsible for generating the text and others are responsible for
presenting it on the Web or in a Flash-based program.

HTML and CSS Philosophical Differences
Before you make a decision about using either HTML or CSS for your Flash formatting
chores, it helps to understand their approaches to formatting text. HTML embeds
formatting codes inside the text. For example, the second line in the tlfBanner text
field of the previous example might look like this if you formatted it in HTML:
 Home of the legendary Stutz
Bearcat

When a web browser like Internet Explorer, Safari, or Chrome reads this text, it knows
how to display the text in the browser window. It applies the formatting instructions
and shows the text. It displays the proper typeface if it’s available; otherwise it uses
a substitute font. So HTML coding works fine from the audience point of view. For
designers, it can be a bit of a pain. One of the problems of HTML coding is that the
message gets a bit lost in the formatting tags. Complicated HTML coding is hard
for human eyes to read, and that makes it easy to foul up. When you want to make
changes, it’s a lot of work to go in there and tweak all those bits of embedded code.
These days, the fashionable technique is to use CSS to format web pages. The
underlying philosophy is that it’s best to separate the formatting from the content.
You create styles (type specs) for body text, major headlines, subheads, captions,
and so forth. You store those definitions in a style sheet. Then, in the text, you tag
different portions, indicating the styles they should use. In effect, you say: This is a
major headline, this is body text, and this is a caption. When the browser goes to
display your web page, it comes to the text tagged as a headline, and then it looks
up the type specs in the style sheet. It does the same thing for the body text and the
captions. From a designer’s point of view, this system is a tremendous timesaver. If
you want to change the caption style for a website that has 400 captioned pictures,
all you need to do is edit one definition in the style sheet. If all those type specs were
embedded HTML code, you’d need to make 400 separate edits.

600

flash CS6: The Missing Manual

www.it-ebooks.info

Note

Most web pages designed today use a combination of HTML and CSS to format pages. HTML is still
the basic, underlying code for web pages. CSS, JavaScript, and Flash are technologies built on top of the HTML
foundation.

Formatting
with HTML
and CSS

Using HTML Text in Flash
There are two steps to using HTML encoded text in Flash. First, you need to create
strings with the HTML codes embedded. Then you need to assign those strings to
the htmlText property of the text field that will display the formatted text.
When you want to use HTML with its embedded codes in a Flash project, you need
to build strings of text that include all the HTML codes. That means you end up with
a lot of angle brackets, equals signs, and quotes inside your strings. The quotes present a small challenge, because your string needs to be wrapped in quotes when it’s
assigned to a variable or a text field (page 586). Fortunately, Flash accepts either
single or double quotes. So if the HTML you’re embedding looks like this line:

Home of the legendary Stutz Bearcat

You can place it inside single quotes when you use it in Flash. For example, this statement assigns the HTML coded string to the txtBanner text field. It uses single quotes to define the string: tlfBanner.htmlText = '

Home of the legendary Stutz Bearcat

'; HTML is like Flash in that it can use either single or double quotes in most places. Most of the time, you’ll use double quotes, but be aware that you may sometimes see single quotes used to assign values in HTML code. In that case, you’d use double quotes to define your string in Flash. Once you’ve stored your text in a string, you need to assign that string to a text field. Lucky for you, all TextField objects have an htmlText property, as shown in the code example above. It works just like the regular text property except that it understands how to read and then display text with HTML codes. As with any text field, you need to use the addChild() method to add your text field to the Display List and show it on the stage. Creating a Hyperlink with HTML If there’s one thing that made HTML king of the World Wide Web, it’s the hyperlink. Hyperlinks are the threads that form that web. Click a linked word, and suddenly you’re in a different part of the universe (or at least, the Web). On page 225, you saw how to create hyperlinks using the standard Flash authoring tools. The ability of text fields to use HTML encoded text also enables them to use HTML links. You create the links using the usual HTML codes: anchor tags. Here’s an example of an HTML hyperlink: click me Chapter 17: Choosing, Using, and Animating Text www.it-ebooks.info 601 Formatting with HTML and CSS Like most HTML tags, the anchor tag comes in pairs: in between stuff. The slash is the defining mark of an end tag. In HTML, you stuff that first tag with any necessary parameters. In this case, the parameter is a web address. The href stands for hypertext reference; the equals sign assigns a value to the reference inside double quotes. The specific value here is a web address. The words in between the two tags, “click me,” are visible in the browser window. Depending on the tag’s formatting, they may appear underlined or highlighted in some way to show that they’re a link. Beyond that there’s no magic to adding and using HTML hyperlinks in Flash. Here’s an example of the same link included in a string that’s passed to the htmlText property of a text field: txtBanner.htmlText = '

To visit our website click me

'; Flash Player isn’t a web browser, so when your audience clicks the link, their browser opens and then loads the web page specified in the link. The link can just as easily point to a file on the local computer. In that case, instead of the http:// reference, you’d use a file:// reference. Keep in mind that in most cases, file system access is only available when the SWF animation and the file are on same local computer. For security reasons, file access is severely restricted on web servers. Note You can find HTML examples in 17-6_HTML_Text.fla in the Missing CD (www.missingmanuals.com/cds/ flashcs6mm). There are a lot of HTML tags and keywords, and Flash works with only some of them. A complete list of HTML tags that work with Flash is included in the help document ActionScript 3.0 Reference for the Adobe Flash Platform. Look up the Textfield class and its htmlText property. Using CSS to Format Classic Text in Flash CSS is the acronym for Cascading Style Sheets—an ingenious system for formatting HTML text. If you want to read up on how CSS works, you can get an excellent introduction in David Sawyer McFarland’s CSS: The Missing Manual (O’Reilly). You need to have a basic understanding of CSS to use it with Flash. This book provides a quick overview of CSS and an example or two to get you started. CSS style sheets are a little like those wooden Russian dolls where one object is nested inside another. Starting from the outside and working in, here’s what you find in a CSS style sheet. A style sheet is a list of formatting specifications. Each formatting spec has a selector that identifies the HTML tag that it formats. That tag could be the paragraph tag

, or the heading tag

, or an anchor tag . In CSS lingo, the formatting spec is called a declaration block. The declaration block is contained inside curly braces {}. Within those curly braces are specific declarations that define fonts, styles, colors, sizes, and all the other properties that can be defined in CSS. (Flash works with only some of these properties.) The declarations have two parts: a property and a value. So in CSS, if that property is font-size, then the value is a number representing point size. A CSS definition to format an

heading tag might look like this: 602 flash CS6: The Missing Manual www.it-ebooks.info Formatting with HTML and CSS h1 { font-family: Arial; font-size:18; font-weight: bold; color: red; } The first line has the selector for h1 headings, usually the biggest, boldest heading on a web page. The next four lines show pairs of properties and values. On the left side of the colon is the property, which is hyphenated if it’s made up of more than one word. On the right side is the value assigned to that property. In Flash, you can recreate the function of a CSS style sheet using the StyleSheet object. It gives you a way to create selectors and then assign values to the properties Flash recognizes. You can’t use style sheets with TLF text, so here’s Flash’s version of the specification shown above using a Classic TextField: 1 var txtBanner:TextField = new TextField(); 2 var styleSheet:StyleSheet = new StyleSheet(); 3 var h1Style:Object = new Object(); 4 var pStyle:Object = new Object(); 5 6 h1Style.fontFamily = "Arial"; 7 h1Style.fontSize = "24"; 8 h1Style.fontWeight = "bold"; 9 h1Style.color = 0x800000; 10 11 pStyle.fontFamily = "Arial"; 12 pStyle.fontSize = "12"; 13 pStyle.fontWeight = "normal"; 14 15 styleSheet.setStyle("h1", h1Style); 16 styleSheet.setStyle("p", pStyle); 17 txtBanner.styleSheet = styleSheet; 18 19 txtBanner.x = 60; 20 txtBanner.y = 120; 21 txtBanner.width = 200; 22 txtBanner.height = 120; 23 txtBanner.autoSize = TextFieldAutoSize.LEFT; 24 txtBanner.background = true; 25 txtBanner.backgroundColor = 0xFFFFFF99; 26 txtBanner.border = true; 27 28 txtBanner.htmlText = '

Home of the legendary Stutz Bearcat

What can we do to put you into a Bearcat today?

'; 29 addChild(txtBanner); Chapter 17: Choosing, Using, and Animating Text www.it-ebooks.info 603 Formatting with HTML and CSS Here’s a line-by-line rundown on the ActionScript. As in the other examples, line 1 creates the TextField object called txtBanner. The next three lines also create objects. Line 2 creates an instance of the StyleSheet class, and lines 3 and 4 create instances of the more generic Object class. You use these objects to hold the CSS declarations. That’s exactly what’s going on in lines 6 through 13. Values are being assigned to the h1Style object, and then the pStyle object. Note that the property names have been changed slightly. That’s because ActionScript jumps into action when it sees a minus sign (-). Instead, these properties eliminate the hyphen and use an uppercase letter for the word following the hyphen. So where the CSS property is named font-family, the ActionScript property is named fontFamily. Lines 15 and 16 use styleSheet’s setStyle() method. The first parameter in the parentheses defines the selector: h1, the heading style, in line 15 and p, the paragraph style, in line 16. The second parameter in each case is the object that was created to hold the declarations. These are ActionScript’s substitute for a declaration block with those paired sets of properties and values. The styleSheet Object now has formatting instructions for two tags that it’s likely to encounter in an HTML document. Line 17 assigns the styleSheet object to txtBanner’s styleSheet property. Lines 19 through 26 are the ActionScript code that formats the text field. There’s no CSS here; it’s just straight ActionScript. Line 28 gets back into the CSS business. When you format with CSS, you pass the string to the text field using the htmlText property. The string itself is formatted like HTML, but instead of embedding formatting specs, it uses style tags. This little snippet uses two tags, first the

tag for the heading, and then the

tag for its rather skimpy paragraph. With CSS, you need to assign the StyleSheet property before you put text in the text field. The last line adds the txtBanner to the Display List for the world to see. Figure 17-7 shows how the CSS-formatted text looks. Note Flash is very fussy about its style sheets. If it’s unable to read or use any of the styles, it tends to ignore the entire style sheet. The result is that no formatting is applied. Figure 17-7 This text is formatted with CSS. Styles are applied to the paragraph

tag and to the heading 1

tag. You can create CSS styles within your ActionScript code, or you can load an external CSS file. There are quite a few things missing from Flash’s version of CSS. First of all, you can assign only one StyleSheet at a time to a text field’s styleSheet property. One of the handy things about CSS is the way you use multiple style sheets for the formatting chores. Another feature missing from Flash’s HTML capabilities is tables, causing moans among web-savvy designers. Web designers like to use tables to format and organize text and pictures. 604 flash CS6: The Missing Manual www.it-ebooks.info Formatting Text with an External CSS File One of the great features of CSS for designing web pages is that you can use a single external file (called a CSS style sheet) to format many web pages. Want to change the color of a heading? Simply change the definition in the style sheet, and that changes the look of all the web pages. You can use external CSS style sheets with Flash projects, too—just keep in mind the limitations of HTML and CSS in Flash mentioned in the previous section. Formatting with HTML and CSS Note There are two files for this project, 17-7_External_CSS.fla and 17-8flashText.css. You can find both at www.missingmanuals.com/cds/flashcs6mm. Both files need to be in the same folder to test the code. To start this exercise, you need a file that defines CSS styles. You can download 17-8flashText.css from the Missing CD site or create your own using a text editor. It’s short and sweet: p { font-family: Arial; font-size: 12px; font-weight: normal; } h1 { font-family: Arial; font-size: 24px; font-weight: bold; color: #800000; } This external CSS file defines the same CSS styles that were used in the previous example—the paragraph

tag and the heading 1

tag. Most CSS style sheets are more complicated than this, but as an example, this works just fine. The ActionScript code that uses this external file needs to do a few things: • Load the external CSS file. • Read (parse) and store the CSS style instructions. • Apply the CSS styles to a text field rendered as HTML. • Display the text field. • Assign text with HTML tags to the htmlText property of the text field. Here are the steps to load an external CSS style sheet and use the styles with code created in ActionScript: Chapter 17: Choosing, Using, and Animating Text www.it-ebooks.info 605 Formatting with HTML and CSS 1. Create an instance of the URLLoader class. var loader:URLLoader = new URLLoader(); The URLLoader class is used to load external files that reside on a computer or on the Internet. 2. Register an event listener that triggers when the CSS file has completed loading. loader.addEventListener(Event.COMPLETE, loadCSSListener); The URLLoader class triggers an event when a file has loaded. When that event triggers, the function loadCSSListener() will run. 3. Create an instance of the URLRequest class to identify the CSS file to be loaded. var request:URLRequest = new URLRequest("17-8flashText.css"); The URLRequest class is used to identify files by filename and if needed, a path. In this case, just the filename is used because 17-8flashText.css is to be stored in the same folder as the Flash project. 4. Use the load() method to load the CSS file. Use “request ” as the parameter for the load method. loader.load(request); Adding an extra blank line here sets the function for the event listener off from the rest of the code. 5. Create the function that runs when the loader event is complete. function loadCSSListener(evt:Event):void { The rest of the statements in this exercise are part of this function, which ends with the closing curly bracket. 6. Create an instance of the StyleSheet class. var cssFlashStyles:StyleSheet = new StyleSheet(); The StyleSheet class holds CSS style definitions. 7. Read the data in the external CSS file (flash_text.css) and store the data in the style sheet cssFlashStyles. cssFlashStyles.parseCSS(URLLoader(evt.target).data); 8. The process of reading and processing the CSS definitions is called parsing. The method parseCSS is part of the StyleSheet class. Create an instance of the TextField class with the variable name txtBanner. var txtBanner:TextField = new TextField(); 606 flash CS6: The Missing Manual www.it-ebooks.info The text field txtBanner displays text stored in one of two properties—the text property or the htmlText property. Formatting with HTML and CSS 9. Position and size the txtBanner, and then format the background and border. txtBanner.x = 60; txtBanner.y = 120; txtBanner.width = 200; txtBanner.height = 120; txtBanner.autoSize = TextFieldAutoSize.LEFT; txtBanner.background = true; txtBanner.backgroundColor = 0xFFFF99; txtBanner.border = true; txtBanner.borderColor = 0x800000; These statements aren’t related to CSS, and their formatting applies to the entire text field. 10. Add txtBanner to the Display List. addChild(txtBanner); Adding txtBanner to the Display List makes it visible on the stage. 11. Assign the cssFlashStyles to the styleSheet property of txtBanner. txtBanner.styleSheet = cssFlashStyles; It may seem a little backward, but the style sheet needs to be applied before the text is assigned to txtBanner. 12. Assign a string of text to txtBanner’s htmlText property. txtBanner.htmlText = '

Home of the legendary Stutz Bearcat

What can we do to put you into a Bearcat today?

'; } The text assigned to the htmlText property of txtBanner is a string literal. The HTML tags

and

are embedded within the string. 13. Save your Flash file 17-7_External_CSS.fla in the same folder as the CSS file 17-8flashText.css . If you don’t store the two files in the same folder, then you need to provide complete path information in the URLRequest, as in step 3. When you test the movie, Control→Test Movie, you see text formatted as shown in Figure 17-8. The style definitions are identical in this example and the previous example, where CSS styles were written into the ActionScript code, so the results look the same. Chapter 17: Choosing, Using, and Animating Text www.it-ebooks.info 607 Choosing the Right Text Formatting System Figure 17-8 The text for this banner was formatted using an external CSS style sheet. You may want to use this method when ­websites have pre-existing style sheets. In general, using external CSS style sheets gives you more flexibility, because you can change the appearance of text inside of your Flash project by simply editing the style sheet. As long as the name and location of the external CSS file stay the same, you don’t even need to fire up Flash or ActionScript or republish your .swf files. How cool is that? Choosing the Right Text Formatting System So far this chapter has described four different ways to format text in Flash animations. How do you choose the right technique for your project? Here are some general guidelines about when to use Flash’s Properties panel, ActionScript’s TextFormat object, HTML, or CSS to format text in your Flash projects: • Use the Properties panel for its ease of use and when you make all your formatting decisions as you design the animation. • Use ActionScript’s TextFormat object when you need to make changes to your text while the animation is running. • Use ActionScript’s TextFormat object when you want to work quickly and your project creates TextField objects on the fly. • Use HTML if you have lots of text already formatted in HTML or if your workgroup requires it. • Use HTML or CSS when you want to embed hyperlinks in dynamic text. • Use CSS if you’re working on a large web-based project that already has established CSS type specs. • Use CSS if you’re working with lots of text and there are timesaving benefits to be gained by separating formatting from content. 608 flash CS6: The Missing Manual www.it-ebooks.info Note When you use HTML and CSS in Flash, you can use only a few of the most common tags and properties. It’s not surprising that these are the tags and properties that are matched by the TextFormat object. If you’re choosing HTML or CSS for a specific feature, make sure that you can use that feature in Flash and ActionScript. You can find a complete list in the ActionScript 3.0 Reference for the Adobe Flash Platform in Flash’s help system. Look under flash.text, and then choose the TextField class. Then choose the htmlText property, and you see a table that lists the tags Flash supports. For CSS, look under flash.text for the StyleSheet class. In its help pages, you see a table listing the CSS properties supported in Flash and ActionScript. Chapter 17: Choosing, Using, and Animating Text www.it-ebooks.info Choosing the Right Text Formatting System 609 www.it-ebooks.info chapter Drawing with ActionScript 18 I f you were one of those kids who loved the Etch-A-Sketch, then you’re probably going to love this chapter. With ActionScript, you can draw lines and shapes in your Flash animations. The great advantage of drawing with ActionScript is that your animations can draw new objects on the fly. This chapter will introduce the Graphics class and all the power it puts at your fingertips. To start with, you’ll learn how ActionScript works with points and lines. You’ll learn about the virtual pen and how, as it moves from one spot to another, you can tell it to draw lines (or not). Then you’ll learn how to draw and display Flash’s builtin shapes, including ellipses, rectangles, and rounded rectangles. There are times when prebuilt shapes won’t do the job, so you’ll see how to draw more complex and irregular shapes using nothing but ActionScript code. To wrap things up, this chapter shows how to move the shapes you’ve drawn about the stage using ActionScript’s TimerEvent to trigger the motion. What’s the Point? It all comes down to the point. Flash’s stage is a mass of points measured by x/y coordinates. In the upper-left corner, there’s a point that’s referenced by 0, 0, which means it’s at the 0 point on the horizontal axis and the 0 point of vertical axis. ­ActionScript describes the point as x = 0 and y = 0. If you put something on the stage and don’t tell Flash or ActionScript where you want to place it, chances are that something will end up at 0, 0. If your stage is one of Flash’s standard sizes, say 550 x 400 pixels, the lower-right corner is 550, 400 or x = 550 and y = 400. When drawing with ActionScript, you can bet that you’ll be dealing with a lot of x/y 611 www.it-ebooks.info What’s the Point? coordinates and a lot of points. If you want to draw a line from one place to another, you need to define two points. If you want to draw a trapezoid, you need to define, at least by inference, the four corner points. Since the point is a building block for all the lines, shapes, and drawings to follow, ActionScript has a special Point class. Not only does the class give you a place to store information about specific points, but it also provides some helpful methods that you can use when you’re working with points and their relationships. For reference, the Point class is part of the flash.geom package. You create instances of the Point class the same way you create other objects in ActionScript, like so: var ptNear:Point = new Point(); When you enter this line of code, you’re doing a couple of things at once. First of all, you’re creating a new variable and providing a variable name, ptNear. The word after the colon declares the data type—in this case, Point. Then, after the assignment operator (=), you use the reserved word new to explain that you’re creating a new instance of an object. The word Point() with its parentheses is the constructor for the Point class. When all is said and done, you’ve got yourself a new instance of the Point class that’s addressed by the variable name ptNear. As you might guess, Point objects have two properties, x and y. You can assign values to these properties to set a point’s location, and if you have the name of a point but you don’t know where it is, you can read these properties to learn its location. ptNear.x = 20; ptNear.y = 20; trace("The location of ptNear is:",ptNear); The first two lines assign values to ptNear, an instance of the Point class. The third line uses that handy trace() statement to place information in the Output panel. In this case, the trace() statement reports: The location of ptNear is: (x=20, y=20) The Point class has just one other property, oddly called length. Thankfully, it’s not referring to the length of the point. That would confuse everyone, including Euclid. In this case, length refers to the length of a line from 0, 0 to the point. It’s a ­read-only property, meaning you can’t assign a new value to length; all it does is report on its value. Most of the interesting and useful features of the Point class are the methods: • distance(). Calculates the distance between two points. Example: distanceBetweenPoints = Point.distance(ptNear,ptFar); • add(). Adds the coordinates of two points and returns another point in x, y values. sumOfPoints = ptNear.add(ptFar); 612 flash CS6: The Missing Manual www.it-ebooks.info • subtract(). Subtracts the coordinates of two points and returns another point in x, y values. What’s the Point? differenceOfPoints = ptNear.subtract(ptFar); • equals(). Tests to see if two points are equal. Useful for creating conditional statements, like if ptBall equals ptGround, then bounce. if (ptBall.equals(ptGround)) bounce(); //run the function Bounce() • interpolate(). Calculates a point between two end points. You use a third parameter, with a value between 0 and 1, to find a point and to determine how close that point is to one or the other of the end points. Think of it as a percentage. ptHalfWay = Point.interpolate(ptNear, ptFar, 0.5); ptQuarterWay = Point.interpolate(ptNear, ptFar, 0.75); The interpolate() method uses three parameters, which as usual make their appearance inside the parentheses. The first two parameters have to be points. The third parameter is a number between 0 and 1; that’s a common ActionScript technique for indicating a percentage. In this case, the closer the number is to 1, the closer the point is to the first point. The closer the number is to zero, the closer it is to the second point. So, in the examples above, the value 0.5 finds the midpoint between ptNear and ptFar. The value 0.75 is closer to the first point, so it finds a point a quarter of the way between the two points. The best way to understand how these methods work is to use them in ActionScript. Follow these steps to see how to run the Point class through some of its paces. Note You can download 18-1_Point_Methods.fla with the following code from the Missing CD ( www. missingmanuals.com/cds/flashcs6mm). 1. Select File→New and choose ActionScript 3.0. Select the first frame on the timeline, and then press F9 (Option-F9). The Actions panel opens. Figure 18-1 shows the Actions panel with some code entered. 2. Type the following code (but not the line numbers at left): 1 2 3 4 5 6 7 8 9 10 var var var var var var var var var var ptNear:Point = new Point(); ptFar:Point = new Point(); distanceBetweenPoints:Number; sumOfPoints:Point; differenceOfPoints:Point; pointBetweenPoints:Point; ptHalfWay:Point; ptQuarterWay:Point; ptBall:Point = new Point(); ptGround:Point = new Point(); Chapter 18: Drawing with ActionScript www.it-ebooks.info 613 What’s the Point? 11 12 ptNear.x = 0; 13 ptNear.y = 20; 14 ptFar.x = 100; 15 ptFar.y = 20; 16 17 distanceBetweenPoints = Point.distance(ptNear,ptFar); 18 sumOfPoints = ptNear.add(ptFar); 19 differenceOfPoints = ptNear.subtract(ptFar); 20 ptBall.x = 200; 21 ptBall.y = 350; 22 ptGround.x = 200; 23 ptGround.y = 350; 24 ptHalfWay = Point.interpolate(ptNear,ptFar,0.5); 25 ptQuarterWay = Point.interpolate(ptNear,ptFar,0.75); 26 27 trace("The location of ptNear is:",ptNear); 28 trace("The location of ptFar is:",ptFar); 29 trace(); 30 trace("A line from 0, 0 to ptNear is",ptNear.length, "long."); 31 trace("The distance between ptNear and ptFar is:",distanceBetweenPoints); 32 trace("If you add ptNear to ptFar you get:", sumOfPoints); 33 trace("If you subtract ptFar from ptNear you get:",differenceOfPoints); 34 trace("This point is half the way between ptNear and ptFar:", ptHalfWay); 35 trace("This point is a quarter of the way between ptNear and ptFar:", ptQuarterWay); 36 trace(); 37 trace("The location of ptBall is:",ptBall); 38 trace("The location of ptGround is:",ptGround); 39 if (ptBall.equals(ptGround)) 40 { 41 bounce(); 42 } 43 44 function bounce():void 45 { 46 trace("I'm bouncing"); 47 } The first 10 lines in the code create instances of objects. All except one are Point class objects. The data type for distanceBetweenPoints is Number. Lines 12 through 15 assign values to the x and y properties to ptNear and ptFar. The next block of statements (lines 17 through 25) show the Point methods discussed in this section. 614 flash CS6: The Missing Manual www.it-ebooks.info If you want to experiment with these methods, you can use these examples as a model. From line 27 to line 38 there are trace() statements that send text to the Output panel. The text inside quotes is displayed literally; the items outside the quotes are the variable names. Most of the variables refer to points, so the Output panel lists the values of their x and y properties. In some cases the output is a distance, which is a number. Line 39 is a conditional if() statement that demonstrates the Point class’s equals property. The two points are equal, because they have the same values for the x and y properties, so the value of the statement ptBall.equals(ptGround) is true. With the condition true, the if statement calls the bounce() function, which is written on lines 44 through 47. The bounce function sends the words “I’m bouncing” to the Output panel, as shown in Figure 18-2. Actions toolbox Open/close sidebar Code panel Beginning with the Graphics Class Figure 18-1 The appearance of the Actions panel changes depending on the way you configure it. Here the Actions toolbox is displayed. You can open or close it by clicking the open/close sidebar button. Working with points is a little abstract, because you can’t really add a point instance to the display list in Flash. It’s good to understand how points work in ActionScript and to be aware of the methods of the Points class, but the fun really begins when you start drawing lines and shapes. Beginning with the Graphics Class With ActionScript, you can draw lines, curves, shapes, fills, and gradients. As with most ActionScript features, this ability comes to you courtesy of a class—in this Chapter 18: Drawing with ActionScript www.it-ebooks.info 615 Drawing Lines case, the flash.display.Graphics class. Using the Graphics class, you can draw on instances of these three classes: Shape, Sprite, and MovieClip. Each of these classes has a graphics property, which, in turn, provides all the properties and methods of the Graphics class. So, for example, if you want to define how a line looks, you use the graphics.lineStyle() method. It looks like this: spriteLine.graphics.lineStyle(3,0x00FF00); Or, if you want to actually draw a line, it looks like this: spriteLine.graphics.lineTo(20,150); Figure 18-2 When you put a reference to a point in a trace() statement, Flash automatically shows the values of the x and y properties. This Output panel shows the results of several Point class methods. The important point to notice about the Graphics class is that it’s a read-only property of the Shape, Sprite, or MovieClip classes. You reference the Graphics class by referencing one of those classes, then the Graphics class itself, and then the property or method of the Graphics class that you want to use. Drawing Lines Think about the steps you take when you draw a line in the real world. You probably have your piece of paper in front of you. You pick up a pen, pencil, or marker. You place the writing instrument down on a specific point on the paper and drag it to another point. If you don’t want to continue with another line, you pick up your pen and the job is done. You pretty much follow those same steps when you draw a line using ActionScript. Here’s a list of the ActionScript steps: • Open a Flash document and the Actions panel. The stage is your paper. • Choose a line style. It’s similar to choosing a pen, pencil, or whatever. • Move to a specific point on the stage. Here’s where you put pen to paper. Note The code for the next line-drawing exercise is included in 18-2_Draw_Line.fla in the Missing CD (www. missingmanuals.com/cds/flashcs6mm). 616 flash CS6: The Missing Manual www.it-ebooks.info • Move to another point, drawing a line in the process, dragging the pen across the paper. Drawing Lines • Stop drawing lines. Lift the pen from the paper. With those generalizations in mind, here are the specific steps to draw a line on the Flash stage: 1. Select File→New and choose ActionScript 3.0. A new, empty Flash document appears. 2. Press F9 (Option-F9). The Actions window opens, where you can enter ActionScript code. 3. In the Actions panel, create an instance of the Sprite class by typing the ­following. var sprtLine:Sprite = new Sprite(); A Sprite is a container like a MovieClip, except it doesn’t have a timeline. Using a Sprite instead of a MovieClip when you don’t need a timeline keeps the size of your .swf slightly smaller. 4. Use the lineStyle() method to set the style for the line you want to draw. sprtLine.graphics.lineStyle(16,0x00FF00); The first parameter inside the parentheses sets the thickness of the line. In this case, setting the value to 16 draws a monster line 16 pixels thick. It’s just as if you typed 16 in the Properties→“Fill and Stroke”→Stroke box. The second number is a color value shown in hexadecimal format. (For more on colors and the hexadecimal format, see page 203.) The lineStyle() method has other parameters that define properties like the opacity of the line or how lines meet at the corners. Often, all you need are the first two parameters, and if that’s the case, you don’t need to worry about the lineStyle() parameters. But in case you do, here’s a rundown on all the lineStyle() parameters: • thickness. Provides a number (0-255) for the thickness of the stroke in points. • color. Provides a color value in hexadecimal format. • alpha. Provides a number from 1 to 0 that indicates a percentage of transparency. • pixelHinting. Provides true or false to change the way Flash Player displays corners. Flash usually has this option set to false, and you seldom need to change it. • scaleMode. Provides one of the following constants to determine how a stroke changes when an object is scaled. NORMAL means the line is scaled Chapter 18: Drawing with ActionScript www.it-ebooks.info 617 Drawing Lines with the object. NONE means the line keeps its thickness when scaled. VERTICAL means the line keeps its thickness if the object is scaled vertically only. HORIZONTAL means the line keeps it thickness if the object is scaled horizontally only. • caps. Provides the constants NONE, ROUND, or SQUARE to set the way the ends of lines appear. • joints. Provides the constants MITER, ROUND, or BEVEL to set the way lines appear when they meet at corners. • miterLimit. Provides a number from 1 to 255 to indicate the limit at which a miter is cut off. The miter in effect trims off the end of a corner when two lines meet. The lineStyle() method does expect to receive these values in a particular order. So, for example, you’d get a confused result if you swapped the color value for the stroke thickness. Or, for example, if you want to provide a NONE constant for scaleMode, you need to provide values for the alpha and pixelHinting parameters, too. It looks like this: sprtLine.graphics.lineStyle(3,0x00FF00,1,false,"NONE"); 5. Move the virtual pen to the line’s starting point: sprtLine.graphics.moveTo(20,50); Think of this statement as moving your pen to a position on the page without drawing a line. Flash expects a value for x and y for parameters for the moveTo() method. Unlike the lineTo() method, moveTo() is similar to picking the pen up from the paper and moving it to a new location. This action doesn’t draw a line. 6. Draw a line to another point. sprtLine.graphics.lineTo(500,380); Think of this move as dragging your pen across the paper. The lineTo () method draws a line from the current point to the point specified in the parentheses. 7. Add the sprtLine Sprite to the Display List. addChild(sprtLine); Until you use the addChild() method to add sprtLine to the Display List, nothing actually appears in the Flash Player. 8. Test the animation. You see a Flash Player stage with a big fat green line running diagonally across the stage, as shown in Figure 18-3. While you might not draw lines as frequently as you draw rectangles and other shapes, it’s still good to have a thorough understanding of lines and the lineStyle() property, because the stroke outline for other shapes works the same way. If you 618 flash CS6: The Missing Manual www.it-ebooks.info want to draw an irregular shape, as described on page 625, then you need to draw a series of connected lines. moveTo(20,50) Drawing Curves Figure 18-3 The ActionScript code starting on page 617 draws a 16-pixelwide green line from the point 20, 50 to the point 500, 380. lineTo(500,380) Drawing Curves When you draw a curve using ActionScript, you need to add one more point to the mix. Think about the way you draw curves in Flash or Adobe Illustrator. You have a line with two anchor points, and you drag control handles from the anchors to create a curve. The line doesn’t travel through the control handles, it’s just geometrically influenced by the position of the handles. ActionScript uses a similar method to create curves, but you have to imagine that there’s a single control point connected to both endpoints. Figure 18-4 shows the concept. By repositioning that control point, you change the shape of the curve. The curveTo() method is similar to the lineTo() method described in the previous section. You’re creating a line from the current position of the virtual pen (one anchor point) to the end point of the curve (another anchor point). The shape of that line is influenced by a control point. When you draw a curve in ActionScript, the control point isn’t visible; it’s defined but doesn’t get displayed on the stage. In the code example here, the control point is marked with an X, and it’s displayed in a text field. It shares the control point’s Chapter 18: Drawing with ActionScript www.it-ebooks.info 619 Drawing Curves x and y values. This code appears in 18-3_Draw_Curve.fla in the Missing CD (www. missingmanuals.com/cds/flashcs6mm). Figure 18-4 ActionScript’s curveTo() method draws curves using a quadratic Bezier equation, but you don’t have to remember that. Just keep in mind that there are two anchor points and one control point. You change the shape of the curve by repositioning the control point, using ActionScript code, naturally. Anchor point Control point Anchor point Anchor point 620 Control point flash CS6: The Missing Manual www.it-ebooks.info 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 var var var var var shpLine:Shape = new Shape(); ptAnchor1:Point = new Point(); ptAnchor2:Point = new Point(); ptControl:Point = new Point(); tfControl:TextField = new TextField(); ptAnchor1.x ptAnchor1.y ptAnchor2.x ptAnchor2.y ptControl.x ptControl.y = = = = = = Drawing Curves 100; 180; 500; 180; 500; 350; tfControl.text = "X"; tfControl.x = ptControl.x; tfControl.y = ptControl.y; addChild(tfControl); shpLine.graphics.lineStyle(16,0x00FF00); shpLine.graphics.moveTo(ptAnchor1.x,ptAnchor1.y); shpLine.graphics.curveTo(ptControl.x,ptControl.y,ptAnchor2.x,ptAnchor2.y); addChild(shpLine); shpLine.graphics.moveTo(0,0); The first line in this example creates a shape. You can create vector drawings in Sprites, Shapes, and MovieClips. Shapes use even less space than Sprites in your Flash animation. The three lines from 2 through 4 create points. The names could be anything, but in this example there’s a hint that two of them are going to serve as anchor points and one will serve as a control point. Line 5 creates a text field that’s named tfControl. Lines 7 through 12 position the three points. You can tell from their y values that ptAnchor1 and ptAnchor2 appear on the same horizontal axis. The ptControl y value is quite a bit below that axis. Line 14 stores an X in the text property of tfControl. (Think: X marks the spot.) Then, the code assigns x and y values of the text box the same values that are in ptControl.x and ptControl.y. Line 17 displays the tfControl text field when it’s added to the Display List using the addChild() method. Line 19 defines a lineStyle(). The moveTo() method on line 20 positions the virtual pen at the first anchor point for the line. Then the curveTo() method is used. The first anchor point was already established by the preceding moveTo() method, so the curveTo() method needs two points. The x and y values of the control point come first, and then come the x and y values of the second anchor point. The addChild() method in line 22 displays the curve. When you test the curve code, it draws a curve similar to the one at the bottom in Figure 18-4. If you want to experiment, you can go ahead and change the x and y values of ptControl in lines 11 and 12. That changes the shape of the curve, and it also moves the x in the text field to mark the new position of the control point. Chapter 18: Drawing with ActionScript www.it-ebooks.info 621 Drawing Built-In Shapes Drawing Built-In Shapes When you graduate from lines to shapes, you get to fill your shapes with a color. The lineStyle() method becomes optional, because shapes don’t have to have an outline stroke. You can draw simple shapes using ActionScript’s built-in methods. The technique is very similar to drawing lines and curves with the addition of the beginFill() method that lets you choose a color and transparency percentage for the fill color. Here’s the step-by-step for drawing a rectangle and a circle in a M ­ ovieClip. You can find all the code in 18-4_Draw_Shape.fla in the Missing CD (www.­missingmanuals. com/cds/flashcs6mm): 1. Select File→New and choose ActionScript 3.0. A new, empty Flash document appears. 2. Press F9 (Option-F9). The Actions panel opens, where you can enter ActionScript code. 3. Type this line into the Actions panel to create an instance of the mcShapes MovieClip class: var mcShapes:MovieClip = new MovieClip(); MovieClip is one of three data types that let you draw vector graphics. The other two classes are Sprite and Shape. 4. Define a lineStyle() for your first shape: mcShapes.graphics.lineStyle(4,0x003300,.75); This statement uses the Graphics class, which is a property of the MovieClip class. As explained on page 617, the lineStyle() method can accept several parameters. This code uses three parameters, and the remaining ones are left unchanged from their original values. The first parameter sets the line or stroke thickness to 4 pixels. The second parameter provides a hexadecimal color value (dark green) for the line color. The third and last parameter sets the transparency for the line to 75%. 5. Define a fill style for your shape: mcShapes.graphics.beginFill(0x339933,.75); The method to fill a shape is beginFill(). The beginFill() method uses only two parameters. The first sets the fill color, a lighter green, and the second sets the transparency to 75%. 6. Position the mcShapes movie clip on the stage: mcShapes.x=mcShapes.y=50; This line sets both the x and y properties of mcShapes to 50 in one statement. You can use this form or use separate statements for each property. 622 flash CS6: The Missing Manual www.it-ebooks.info 7. Use the built-in drawRect() method to define a rectangle. Drawing Built-In Shapes mcShapes.graphics.drawRect(0,0,300,250); The first two parameters for drawRect() set the x and y values for the rectangle. Set at 0, 0, the rectangle is positioned in the upper-left corner of the mcShapes movie clip; but keep in mind that the movie clip is positioned at 50, 50 on the stage. The next two parameters set the rectangle’s width and height values. In this case, the rectangle is 300 pixels wide and 250 pixels high. As with the other vector drawings, even though you’ve defined the object, it won’t be visible until you add it to the Display List. 8. Use the endFill() method to stop filling the shape: mcShapes.graphics.endFill(); The endFill() method doesn’t use any paramaters. 9. Use the addChild() method to display the movie clip mcShapes: addChild(mcShapes); The addChild() method adds the movie clip to the Display List, which makes its contents visible. 10. Test the animation. When the animation runs, the rectangle appears with its registration point (upper-left corner) at 50, 50 on the stage. Though you gave the stroke and fill some transparency, the rectangle looks pretty solid because it’s on a plain white background. 11. Set new colors for the stroke and fill for a second shape, the circle: mcShapes.graphics.lineStyle(4,0x0033CC,.5); mcShapes.graphics.beginFill(0x003333,.5); These are the same methods used in steps 4 and 5, but you’re changing the color values to shades of blue and setting the transparency to 50 percent. 12. Use the built-in drawCircle() method to define a circle and then use the ­endFill() method to stop filling the shape. mcShapes.graphics.drawCircle(275,100,75); mcShapes.graphics.endFill(); To define a circle, you need to provide the drawCircle() method with a center point and a radius. The first two parameters are the x and y values of the center point. The third parameter is the radius, which means this circle will be 150 pixels in diameter. The endFill() method stops filling the shape. 13. Test the animation. When the animation runs, the circle appears overlapping the rectangle as shown in Figure 18-5. The rectangle (the first shape you defined) appears on Chapter 18: Drawing with ActionScript www.it-ebooks.info 623 Drawing Built-In Shapes the b ­ ottom. Both the rectangle and the circle are positioned relative to their container mcShapes, not to the stage. Figure 18-5 These two shapes are drawn on a movie clip that’s positioned at 50, 50 on the stage. The rectangle was defined first, so it appears underneath the circle. ActionScript includes two other built-in shapes, and you use them the same way: Define the stroke and fill, use one of the drawing methods to create the shape, and then use the addChild() method to display the shape. All that varies from shape to shape are the parameters you use to describe them. Here are definitions and a brief explanation for each built-in shape: • drawEllipse(x:Number, y:Number, width:Number, height:Number). The first two parameters position the center of the ellipse. The next two parameters set the dimensions for the ellipse. • drawRoundRect(x:Number, y:Number, width:Number, height:Number, ellipseWidth:Number, ellipseHeight:Number). The first two parameters are numbers that position the rectangle using its registration point. The next two parameters set the rectangle’s width and height. The last two parameters, ­ellipseWidth and ellipseHeight, define the curve for the rounded corners. If the curves are equal, you can set just the first number, ellipseWidth, and ignore the second value. If the curve isn’t equal, use both parameters to set different width and height values. If you entered the statements in this exercise line by line, following the instructions, the code in your Actions panel looks something like this: var mcShapes:MovieClip = new MovieClip(); mcShapes.graphics.lineStyle(4,0x003300,.75); 624 flash CS6: The Missing Manual www.it-ebooks.info mcShapes.graphics.beginFill(0x339933, .75); mcShapes.x=mcShapes.y=50; mcShapes.graphics.drawRect(0,0,300,250); mcShapes.graphics.endFill(); Drawing Irregular Shapes addChild(mcShapes); mcShapes.graphics.lineStyle(4,0x0033CC,.5); mcShapes.graphics.beginFill(0x003333,.5); mcShapes.graphics.drawCircle(275,100,75); mcShapes.graphics.endFill(); The order of the statements in this code is worth a closer look. First of all, even though the addChild() statement precedes the definition for the circle, the circle appears in the movie clip when it’s added to the Display List. This is because its parent, mcShapes, has already been added to the stage. Also, the first shape defined, the rectangle, appears beneath the circle. You can change its position by changing its position in the code. If you want the rectangle to appear on top of the circle in the movie clip, move the code that defines the rectangle to follow the code that defines the circle. Drawing Irregular Shapes When you draw the built-in shapes, ActionScript does a lot of the work for you, but you’re limited to the shapes that ActionScript offers. Sometimes you need to draw irregular shapes. For example, suppose you needed to draw a floor plan for a modern home with a number of odd angles and curves. In that case, you need to draw each line and curve separately. To fill the shape with a color, use the beginFill() method when you begin drawing lines. Then, when you’re finished with the shape, use endFill(). For example, here’s some code that draws a very irregular shape that includes a ­variety of angles and one curved edge (see Figure 18-6). Open a new document and type the following into the Actions panel—or you can use 18-5_Draw_­Irregular_ Shape.fla from the Missing CD (www.missingmanuals.com/cds/flashcs6mm): 1 2 3 4 5 6 7 8 9 10 var mcShapes:MovieClip = new MovieClip(); mcShapes.graphics.lineStyle(4,0x330000,.5); mcShapes.graphics.beginFill(0xFF3300,.5); mcShapes.graphics.moveTo(200,50); mcShapes.graphics.lineTo(300,150); mcShapes.graphics.lineTo(400,150); mcShapes.graphics.curveTo(425,175,400,200); mcShapes.graphics.lineTo(200,200); mcShapes.graphics.lineTo(200,150); Chapter 18: Drawing with ActionScript www.it-ebooks.info 625 Making Drawings Move 11 12 13 14 15 mcShapes.graphics.lineTo(100,150); mcShapes.graphics.lineTo(200,50); mcShapes.graphics.endFill(); addChild(mcShapes); Code line 6 lineTo(300,150) Code line 5 moveTo(200,50) Code line 7 lineTo(400,150) Code line 12 lineTo(200,50) Figure 18-6 This illustration shows the irregular shape drawn by the code. The callouts show the end points for the moveTo(), lineTo(), and curveTo() methods. You can find the complete statements in the code on the previous page. Code line 11 lineTo(100,150) Code line 10 lineTo(200,150) Code line 9 lineTo(200,200) Code line 8 curveTo(425,175,400,200) If you worked your way through the previous sections in this chapter, most of this will look familiar. The first two lines set the line style and the fill color. The third line moves the virtual pen to point 200, 50. Following that are several lineTo() methods with one curveTo() method added for good measure. If you want to match up the code with the lines in the shape, see Figure 18-6. These lines form a closed path when the last lineTo() method ends up back at the beginning: 200, 50. The final line runs the endFill() method. Note Flash fills shapes even if they aren’t entirely enclosed. So, even if line 12 (the line that closes the shape) was missing in the example above, Flash would still apply a fill to the shape that’s defined by the rest of the lines. When you test your animation (Ctrl+Enter on a PC or ⌘-Return on a Mac), you see an image like Figure 18-6. Making Drawings Move As shown earlier in this chapter, you draw lines and shapes on three classes of objects: Shape, Sprite, and MovieClip. In effect, these objects are canvases for the 626 flash CS6: The Missing Manual www.it-ebooks.info drawings. To make drawings move from one location to another, you move the canvas. You can think of the Shape, Sprite, and MovieClip containers as transparent sheets of film with the drawings inked on top. You place the film on the stage. Then to create motion, you reposition the film on the stage. If you want to move objects together, you can place them on the same piece of film. If you want to move them independently, you have to place them on separate pieces of film. Making Drawings Move To make Shapes, Sprites, and MovieClips move, you change those good old friends, the x and y properties. You can make them move in response to mouse clicks or other input from your audience. If you want them to move without prompting, you need to set up the mechanism. Using ActionScript’s TimerEvent to Animate Drawings One popular animation technique makes use of Flash’s TimerEvent. It’s sort of like setting one of those kitchen minute timers, and each time it goes “ding!,” you move the drawing. ActionScript’s Timer class uses two constants: TIMER_COMPLETE and TIMER. In earlier examples (page 476), you saw TIMER_COMPLETE in action. It triggers an event when the time has completely run out. You use the TIMER constant when you want to trigger repeated events at regular intervals. Here’s how it works: When you create an instance of the Timer class, you provide two parameters. The first parameter is called the delay. Think of it as the time in milliseconds before the timer goes “ding!” The second parameter is the repeatCount. Think of it as the number of times you want to reset the timer to run again. So suppose you want to move a drawing every half-second, and you want it to move across the stage in 12 steps. You can set a timer with a delay of 500 and a repeatCount of 12. Then every time the timer sends a TIMER event (ding!), you move the drawing by changing its x and/or y properties. Follow these steps to perform this feat of animation in code. Note You can find a copy of this code in the Flash file 18-6_Animate_Shape.fla on the Missing CD page at www.missingmanuals.com/cds/flashcs6mm. 1. Select File→New and choose ActionScript 3.0. A new, empty Flash document appears. 2. Press F9 (Option-F9). The Actions panel opens, where you can enter ActionScript code. 3. Type this line into the Actions panel to create an instance of the MovieClip class named mcShapes: var mcShapes:MovieClip = new MovieClip(); MovieClip is one of three data types that let you draw vector graphics. Chapter 18: Drawing with ActionScript www.it-ebooks.info 627 Making Drawings Move 4. Create an instance of the Timer class. var tmrMover:Timer=new Timer(500,12); The parameters set the timer’s delay value to 500 milliseconds and the ­repeatCount to 12. 5. Define the line and fill style for the circle. mcShapes.graphics.lineStyle(4,0x000033); mcShapes.graphics.beginFill(0x0099FF,.5); You’ve set the line and fill colors to shades of blue. The code sets no alpha value (transparency) in the line style, so ActionScript assumes it should be 100%—that is, opaque. The fill has an alpha value of .5, making its transparency 50%. 6. Draw the circle with the drawCircle() method and then stop the fill with endFill(). mcShapes.graphics.drawCircle(250,100,75); mcShapes.graphics.endFill(); The first two parameters place the center of the circle at 250, 100 in the movie clip. (You haven’t positioned the movie clip, so Flash automatically positions it at 0, 0.) 7. Add the movie clip to the Display List. addChild(mcShapes); This code adds the movie clip to the Display List, making it visible. 8. Start the timer. tmrMover.start(); The timer starts. 9. Register a TimerEvent listener. tmrMover.addEventListener(TimerEvent.TIMER,timerMoverListener); 10. Write the function for the TimerEvent listener. function timerMoverListener(evt:TimerEvent):void { mcShapes.x = mcShapes.x + 10; } The timerMoverListener() function assigns a new value to the x property of the mcShapes movie clip, which makes it move horizontally. To calculate the new value for x, the function takes the current value of x and adds 10 to it. Each time the TIMER event triggers, the movie clip moves. 628 flash CS6: The Missing Manual www.it-ebooks.info 11. Test the animation. When the animation runs, the blue circle moves across the stage 10 pixels at a time. It moves 12 times and then stops, as shown in Figure 18-7. Making Drawings Move Figure 18-7 This circle is animated to move across the stage through the use of a TimerEvent and the x property of the object that contains the circle—a movie clip. In the example above, if you want to move another object along with the circle, all you need to do is add that object to the movie clip. Suppose you want to move a small square along at the same speed. All you need to do is add one line to step 6 to define the position and size of the square. mcShapes.graphics.drawRect(100,300,75,75); Now, if you test the animation, both the circle and the square move across the stage in sync. Moving Objects Independently The world and your animations don’t always move in lockstep. So to make objects move independently, you can place them in different containers. Here’s a variation on the previous example that places a circle, a rectangle, and a triangle in separate containers. The code uses the Shape class as a container because it keeps the size of the published .swf file at a minimum, but you can do the same thing with Sprites, MovieClips, or any combination. Note You can find a copy of this code in the Flash file 18-7_Move_Three_Shapes.fla on the Missing CD page at www.missingmanuals.com/cds/flashcs6mm. 1 2 3 4 5 6 7 8 var shpCircle:Shape = new Shape(); var shpRectangle:Shape = new Shape(); var shpTriangle:Shape = new Shape(); shpCircle.graphics.beginFill(0x000077,1); shpCircle.graphics.drawCircle(250,100,75); shpCircle.graphics.endFill(); Chapter 18: Drawing with ActionScript www.it-ebooks.info 629 Making Drawings Move 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 shpRectangle.graphics.beginFill(0x009900,1); shpRectangle.graphics.drawRect(200,100,150,100); shpRectangle.graphics.endFill(); shpTriangle.graphics.moveTo(200,150); shpTriangle.graphics.beginFill(0x880000); shpTriangle.graphics.lineTo(300,250); shpTriangle.graphics.lineTo(100,250); shpTriangle.graphics.lineTo(200,150); shpTriangle.graphics.endFill(); addChild(shpRectangle); addChild(shpTriangle); addChild(shpCircle); var tmrMover:Timer = new Timer(250,30); tmrMover.start(); tmrMover.addEventListener(TimerEvent.TIMER,timerMoverListener); function timerMoverListener(evt:TimerEvent):void { shpCircle.x += 3; shpRectangle.x -= 3; shpTriangle.y += 3; } What distinguishes this example from the previous one is that the first three lines create three instances of the Shape class, appropriately named shpCircle, ­shpRectangle, and shpTriangle. Lines 5 through 18 define the objects. None of them have a lineStyle() definition, so they’re all fill and no stroke. The alpha value is set to 1, so they’re completely opaque. The circle and the rectangle are drawn using built-in shapes, but the triangle is drawn line by line. Lines 20 through 22 use the addChild() method to place each shape on the stage. The TIMER portion of the code is similar to the previous example. On line 24 when the tmrMover is created, the delay is set to 250 and the repeatCount is set to 30. This means this timer will tick off events twice as quickly as the earlier example, where the delay was set to 500. Line 27 registers the event listener timerMoverListener(). By using the TIMER constant instead of the TIMER_COMPLETE constant, this timer will trigger 30 events, instead of just one. (For more details, see page 476.) The function timerMoverListener() from line 29 through the last line of the code runs each time the event triggers. 630 flash CS6: The Missing Manual www.it-ebooks.info To move the circle 3 pixels from left to right, this line: Making Drawings Move shpCircle.x += 3; increments the value of the shpCircle’s x property by 3. It’s simply an abbreviated way of saying: shpCircle.x = shpCircle.x + 3; The other two lines in the function work similarly, except that by decrementing the x property, line 31 moves the rectangle from right to left. Line 32 operates on the y property of shpTriangle, so it moves down the stage. Each time the clock ticks, the objects move. There are a couple of ways to make them move at different rates of speed. Make the values smaller, and the objects will move a shorter distance in the same time period. Or, for the most versatility, you can create separate timers for each object. That way, you can change the delay and the intervals, as well as the distance that the objects move. Shapes, Sprites, and Movie Clips for ­Drawings When you create drawings on Shapes, Sprites, and MovieClips, it’s tempting to think you’re placing the drawings inside containers—but you’re not. At least, not in the true ActionScript sense of the word “container.” As explained back in Chapter 14 (page 483), Sprite and MovieClip objects are DisplayObjectContainers, meaning that by using the addChild() method, you can put objects inside a Sprite or MovieClip and the objects will be displayed. Shape, on the other hand, isn’t a DisplayObjectContainer, so how can it show the drawn objects as shown in this chapter? The fact of the matter is, when you draw as described in this chapter, you’re drawing lines and shapes on the canvas or the background of the Shape, Sprite, or MovieClip. It’s not the same thing as using the addChild() method, which adds an object to a DisplayObjectContainer. For example, you can’t position a drawing to appear in front of an object that’s added to a MovieClip using the addChild() method. Here’s an example; the code appears in 18-8_Canvas_Drawing.fla in the Missing CD (www. missingmanuals.com/cds/flashcs6mm): 1 2 3 4 5 6 var tfPoem:TextField = new TextField(); var mcCanvas:MovieClip = new MovieClip(); tfPoem.text = "Twas brillig, and the slithy toves"; tfPoem.x = 110; tfPoem.y = 110; Chapter 18: Drawing with ActionScript www.it-ebooks.info 631 Removing Lines and Shapes 7 8 9 10 11 12 13 14 tfPoem.autoSize=TextFieldAutoSize.LEFT; mcCanvas.addChild(tfPoem); mcCanvas.graphics.beginFill(0x99FFFF); mcCanvas.graphics.drawRect(100,100,200,150); mcCanvas.graphics.endFill(); addChild(mcCanvas); This example has only two objects: a TextField called tfPoem and a MovieClip called mcCanvas. Note that the rectangle isn’t an object in its own right. Lines 4 through 7 define the text field, adding text, positioning it, and setting its autoSize property to accommodate the text. Line 8 places the txtField inside mcCanvas. The text field is now contained in the movie clip, a DisplayObjectContainer. The technique for creating and displaying the drawing is different, though. The rectangle is defined in lines 10 and 11, but that’s done through the graphics property of mcCanvas. It never uses the addChild() method in mcCanvas. This means the rectangle has no index value, and you can’t reposition it in the Display List using a command like addChild() or addChildAt(). The last line of the code adds mcCanvas to the main timeline. When mcCanvas is placed in the main timeline (also a DisplayObjectContainer), then both the rectangle drawn on mcCanvas and the text field that’s contained by mcCanvas are displayed. Removing Lines and Shapes So far, this chapter has shown several ways to draw lines and shapes. This section tells how to make them disappear. The Graphics class has a clear() method. When you use this method, it erases the drawings that were created in the object, resets the line and fill style settings, and moves the virtual pen back to the 0,0 position. The clear() method is a multipurpose cleanup tool. Here’s an example of the clear() method in action. A text field is added to the code that begins on the previous page. This text field serves as kind of a button that, when clicked, triggers the clear() method to remove the drawings on the mcCanvas movie clip. For the complete code, check out 18-9_Clear_Graphic.fla in the Missing CD (www.missingmanuals. com/cds/flashcs6mm): 1 2 3 4 5 6 7 8 9 632 var tfPoem:TextField = new TextField(); var mcCanvas:MovieClip = new MovieClip(); tfPoem.text = "Twas brillig, and the slithy toves"; tfPoem.x = 110; tfPoem.y = 110; tfPoem.autoSize = TextFieldAutoSize.LEFT; mcCanvas.addChild(tfPoem); flash CS6: The Missing Manual www.it-ebooks.info 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 Removing Lines and Shapes mcCanvas.graphics.beginFill(0x99FFFF); mcCanvas.graphics.drawRect(100,100,200,150); addChild(mcCanvas); var txtRemoveRectangle = new TextField(); txtRemoveRectangle.text = "Click here to remove the rectangle"; txtRemoveRectangle.x = 110; txtRemoveRectangle.y = 250; txtRemoveRectangle.autoSize = TextFieldAutoSize.LEFT; addChild(txtRemoveRectangle); txtRemoveRectangle.addEventListener(MouseEvent.CLICK,clickListener); function clickListener(evt:MouseEvent):void { mcCanvas.graphics.clear(); } There are no changes to the code until line 15. A new text field, txtRemoveRectangle, is created, and on the following line, text is assigned to the text property. The text field is positioned on the stage, and the autoSize property is set. On line 20, the ­addChild() method adds the txtField to the main timeline. Lines 22 through 26 create and register an event listener. When you test this code, it looks like Figure 18-8. Figure 18-8 Click the words at the bottom of this animation, and the rectangle disappears. The clear() method removes the vector graphics from the movie clip. Drawings in the movie clip disappear, but items contained by the movie clip, like the text field, remain. Chapter 18: Drawing with ActionScript www.it-ebooks.info 633 www.it-ebooks.info Part Debugging and ­ elivering Your Animation D Chapter 19: Testing and Debugging Your Animation Chapter 20: Publishing and Exporting Chapter 21: Introducing Adobe AIR Chapter 22: Making iPhone Apps Chapter 23: Building Android Apps www.it-ebooks.info 4 www.it-ebooks.info chapter Testing and Debugging Your Animation 19 The odds are against you. When you’re designing an animation and writing ActionScript code, there may be several ways to do it and have it come out right. Unfortunately, there are many more ways you can do it wrong. Maybe you chose a motion tween when you meant to choose a shape tween, or you added content to a frame instead of a keyframe. In ActionScript, a tiny error like using a capital letter in the wrong place or a misplaced semicolon can ruin everything. The more complex your project is, the more errors you’re likely to encounter. The only way to find—and fix—your mistakes before your audience sees them is to test and debug your projects. Yes, troubleshooting can be tedious, time-consuming, and not nearly as much fun as designing and creating a brilliant animation. But if you approach troubleshooting as solving a puzzle or a mystery, it can be fun. Furthermore, Flash Professional CS6 comes with some pretty powerful testing and debugging tools to help you find and squash those bugs. Throughout this book, you’ve seen examples of testing an animation using the Control→Test Movie option (for an example, look ahead to Figure 19-3). This chapter expands on that simple test option, plus it shows you how to test animation playback at a variety of connection speeds. And if you’ve added ActionScript to your animation, this chapter shows you how to unsnarl uncooperative ActionScript code using Flash’s debugging tools. Testing Strategies All your audience ever sees is the finished product, not your intentions. So no matter how sophisticated your animation or how cleverly constructed your ActionScript 637 www.it-ebooks.info Testing Strategies code, if you don’t test your animation and make sure it works the way you want it to, all your hard work will have been in vain. The following section shows you how to prepare for testing from the very beginning by following good Flash development policies. Also, you’ll find out the differences between testing on the stage and testing in Flash Player, along with tips for testing your animation in a web browser. Planning Ahead The more complex your animation, the more you need a thorough plan for testing it. Few of the guidelines in the next two sections are specific to testing in Flash. Instead, they’re tried-and-true suggestions culled from all walks of programming life. Following them pays off in higher-quality animations and reduced time spent chasing bugs. Ideally, you should begin thinking about testing before you’ve created a single frame of your animation. Here are some pre-animation strategies that pay off big: Separate potentially troublesome elements ActionScript actions are very powerful, but they can also cause a lot of grief. Get into the habit of putting them into a separate layer named “actions” at the top of your list of layers, so that you’ll always know where to find it. Putting all your labels into a separate layer (named “labels”) is a good idea, too. With sounds, you may be able to put them in a single layer, or a sounds folder. Reuse as much as possible Instead of cutting and pasting an image or a series of frames, create a symbol and reuse it. That way, if a bug raises its ugly head, you’ll have fewer places to go hunting. You can cut down on bugs by reusing ActionScript code, too. Instead of attaching four similar ActionScript actions to four different frames or buttons, create a single ActionScript method or function and call it four times. Be generous with comments Before you know it, you’ll forget which layers contain which images, why you added certain actions to certain objects, or even why you ordered your ActionScript statements the way you did. In addition to adding descriptive comments to all the actions you create, get in the habit of adding an overall comment to the first frame of your animation. Make it as long as you want, and be sure to mention your name, the date, and anything else pertinent you can think of. You create a comment in ActionScript two different ways, as shown below: // This is an example of a single-line ActionScript comment. /* This type of ActionScript comment can span more than one line. All you have to remember is to begin your multiline comment with a slash-asterisk and end it with an asterisk-slash, as you see here. */ 638 flash CS6: The Missing Manual www.it-ebooks.info Stick with consistent names Referring to a background image in one animation as “bg,” in another animation as “back_ground,” and in still another as “Background” is just asking for trouble. Even if you don’t have trouble remembering which is which, odds are your office teammates will—and referring to an incorrectly spelled variable in ActionScript causes your animation to misbehave quietly. In other words, type Backgruond instead of Background, and Flash may not pop up an error message; your animation just looks or acts odd for no apparent reason. Devise a naming convention you’re comfortable with and stick with it. For example, you might decide always to use uppercase, lowercase, or mixed case. You might decide always to spell words out, or always to abbreviate them the same way. The particulars don’t matter as much as your consistency in applying them. Keep in mind that capitalization counts. Because ActionScript is case-sensitive, Flash treats “background,” “Background,” and “BACKGROUND” as three different names. Testing Strategies Techniques for Better Testing The following strategies are crucial if you’re creating complex animations as part of a development team. But they’re also helpful if it’s just you creating a short, simple animation all by your lonesome. • Test early, test often. Don’t wait until you’ve attached actions to 16 different objects to begin testing. Test the first action, and then test each additional action as you go along. This iterative approach helps you identify problems while they’re still small and easy to pinpoint. • Test everything. Instead of assuming the best-case scenario, see what happens when you access your animation over a slow connection or using an older version of Flash Player. What happens when you type the wrong kind of data into an input text field or click buttons in the wrong order? (Believe this: Your audience will do all of these things, and more.) • Test on different computers. It’s very important to test on a computer other than the one that writes the code. For example, an alien computer may have different fonts installed or a different version of Flash Player or some other support file. Use as much variety as possible in testing. Use Macs and PCs. Use old clunkers and the latest, greatest state-of-the-art machine you can get your hands on. Then test on an underpowered netbook, a smartphone, and a tablet. • Test in different web browsers. If your animation is going to be viewed over the Internet, try it out in different browsers. These days, Microsoft’s Internet Explorer, Apple’s Safari, Firefox, and Google’s Chrome are the most widely used browsers. It’s best to test in each browser. Each of these browsers has several versions in use. For the fewest surprises and complaints, test in the last two or three available versions. chapter 19: Testing and debugging your animation www.it-ebooks.info 639 Testing Strategies • Test blind. In other words, let someone who’s unfamiliar with how your animation is supposed to work test it. In programming circles, this type of testing is known as usability testing, and it can flush out problems you never dreamed existed. • Test in “real world” mode. Begin your testing in the Flash authoring environment, as described in the next section, but don’t end there. Always test your animation in a production environment before you go live. For example, if you’re planning to publish your animation to a website, upload your files (including your .swf file and any external files your animation depends on) to a web server, and then test it there, using a computer running the operating system, connection speed, browser, and Flash Player plug-in version you expect your audience to be running. (Sure, transferring a few files isn’t supposed to make a difference—but it often does.) Chapter 20 covers publishing to the Web, as well as other publishing options. Up to Speed Testing on the Stage vs. Testing in Flash Player Flash gives you several options for testing your animation. You can test on the stage using the Control→Play command, or you can test in Flash Professional, Air Debug Launcher (desktop or mobile), or Device via USB. Testing on the stage is the fastest option, and it’s good for checking your work as you go along, but in order to try out your animation exactly as your audience will see it, you have to choose one of the other options. Here’s some more advice on when to choose each. Testing on the stage is the quick and easy option, using the Controller below the timeline and the associated menu options (Control→Play, Control→Stop, Control→Rewind, Control→Step Forward One Frame, Control→Step Backward One Frame, and Control→“Go to End”). Testing on the stage is quicker than testing in Flash Player, because you don’t have to wait for Flash to compile (export) your Flash document and then load it into the player. Instead, when you test on the stage, Flash immediately plays the timeline frame by frame. Use the loop button and its associated timeline brackets to repeatedly play a selected group of frames. For simple animations and to review a portion of your animation, testing on the stage is easier and quicker than the other testing methods. The downside to testing on the stage is that it doesn’t always test what you think it’s testing. For example, if you test a frame 640 containing a movie clip instance, you don’t see the movie clip playing; you need to dig down into symbol editing mode to test the movie clip symbol. And if your animation contains a button instance and you forget to turn on the checkbox next to Control→Enable Simple Buttons, then the button doesn’t work on the stage—even though it may work perfectly well in a published animation. To test your animation in an environment similar to that of the intended audience, use one of the Control→Test Movie options. When you test an animation by selecting Control→Test Movie→“in Flash Professional” or Control→Test Scene, Flash generates an .swf file. For example, if you’re testing a Flash document named myDocument.fla , Flash generates a file called myDocument.swf (or myDocument_myScene.swf, if you’re testing a scene) and automatically loads it into a testing environment (powered by Flash Player). This option usually shows you exactly what your audience will see, not counting computer hardware and connection differences (page 646). If you started your project from one of the AIR templates, you have the option to use the AIR Debug Launcher for either Desktop or Mobile. Use the “On Device via USB” option to test using a smartphone or tablet connected to your computer. flash CS6: The Missing Manual www.it-ebooks.info Testing on the Stage Testing on the Stage If all you want to do is check out a few simple frames’ worth of action, this is the option to use. It’s also the best choice if you want to see your motion path or not see the layers you’ve marked as hidden. (For the skinny on hiding and showing layers, check out page 138.) The timeline controller buttons under the timeline (Figure 19-1), make it easy to test your animation as you build it. This addition makes the older floating controller (Window→Toolbars→Controller) obsolete. There are some handy menu options that work with the controllers: • Control→Loop Playback. Tells Flash to loop playback over and over again after you click Play on the Controller. Flash keeps looping your animation until you click Stop. If you don’t turn on this option, Flash just plays the animation once. • Control→Play All Scenes. Tells Flash to play all the scenes in your animation, not just the scene currently visible on the stage. Loop brackets Figure 19-1 The easiest way to test part of your animation is with the controller embedded below the timeline. Click the Loop button and position the brackets over the section you want to test. Go to first frame Step back one frame Play Loop Go to last frame Step forward one frame • Control→Enable Simple Frame Actions. Tells Flash to play the actions you’ve added to frames in the timeline. If you don’t turn on this option, then Flash ignores all frame actions. • Control→Enable Simple Buttons. Tells Flash to make your buttons work on the stage. (If you don’t turn on the checkbox next to this option, mousing over a button or clicking it on the stage has no effect.) • Control→Enable Live Preview. Tells Flash to display any components you’ve added to the stage the way they’ll appear in Flash Player. (The components don’t work on the stage, but you see how they’re supposed to look.) If you have components on the stage and you don’t choose this option, then only the outlines of your components appear. • Control→Mute Sounds. Tells Flash not to play any of the sound clips you’ve added to your animation. chapter 19: Testing and debugging your animation www.it-ebooks.info 641 Using the Test Movie Commands If you want to test a particular scene, for example, click the Edit Scene icon in the Edit bar, and then choose a scene to display the timeline for that scene. If you want to test a movie clip symbol, select Edit Symbols to display the timeline for that movie clip. Whether you use the timeline controller or the floating controller, you’ll find the standard play options, similar to your DVD player or iPod: • Stop. Clicking this square button stops playback. (Found only on the floating controller.) • Go to first frame. Clicking this button rewinds your animation. That is, it moves the playhead back to Frame 1. • Step back one frame. Clicking this button moves the playhead back one frame. If the playhead is already at Frame 1, this button has no effect. • Play/Pause. Clicking this right-arrow toggle button alternately runs your animation on the stage and pauses it. Playback begins at the playhead. In other words, playback begins with the frame you selected in the timeline and runs either until the end of your animation, or until you press the Stop button. • Step forward one frame. Clicking this button moves the playhead forward one frame (unless the playhead is already at the last frame, in which case clicking this icon has no effect). • Go to last frame. Clicking this button fast-forwards your animation to the very end. That is, it sets the playhead to the last frame in your animation. Note You can also drag the playhead back and forth along the timeline to test your animation on the stage (a technique called scrubbing). Using the Test Movie Commands Flash’s test modes show you a closer approximation of how your animation will actually appear to your audience than testing on the stage. When you choose one of the Test Movie commands, your animation plays in one of the target environments: Flash Professional, AIR, or “Device via USB.” Test Movie is your best bet if your animation contains movie clips, buttons, scenes, hidden layers, or ActionScript, since it shows you all the parts of your animation—not just the parts currently visible on the stage. Note Motion paths (the lines) don’t appear when you test your animation in Flash Player, for good reason: Flash designed them to be invisible at runtime. If you want to see your motion paths in action, you need to test your animation on the stage. 642 flash CS6: The Missing Manual www.it-ebooks.info Here are the steps for testing an animation in Flash Professional. You use this mode for animations destined for websites or Flash Player: Using the Test Movie Commands 1. Select Control→Test Movie→“in Flash Professional.” The Exporting SWF Movie dialog box in Figure 19-2 appears, followed by your animation running in the Flash Player test window, similar to the one in Figure 19-3. Note If you’re working on an AIR project, you can choose one of the AIR options: “in AIR Debug Launcher (Desktop)” or “in AIR Debug Launcher (Mobile).” Flash remembers your selection, so the next time you can test your animations with Ctrl+Enter (⌘-Return). Figure 19-2 When you see this dialog box, you know Flash is exporting your animation and creating an .swf file. If you’ve tested this particular animation before, Flash erases the .swf file it previously created and replaces it with the new one. Finishing an export can be fast or slow depending on the size and complexity of your animation and your computer’s processing speed and memory. Figure 19-3 Normally, when you select Control→Test Movie or Control→Test Scene, Flash opens up Flash Player in its own window. To control playback, you have a couple of choices: You can choose options from the File, View, C­ ontrol, and Debug menus, or you can rightclick (Control-click) the window, and then choose options from the shortcut menus that appear. chapter 19: Testing and debugging your animation www.it-ebooks.info 643 Testing Inside a Web Page 2. To control playback—to stop the animation, and then rewind it, for example—choose options from the Control menu. If you’re running Windows, the Control menu appears in your movie test window; on a Mac, you get the Control menu in Flash itself. (In Windows, you can also see the Control menu in Flash itself if you turn on tabbed viewing in Preferences. See the box below for details.) 3. To close Flash Player, select File→Close or click the X in the upper-right corner of the window (Windows) or the red button in the upper-left corner of the window (Mac). Note Testing your animation with Test Movie gives you a great sense of what your audience will see. But factors like connection speed and hardware differences come into play when you actually publish your animation, so you’ll want to test your animation in a real-life production setting (using the same kind of computer, same connection speed, and same version browser as you expect your audience to use) before you go live. Testing Inside a Web Page In addition to letting you test your animation, Flash lets you test your animation embedded in a web page. This option lets you see how your animation looks in a web browser based on the animation alignment, scale, and size options Flash lets you set. Here’s how it works. You tell Flash in the Publish Settings window (Figure 19-4) that you want to embed your animation in a web page. Use the settings on the right side of the Publish Settings window to control the behavior of your animation when it runs in a web page. When you choose File→Publish Preview→HTML, Flash constructs an HTML file containing your animation, and then loads it automatically into the web browser on your computer. Note Tucking your animation into a web page is a popular publishing option, but it’s certainly not the only one. The other publishing options, including publishing your animation as a QuickTime movie and as a standalone Flash projector file, are covered in detail in Chapter 20. Gem in the Rough Test Multiple Animations Some folks find a tabbed page—like the tabs in some web browsers—easier to pop back to, especially if they’re trying to test several different animations at once. If you’d rather Flash Player appear in a tabbed page, select Edit→Preferences (Windows) or Flash→Preferences (Mac). 644 In the Preferences window that appears, click the General category. Turn on the checkbox next to “Open test movie in tabs.” Then choose Control→Test Movie. This time, Flash Player appears as a tab. When you click the tab, the Flash Developer menu options change to the Flash Player options. flash CS6: The Missing Manual www.it-ebooks.info Testing Inside a Web Page To test your animation inside a web page: 1. Choose File→Publish Settings. The Publish Settings window appears, as shown in Figure 19-4. Figure 19-4 Flash gives you several publishing options, one of which is embedding your animation inside of an HTML wrapper. The name Flash uses for your HTML file is the name of your Flash document, but with an .html extension. 2. Under Other Formats, turn on HTML Wrapper. Flash displays the HTML options in the right side of the window. 3. Click the Template drop-down menu, and then choose “Flash only.” Click OK. Flash accepts your changes and closes the Publish Settings dialog box. Note For a description of each of the settings on this tab, see page 685. chapter 19: Testing and debugging your animation www.it-ebooks.info 645 Testing Download Time 4. Choose File→Publish Preview→HTML. The Publishing dialog box appears briefly to let you know Flash is creating an HTML file. When the dialog box disappears, Flash loads the completed HTML, including your embedded animation, into the web browser on your computer (Figure 19-5). Right-clicking (Windows) or Control-clicking (Mac) the running animation shows you standard menu options you can use to control playback inside the browser, although how many options you see depends on whether you turned off the checkbox next to “Display menu” in the Publish Settings dialog box. Figure 19-5 In addition to creating an HTML file, choosing File→Publish Preview→HTML launches your web browser preloaded with that file. Testing Download Time If you’re planning to publish your animation on the Web, you need to know how long it takes your animation to download from a web server to somebody’s computer. Chapter 20 gives you several optimization techniques, including tips for preloading content and reducing your animation’s file size; but before you begin to optimize your 646 flash CS6: The Missing Manual www.it-ebooks.info animation, you need to know just how bad the situation is and where the bottlenecks are. The following sections show you how. Testing Download Time Simulating Downloads You could set up a bank of test machines, each connected to the Internet at a different transfer speed, to determine the average download time your audience will eventually have to sit through. But Flash gives you an easier option: simulating downloads at a variety of transfer speeds with the click of a button. The simulation takes into consideration any additional, non-Flash media files that you’ve included in your animation, like sound and video clips. To simulate different download speeds: 1. Choose Control→Test Movie→“in Flash Professional.” The Flash Player (test window) appears. 2. Select View→Download Settings (Figure 19-6), and then, from the submenu, select the connection speed you expect your audience to be running. Your choices range from 14.4 (1.2 KB/s) to T1 speed (131.2 KB/s). If you need to simulate a faster speed, check out Figure 19-7. Figure 19-6 If you’re used to testing your animation inside the Flash development environment, you may be shocked when you see how long it takes to download and play your animation over the web. Flash automatically adjusts for standard line congestion to give you a more realistic picture. So, for example, when you choose the 14.4 KB/s setting, Flash actually simulates the transfer at the slightly lower rate of 12.0 KB/s. chapter 19: Testing and debugging your animation www.it-ebooks.info 647 Testing Download Time Note Unless you’re planning to let only certain folks view your animation (for example, students in your company’s training classes), you can’t possibly know for sure what connection rates your audience will be using. The best approach is to test a likely range. If the animation plays excruciatingly slowly at the lowest connection speed in your test range, consider either optimizing or offering a low-bandwidth version. Chapter 20 (page 671) tells you how. 3. Choose View→Simulate Download. The test window clears, and Flash plays your animation at the rate it would play it if it had to download your file from a web server at the connection speed you chose in step 2. Figure 19-7 To keep up with the latest advances in transfer technology, you can select a faster transfer rate than any of the options Flash has. To do so, select View→Download Settings→Customize, and then type a label and the new transfer speed you want to test (from 1 byte per second to 10,000,000). Note The download simulator does not calculate the download time for external assets, such as photos that are downloaded when the animation is running. 4. Repeat steps 2 and 3 for each connection speed you want to test. Often, you’ll find that your animation takes too long to play at one—or even all—of the simulated connection speeds you test. Fortunately, Flash gives you additional tools to help you pinpoint which frames take longest to download (so that you know which frames to optimize). Read on for details. Pinpointing bottlenecks with a bandwidth profiler report Simulating downloads at different connection speeds gives you a general, overall feel for whether you’ll need to optimize your animation or give your audience a low-bandwidth alternative (or both). But to get more precise information, like which frames represent the greatest bottlenecks, turn to the bandwidth profiler report (Figure 19-8). 648 flash CS6: The Missing Manual www.it-ebooks.info Testing Download Time To generate a bandwidth profiler report: 1. Choose Control→Test Movie→“in Flash Professional.” The Flash Player (test window) appears containing your running animation. Coders’ Clinic Size Reports Flash has a second statistical report called a size report. To create a size report, choose File→Publish Settings→Flash→Advanced, and then turn on the “Generate size report” checkbox. Make sure you can see the Output window (Window→Output). Then, when you choose File→Publish, Flash displays the size report in the Output window. It also automatically generates a text file named yourFlashFile Report.txt that you can pull into a text editor or word processor. This report provides detailed information about the elements that add to the size of the published .swf file. It thoroughly breaks down the details frame by frame, giving a running total of the file size in bytes. A summary lists scenes, symbols, and fonts and shows how the shapes, text, and ActionScript code add to the heft of your published file. If you’re suffering from file bloat, generate a report to see which images, symbols, sounds, or other elements are causing the problem. 2. In the test window, select View→Bandwidth Profiler. In the top half of the window, Flash displays a report similar to the one in ­Figure 19-8. Frame number and size Frame size graphed Figure 19-8 Flash assumes you want it to display your bandwidth reports in Streaming Graph format, as shown here, unless you tell it otherwise. Unfortunately, analyzing the graph on this kind of report can be tricky; to match a stacked segment to a particular frame, you have to click the stacked segment. When you do, Flash displays the associated frame in the Frame field on the left side of the report. chapter 19: Testing and debugging your animation www.it-ebooks.info 649 Testing Download Time 3. Select View→Frame By Frame Graph. The graph Flash displays when you choose the Frame By Frame option makes detecting rogue frames much easier than if you stick with Flash’s suggested View→Streaming Graph option shown in Figure 19-8. Figure 19-9 has an example of a Frame By Frame graph. Figure 19-9 On the left side of this Frame By Frame bandwidth profiler report, you see animation properties pertinent to playback, including the .swf file size and the stage dimensions and frame rate you set in Flash. The right side of the report shows you a ­frame-by-frame picture of the download process. Frame bars that appear above the red line (here, Flash has drawn the red line at 1.4 KB) mean a wait for data. So Frame 2 is the obvious slow-playing culprit in this animation. 4. Select View→Simulate Download. The progress bar at the top of the bandwidth profiler report moves as Flash simulates a download. The report gives you information you can use to figure out which frames of your animation are hogging all the bandwidth. You’ll find a timeline and a playhead at the top of the report. As your animation plays, the playhead moves along the timeline to help you see at a glance which frames are causing Flash to display those tall bandwidth-hogging frame bars. Preload, the most useful number, tells you how long your audience has to sit and wait before your animation begins. These are the details you’ll find in the bandwidth profiler report: • Dimensions (Dim). The width and height of the stage in pixels. • Frame rate (Fr rate). The frame rate you set for this animation. • Size. The size of the .swf file Flash created when you exported (began testing) the movie. • Duration. The number of frames in this animation, followed by the number of seconds the frames take to play based on the frame rate you set. • Preload. The total number of seconds it takes Flash to begin playing the animation at the bandwidth setting you chose. 650 flash CS6: The Missing Manual www.it-ebooks.info • Bandwidth. The connection simulation speed you chose by selecting View→Download Settings. Testing Download Time • Frame. The frame Flash is currently loading. If your animation played just fine, try testing it using a slower simulated connection. (Your goal is to make sure as much of your potential audience can enjoy your animation as possible—even folks running over slow connections and congested networks.) To do this test, redisplay the bandwidth profiler report, this time using a different connection simulation speed: 1. Choose View→Download Settings. A submenu appears, showing a list of possible connection simulation speeds, like 28.8, 56K, and T1. 2. Choose the new simulation speed you want to test. Then choose View→Simulate Download again. A new bandwidth profiler report appears, based on the new connection speed. Up to Speed The Flash Player View Menu Options Flash Player has several menu options that you can use to change the way your animation appears as it’s playing. If you turn on the checkbox next to Display menu in the Publish Settings→HTML dialog box (coming up in Figure 20-1), your audience can see some of these same options, by right-clicking (Windows) or Control-clicking (Mac). If you’re running a Mac, the following menu options don’t appear directly in Flash Player; instead, they appear in the Flash menu: • View→Zoom In. Tells Flash to enlarge your animation. This option is useful if you want to examine your artwork close up. • View→Zoom Out. Tells Flash to shrink your animation. • View→Magnification. Displays a menu of percentage options you can choose from to tell Flash to enlarge or shrink your animation. • View→Bandwidth Profiler. Creates a bandwidth profiler report. • View→Streaming Graph. Tells Flash to display download data in stacked bars when it creates a bandwidth profiler report (Figure 19-8). • View→Frame By Frame Graph. Tells Flash to display the download time for each frame separately when it creates a bandwidth profiler report (Figure 19-9). • View→Simulate Download. Tells Flash to pretend to download your animation from a web server based on the download settings you select using View→Download Settings. • View→Download Settings. Displays a list of connection speeds, from 14.4 to T1, to test the download speed of your animation on a variety of different computers. • View→Quality. Tells Flash to display your animation’s artwork in one of three different quality modes: low, medium, or high. Flash assumes you want high quality unless you tell it differently. (Choosing low or medium quality doesn’t reduce simulation download time, but reducing image quality in the Flash authoring environment does reduce your animation’s file size, which in turn speeds up download time.) • View→Show Redraw Regions. Displays borders around the moving images in your animation. chapter 19: Testing and debugging your animation www.it-ebooks.info 651 The Art of Debugging The Art of Debugging Imagine, for an instant, that your animation isn’t behaving the way you think it should. Testing it on the stage or in Flash Player, and then eyeballing the results, as described in the previous section, is a good place to start tracking down the problem. But if you’ve added ActionScript to your animation, chances are you need more firepower. You need to be able to examine the inner workings of your ActionScript code—the variables, instance names, methods, and so on—to help you figure out what’s wrong. Debugging is one of those activities that’s part art, part craft, and part science. Flash and ActionScript provide several tools that help you track down and eliminate those pesky bugs of all types. These are some of the tools at your disposal: • The Check syntax button catches the most obvious typos. If you’ve got too many parentheses in a line or you misplaced a comma or semicolon, the syntax checker is likely to notice. Still, it lets lots of the bad guys through. • The Compiler Errors panel is the next layer of defense against bugs. If there’s a flaw in your code’s logic (for example, a reference to some object that doesn’t exist or is misnamed), a message is likely to appear in the Compiler Errors panel. Sometimes your animation will run anyway; other times it won’t. • The Output panel displays messages. Using the trace() statement, you can display the values of variable and object properties in the Output panel. So you get to tell ActionScript what to report on. • The Debugger is your debugging power tool. It’s kind of like the diagnostic machine your mechanic connects to your car to see what’s going on inside. The debugger combines the usefulness of the other tools with the all-important ability to stop your animation and code in its tracks. That gives you an opportunity to examine the critical variables, property settings, and values. Note The debugger for ActionScript 3.0 is different in a few ways from the debugger for ActionScript 2.0 and 1.0 code. For details on the older debugger, see Flash CS3: The Missing Manual. You’re likely to use the first three tools as you’re writing and testing your animation. As your code gets more complex, with multiple timelines, multiple objects, and multiple functions and methods, you’ll turn to the debugger. This section starts off with the quick and easy bug squashers, and then moves on to the more complex. The troublesome program attached to that diagnostic machine is called 19-1_Debug_Code.fla, and you can download it from the Missing CD page at www.missingmanuals.com/ cds/flashcs6mm. If you’d like to see how the program is supposed to behave, check out 19-2_Debug_Code_done.fla. Checking with the Syntax Checker The animation 19-1_Debug_Code.fla isn’t behaving the way it should—pretty ornery for a snippet of code that’s only 20 lines long. It’s supposed to draw lines on the screen from one random point to another. The lines are supposed to randomly vary 652 flash CS6: The Missing Manual www.it-ebooks.info in thickness, color, and transparency. There are four text fields in the display that are supposed to flash the x/y coordinates of the points used to draw the lines. If you try to test the program with Ctrl+Enter (⌘-Return), nothing much happens. The first step to putting things on track is to use the “Check syntax” button in the Actions panel, as shown in Figure 19-10. Check syntax The Art of Debugging Figure 19-10 The “Check syntax” button looks like a checkmark. One click, and Flash proofreads your code to find typos and punctuation errors. 1. With 19-1_Debug_Code.fla open in Flash, select Window→Actions. The Actions panel opens. The Actions panel can look different depending on how you’ve set up your workspace. It also remembers some of the settings, like which panels are open and closed, from the last time you used it. 2. If you don’t see code in the Actions panel, then in the animation’s timeline, click Frame 1 in the actions layer. The Actions panel shows the code associated with particular frames in the timeline. It’s not a problem with this little snippet, but with larger animations if you don’t see the actions you want to debug, make sure you’ve selected the frame that holds the code. 3. In the Actions panel, click the “Check syntax” button. The “Check syntax” button looks like a checkmark. After a little deep thinking, you hear a ding, which occurs whether there’s an error or not. chapter 19: Testing and debugging your animation www.it-ebooks.info 653 The Art of Debugging 4. Click the Compiler Errors panel, and look for an error message. If everything is okay, you won’t see any message. If “Check syntax” found an error, a message appears in the panel. The Compiler Errors panel’s location may vary depending on how you’ve organized your workspace. If you’re using the Essentials workspace, it appears beneath your animation. (And if you’re wondering what the heck a compiler is, see the box on page 655.) Up to Speed Deciphering the Actions Panel’s Color Code One quick way to spot problems in your ActionScript code is to examine the colors Flash uses to display your code in the Actions panel. 2. In the Preferences panel that appears, select the ActionScript category. Make sure the checkbox at “Syntax colors: Code coloring” is turned on. Right out of the box, Flash displays ActionScript keywords and identifiers in blue, comments in light gray, text strings (text surrounded by quotes) in green, and stuff it doesn’t recognize in black. So if you notice a function call or a property that appears black, you know there’s a problem. A properly spelled function call or property should appear blue (unless it’s a custom function), so if it’s black, chances are your finger slipped. 3. Click the color pickers next to Foreground, Keywords, Identifiers, Background, Comments, and Strings to choose different colors for each of these ActionScript code elements. For example, if you have trouble making out the text strings in your scripts due to red-green color blindness, you can change Strings to a different hue. If Flash’s ActionScript coloring scheme is too subtle for your tastes, you can change the colors it uses. To change colors: 1. Select Edit→Preferences (Windows) or Flash→Preferences (Mac). For this animation, the message in the Compiler Errors panel looks like ­Figure 1911. As helpful as these details are, sometimes your view of the issue and the compiler’s view aren’t coming from the same direction, so the messages may seem a bit cryptic. In this case, you’re told the error is on Line 11. The error’s description is: 1086: Syntax error: expecting semicolon before dot. That’s a little on the cryptic side, but it means there’s probably something wrong with the way the line is punctuated. Double-clicking the error message puts your cursor in the offending line in the Actions panel. 5. Examine the highlighted line for a syntax error. Here’s where you get into the grunt work of debugging: looking through your code to find out where there might be a problem. Flash is a lot fussier about punctuation than your third-grade teacher, so double-check to make sure there are commas between parameters and a semicolon at the end of the 654 flash CS6: The Missing Manual www.it-ebooks.info line. Parentheses are another place where it’s easy to make a mistake. In any statement (from the beginning of the line to the semicolon), there should be an equal number of left parentheses and right parentheses. And yes, they all need to be in the right spots, too. But it’s so easy to mess up on parentheses that counting is a legitimate debugging technique. In the code in line 11, there’s one extra closing parenthesis before the comma: The Art of Debugging var ptStart:Point = new Point(Math.random() * 550),Math.random() * 400); Location Compiler Errors tab Description Figure 19-11 The messages in the Compiler Errors panel have two parts. The Location part tells you where the error is, and the Description part tells you how the compiler sees the error. 6. Delete the error, and then click “Check syntax” again. This time, you hear the ding, but there’s no error message. That’s fine as far as it goes. With ActionScript 3.0 code, all the syntax checker does is check the punctuation and a few other details of your code. The Syntax checker works quickly because it doesn’t actually compile your code. That means it doesn’t catch nearly as many errors as you find when you test your animation using Ctrl+Enter (⌘-Return). Up to Speed What’s a Compiler and Why Does It Err? When you write ActionScript code, you name objects and write statements in a language that’s relatively understandable by humans. Your computer, however, speaks a different language altogether. When Flash compiles your ActionScript code, it translates the code from your human language to the computer’s machine language. When Flash comes across statements that don’t make sense, it says “Aha! A compiler error!” For example, one very common compiler error is the simple misspelling of an object’s name. Flash and ActionScript are very literal. If there’s a misplaced letter or even an error in capitalization in a word, that’s an error. For example, if your program has a variable named myBall and you mistakenly type in myball, ActionScript sees that second reference as an undefined object and a compiler error. Anything that prevents the compiler from successfully identifying all the objects and values and performing all the methods in your program results in an error. chapter 19: Testing and debugging your animation www.it-ebooks.info 655 The Art of Debugging Finding Errors with the Compiler Errors Panel When you test your animation using Control→Test Movie or by pressing Ctrl+Enter (⌘-Return), Flash creates an .swf file. That’s the same as the finished file you distribute or put on a website so the world can see your animation. In the process, your ActionScript code is translated into a computer language that’s smaller and faster than your ActionScript. The process of compiling your code is likely to catch mistakes that the “Check syntax” button misses. (See the box on page 655 for more details.) Note This example continues debugging the file 19-1_Debug_Code.fla. The entire process began on page 652. 1. Test your animation using Ctrl+Enter (⌘-Return). An error appears in the Compiler Errors panel, as shown in Figure 19-12. (It could be worse; sometimes you see seven or eight errors stacked up in the panel.) This error didn’t appear when you clicked the “Check syntax” button in the previous exercise, because “Check syntax” doesn’t compile the code. Obviously, the compiler choked on something you’re trying to feed it. The Compiler Errors panel reports that the location of the error is “Scene 1, Layer ‘actions’, Frame 1, Line 7.” That’s very helpful information, and what’s more, when you double-click the error message in the panel, Flash zips you to the Actions panel and finds that point in your code. But before you double-click, read the description of the error: 1120: Access of undefined property sptLines. That’s also a good clue, which explains the problem, at least as far as the compiler sees it. The compiler thinks you’re trying to make a change to a property that doesn’t exist. That property has something to do with sptLines. Figure 19-12 Here the Compiler Errors pane is reporting an undefined property. This type of error is often the result of misspelling an object or a variable’s name. 2. Double-click the error message in the Compiler Errors panel. Flash zips you to the Actions panel and highlights line 4, which reads: addChild(sptLines); 3. Examine the highlighted line for a syntax error. At first this might seem a little puzzling. It’s a simple statement that adds ­sptLines to the Display List, which should make its contents visible on the stage. The compiler error said something about a property, but this line doesn’t seem to 656 flash CS6: The Missing Manual www.it-ebooks.info be changing a property. You know, however, that the compiler sees something it can’t identify, and that’s sptLines. It makes sense to check the code that precedes the error for previous references to sptLines. There aren’t any, and that’s exactly the problem. The variable sprtLines is defined in the first line of the code, and the reference to “sptLines” is a typo. The Art of Debugging 4. In line 7, correct the spelling of sprtLines, and then test the animation. This time, 19-1_Debug_Code.fla is a little more entertaining. The animation draws random lines on the stage. The lines vary in thickness, color, and transparency. But the text boxes, like the one that reads start X, don’t change or provide any other information. Looks like there’s more debugging to do. Note The animation 19-1_Debug_Code.fla uses a very slow frame rate of 2 fps so that each line appears slowly on the screen. If you want to speed up the action, go to Modify→Document and change the frame rate. If you have the Bandwidth Profiler open and the animation doesn’t play as expected, try turning and you have the Bandwidth running the animation with the Bandwidth Profiler closed. Stop the 19-1_Debug_Code.fla when you’re sufficiently entertained. Because there’s no automatic end to the animation, Flash can conceivably draw so many lines that your computer will run out of memory trying to display them. Using the Output Panel and trace() Statement The ActionScript trace() statement is one of the easiest ways to debug your programs—and it delivers a lot of bang for your debugging buck. You get to tell ActionScript exactly what variable value or object you want to keep track of, and Flash obligingly sends the details to the Output panel. Trace() is such an important code-writing tool that it’s used throughout the ActionScript examples in this book. Here’s another good example of the way you can use trace() to understand why your program isn’t behaving as expected. Note This example continues debugging the file 19-1_Debug_Code.fla . The entire process begins on page 652. When you tested 19-1_Debug_Code.fla in step 4 above, the drawing lines part of the program worked, but the text fields didn’t display information about the points used to start and end the lines. Text fields display strings of text in your animation. There are a few different types of text fields, and you can format them in a number of ways. (For all the details, see page 217.) In this case, the text fields show some of the information that you want displayed, but not all of it. The trace() statement works kind of like a text field. You put the information that you want displayed inside the trace() statement’s parentheses. If you want to display a string of text, put it inside quotes, like this: trace("show this text"); chapter 19: Testing and debugging your animation www.it-ebooks.info 657 The Art of Debugging When your ActionScript code gets to that line, the words “show this text” appear in the Output panel (without the quotes). If you have a variable named strMsg, and its value is “show this text,” then you can write a trace() statement like this: trace(strMsg); This statement would also send the words “show this text” to the Output panel. The Output panel isn’t at all fussy about the data types. Put the name of a variable, an instance of an object, or just about anything inside a trace() statement, and something is bound to appear in the Output panel. If the value is a number, that’s what you see. If it’s a reference to an object, you see the object’s name. Following are some steps to gain a little insight into the problem with the text fields in the file 19-1_Debug_Code.fla. 1. Test the animation as it worked at the end of the previous section. When you test the animation, you see the random lines drawn properly, but you see only part of the text that should be displayed in the text fields, as shown in Figure 19-13. Don’t forget to stop the animation (Control→Stop) or close the window (File→Close). Figure 19-13 When you test the animation draw_random_lines_begin.fla, it displays lines on the stage, but it doesn’t display the point coordinates for the lines as it should. 2. On the stage, click the text fields, and then, in the Properties panel, check the names of the text fields. In your Flash document, the text fields on the stage show text, like “start X” and “start Y.” When you select a text field, you see its name at the top of the 658 flash CS6: The Missing Manual www.it-ebooks.info ­ roperties panel. For example, the text field with the text “start X” is named P txtStartX. The others are named txtStartY, txtEndX, and txtEndY. These are the names of misbehaving text fields, so you’ll look for references to them in your code. The Art of Debugging 3. Select Window→Actions to open the Actions panel. The Actions panel displays this code, which amounts to only 20 lines: 1 import flash.display.Sprite; 2 import flash.geom.Point; 3 4 var sprtLines:Sprite = new Sprite; 5 6 drawRandomLine(); 7 addChild(sprtLines); 8 9 function drawRandomLine():void 10 { 11 var ptStart:Point = new Point(Math.random() * 550,Math.random() * 400); 12 var ptEnd:Point = new Point(Math.random() * 550,Math.random() * 400); 13 sprtLines.graphics.lineStyle(Math.random() *5,Math. random()*0xFFFFFF,Math.random()); 14 sprtLines.graphics.moveTo(ptStart.x,ptStart.y); 15 sprtLines.graphics.lineTo(ptEnd.x,ptEnd.y); 16 txtStartX.text = "start X: " + ptStart.x; 17 txtStartY.text = "start Y: " + ptStart.y; 18 txtEndX.text = "end X: " + ptEnd.x; 19 txtEndY.text = "end Y: " + ptEnd.y; 20 } 4. Search for lines with references to the misbehaving text fields: txtStartX, txtStartY, txtEndX, and txtEndY. In lines 16 through 19, values are assigned to the text fields’ properties. Each value is made of two parts, a string literal with text like “start X:” and then the string concatenation operator (+) and a reference to an object’s property, like ptStart.x. Looking back up in the code, you see on line 11 that the data type for ptStart is Point. The reference ptStart.x is a reference to the x property of a point. That value is a number. Still, there’s nothing apparently wrong with the code. 5. Insert a line after line 15, and then type the following trace() statement: trace("start X: " + ptStart.x); The text inside the parentheses is exactly the text that’s supposed to appear in the text field. In fact, you can copy and paste to create the line. Copying and chapter 19: Testing and debugging your animation www.it-ebooks.info 659 The Art of Debugging pasting is a good technique for an operation like this, because you’ll be sure the text in the two statements is identical. Tip If you don’t see your trace() statement in the Output panel, select File→Publish Settings→Flash, and make sure the “Omit trace actions” checkbox is turned off. 6. Test your animation using Ctrl+Enter (⌘-Return) and examine the Output panel. When you run your animation, the Output window starts to fill up with lines like: start X: 549.6419722447172 start X: 499.13692246191204 start X: 239.57312640268356 start X: 64.5334855420515 Comparing the Output panel details, you see that your text fields display the string literals, like start X:, but they aren’t displaying the numbers with all those decimal places. Those long numbers are generated by the random() method used earlier in the code. For example, the value for ptStart.x is created in line 11 with the statement: var ptStart:Point = new Point(Math.random() * 550,Math.random() * 400); This line creates a new variable called ptStart. Its data type is Point, which includes x and y properties. At the same time that the new instance of Point is being created, values are assigned to those x and y properties. Instead of providing specific numbers, you want to provide random numbers that change every time the drawRandomLine() method runs. So the statement uses a method that’s provided by the Math class. The section of the statement that reads M ­ ath.­random() * 550 is in effect saying, give me a random number between zero and 550 (the width of the stage). Likewise, the next bit of code is providing a number for the y property that matches the height of the stage. Math.random() is providing a number with a little more precision than is necessary for this snippet of a program. In fact, the number is too long to fit in the text field. 7. Select the txtStartX text field on the stage, and then in the Properties panel, change the width to 550. The width of the text field expands so it’s the length of the stage. 8. Test your animation using Ctrl+Enter (⌘-Return). When the animation runs, the entire number is displayed in the txtStartX text field, as shown in Figure 19-14. The x and y properties aren’t displayed in the other text fields. 660 flash CS6: The Missing Manual www.it-ebooks.info Mystery solved. You figured out what’s gone wrong with the code. The solution is a little less than satisfactory—you don’t really need a number that long for this animation. Fortunately, that gives you an opportunity to explore the Debugger in action, as you’ll see in the next section. The Art of Debugging You can delete the trace() statement from your code or you can temporarily leave it in. It doesn’t change the appearance of the animation in any way. A third alternative is to use a handy programmer’s trick called commenting out; see the box below. Figure 19-14 After changing the width of the text field, Flash displays the very long number that represents the x property for your line’s starting point. Trick of the Trade Comment Me Out If you’re planning to keep working on your ActionScript code and think you’ll need to reuse these trace() statements at some point down the road, you don’t have to delete them and then type them in again later. Instead, you can “comment them out” by placing two slashes in front of each line, like this: // trace("start X: " + ptStart.x); When you stick two slashes at the beginning of a line of ActionScript code, Flash ignores everything it finds on the line after those slashes. In other words, it treats the code as if it were a plain old comment. Later, when you want to use that trace() statement again, all you have to do is remove the slashes and you’re back in business. It’s a good idea to remove or comment out trace() statements when you no longer need them. Not only will you avoid cluttering up your Output panel, but there’s a performance boost, too. chapter 19: Testing and debugging your animation www.it-ebooks.info 661 Analyzing Code with the Debugger Analyzing Code with the Debugger When you need as much debugging muscle as Flash can provide, click Debug→Debug Movie→“in Flash Professional.” You may think you’ve fired up a different program, but actually, Flash has merely closed some panels, opened others, and rearranged your view of your animation (Figure 19-15). It also automatically compiles and runs your animation. Your first visit to the debugger can be a little intimidating, but don’t worry. Look around for familiar landmarks, and you’ll soon figure out the purposes of the multiple panels and the messages within: • The Debug Console in the upper-left corner shows buttons (Figure 19-15). You use these to move through your code and to end the debug session. You can also open the Debug Console using menus: Window→Debug Panels→Debug Console. Debug controls Code Figure 19-15 The Debugger shows you what Flash is thinking behind the scenes. This panel shows the instance names, property values, variable names and values, and other ActionScript keywords and statements that either you or Flash added to your animation. Variables Output • The Variables panel below the Debug Console is where you really learn what’s going on in your program. As you work in the debugger, you’ll see variable and object names here, along with their related values. There are probably a lot of unfamiliar words in there, because this panel keeps track of every property for every object in your animation. You don’t need to worry about many of these, 662 flash CS6: The Missing Manual www.it-ebooks.info because Flash takes care of them perfectly well. But when something goes wrong, look up the name of the offending text box, variable name, or object in this list, and you’ll be on your way to a solution. You can also open the Variables panel using menus: Window→Debug Panels→Variables. Analyzing Code with the Debugger • In the upper-right corner, the Scene/Symbol panel is pretty straightforward. It tracks your animation’s current position in the main timeline, scene, or symbol timeline. You see the name of the scene or symbol, the layer that contains code, and the frame number. • The middle panel shows the ActionScript code you wrote, similar to the Actions panel. You can force your program to stop at certain places in your code to give you a chance to inspect the inner workings of the objects. More on that in the next section. • At the bottom is the Output panel, covered earlier in this chapter (page 657). If you’ve used the trace() statement while you were writing code and experimenting with ActionScript, you know how helpful the Output panel can be. Setting and Working with Breakpoints One of the most important debugging tools in any well-stocked ActionScript programmer’s arsenal is the breakpoint. A breakpoint is an artificial stopping point—sort of a roadblock—that you can insert into your ActionScript code to stop Flash Player in its tracks. Setting breakpoints lets you examine your animation at different points during playback so that you can pinpoint where a bug first happens. Flash lets you set breakpoints at specific lines in your ActionScript code. Setting a breakpoint lets you play the animation only up until Flash encounters that breakpoint. The instant Flash encounters a line with a breakpoint, it immediately stops the animation so that you can either examine object property values (as described in the previous section) or step through the remaining code in your action slowly, line by line, watching what happens as you go. Setting breakpoints is a great way to track down logic errors in your ActionScript code. For example, say you’ve created a chunk of code containing a lot of if and switch conditionals or while and for looping statements. Stopping playback just before you enter that long stretch of code lets you follow Flash as it works through the statements one at a time. By stepping through statements in the order Flash actually executes them (as opposed to the order you thought Flash was supposed to execute them), you may find, for example, that the cause of your problem is that Flash never reaches the else section of your if…else statement, or never performs any of the statements inside your while block because the while condition is never met. Note For more information on using if…else, do…while, and other logical statements in ActionScript, check out Colin Moock’s Essential ActionScript 3.0, and ActionScript 3.0 Cookbook, by Joey Lott, et al. Both books have detailed coverage of more advanced ActionScript topics that are beyond the scope of this book. chapter 19: Testing and debugging your animation www.it-ebooks.info 663 Analyzing Code with the Debugger So far, this chapter has shown how to clean up the buggy code in the file 19-1_ ­Debug_ Code.fla. In this section, you can make further improvements to the animation while learning how to stop your animation and code in its tracks and examine individual properties using the debugger. Note This example continues debugging the file 19-1_Debug_Code.fla. The entire process began on page 652. To get started, follow these steps: 1. With 19-1_Debug_Code.fla open in Flash, click Debug→Debug Movie. A Flash Player window opens and begins playing your animation. The panels in Flash change to show the Debug Console, the Variables panel, the Scene/­Symbol panel, your code, and the Output panel. There’s no information showing in ­either the Debug Console or the Variables panel at this point. If you followed the steps in the previous example, some information appears in the Output panel. 2. In the Flash Player window, select the Play toggle, Ctrl+Enter (⌘-Return). The animation stops playing. 3. In the panel with the ActionScript code, click to the left of the line numbers 11 and 12. A red dot appears next to the line number, indicating a breakpoint. These dots appear next to the lines: var ptStart:Point = new Point(Math.random() * 550,Math.random() * 400); var ptEnd:Point = new Point(Math.random() * 550,Math.random() * 400); 4. In the Flash Player window, press Ctrl+Enter (⌘-Return). The Flash Player may be hidden by the debugger. If necessary, use Alt+Tab (or ⌘-Tab) to bring it to the front. When you press Ctrl+Enter (­⌘-Return), the animation runs for a moment and then stops. A small ­arrow appears in the breakpoint next to line 11, indicating that the animation is at this point in the ActionScript code. You see more details in both the Debug Console (Figure 19-16) and the Variables panel. There are two items displayed in the Debug Console. You may need to drag the right edge of the panel to read the entire lines. The line at the top references the drawRandomLine() method in your code. The bottom line references the main timeline in the animation. When you click different items in the Debug Console, the items listed below in the Variables panel change. Click the top line before examining the Variables panel in the next step. 5. In the Variables panel, click the expand button next to the word “this,” and then scroll the panel to view all the variables. Initially, there are three items in the variables panel: this, ptStart, and ptEnd. This refers to the main timeline; ptStart and ptEnd are variables inside the 664 flash CS6: The Missing Manual www.it-ebooks.info ­ rawRandomLine() function. At this point, the value for both variables is unded fined. When you click the + button next to this, a list expands beneath, showing all the properties and variables related to the main timeline. Some of the items are familiar, like alpha, height, and width. Others may be a bit mysterious, especially if they’re properties you haven’t yet used in ActionScript. In Flash, there are a lot of preset values, which you may never need to worry about. If you look carefully in the list, you find the names of the text fields in your animation: txtStartX, txtStartY, txtEndX, and txtEndY. Play Step Over Step Out Analyzing Code with the Debugger Figure 19-16 Here, the Debug Console shows two items: the main timeline and the drawRandomLine() method. Using the buttons at the top of the console, you can start and stop your animation and the processing of ActionScript code. Main timeline Stop Step In 6. Click a second time to close the list. The lists closes, leaving just the three items showing: this, ptStart, and ptEnd. 7. In the Debug Console, click the green Continue button. Flash moves ahead just one step in the code because there’s a breakpoint at line 12. In the Variables panel, you see that the ptStart item has changed. The value is no longer undefined; there’s some weird-looking text and numbers there. And there’s an expand button next to the name. When you place a breakpoint in your code, the debugger stops before that line is executed. That’s why, with a breakpoint at line 12, ptStart has newly assigned values, but ptEnd is still undefined. 8. Click the expand button next to ptStart and examine its properties. As explained on page 611, the Point class has three properties: length, x, and y. Now that ptStart is defined, the variables panel shows values for each. More of those are really long decimal numbers. 9. Double-click the x value for ptStart and type 300. Then, double-click the y value and type 200. One of the extremely handy features of the Debugger is that you can change values of properties when the animation is stopped at a breakpoint. chapter 19: Testing and debugging your animation www.it-ebooks.info 665 Analyzing Code with the Debugger 10. Click the green Continue button. The animation moves through its two frames, and then it runs the ­ rawRandomLine() method again. It stops again at line 11 in the code. d 11. Examine the animation in the Flash Player window. The two text fields at the top of the animation show the values you entered in the Variables panel: 300 and 200, as shown in Figure 19-17. This small test proves that if you round the numbers to whole numbers, they’ll fit in the text fields. Figure 19-17 When you change values in the Debugger, you can see the results in your animation. Here, the values for two of the text fields have been changed. Before the change, the numbers were too long to be displayed by the text fields. 12. In the Debug Console, click the red X, also known as the End Debug Session button. Flash restores your project to its appearance before you entered the debugger. So, one solution to making the numbers fit in the text fields is to round them off to whole numbers. You can do that with another method that’s part of the Math class. Here’s what the finished code looks like. The two bold lines show the changes using the Math.round() method: var sprtLines:Sprite = new Sprite(); drawRandomLine(); addChild(sprtLines); 666 flash CS6: The Missing Manual www.it-ebooks.info function drawRandomLine():void {var ptStart:Point = new Point(Math.round(Math.random() * 550),Math. round(Math.random() * 400)); var ptEnd:Point = new Point(Math.round(Math.random() * 550),Math.round(Math. random() * 400)); sprtLines.graphics.lineStyle(Math.random()*5,Math.random()*0xFFFFFF, Math.random()); sprtLines.graphics.moveTo(ptStart.x,ptStart.y); sprtLines.graphics.lineTo(ptEnd.x,ptEnd.y); txtStartX.text = "start X: " + ptStart.x; trace("start X: " + ptStart.x); txtStartY.text = "start Y: " + ptStart.y; txtEndX.text = "end X: " + ptEnd.x; txtEndY.text = "end Y: " + ptEnd.y; } Analyzing Code with the Debugger Now the animation runs as it was intended. It draws lines that are random in position, color, thickness, and transparency. The x/y coordinates for the start and end points of the lines are shown in the upper-left corner of the animation. Not only do the whole numbers fit in the text fields, but they’re also a little easier to discern than the monster decimals. The debugged version of the animation is in the Missing CD (www.missingmanuals.com/cds/flashcs6mm), named 19-2_Debug_Code_done.fla. Note Flash lets you debug your animations remotely after you’ve uploaded them to a web server. This book doesn’t cover remote debugging, but you can find out more about it in Flash’s help files. chapter 19: Testing and debugging your animation www.it-ebooks.info 667 www.it-ebooks.info chapter Publishing and Exporting 20 Y ou’re done designing, developing, and debugging. Your animation is ready for its audience. You’ve decided whether you want them to view it on a web page, a smartphone, a tablet, a CD, or on their computers. The next step is to publish the animation, which means packaging it in a form your audience can play. As another alternative, you may export the animation, so you (or someone else) can further edit and develop it using another graphics or animation program (like Adobe Illustrator or Adobe Fireworks). In this chapter, you’ll learn how to do both. Using Flash’s publishing settings (Figure 20-1), you’ll see how to tell Flash to publish your animation as part of a web page, and as a standalone projector. You’ll also see how to export the artwork in your animation as editable image files. But before you publish or export, you need to learn how to optimize your animation (reduce your animation’s file size) so that it runs as quickly and efficiently as possible—a real concern if you’re planning to publish your animation on the Web or a handheld with limited memory. Optimizing Flash Documents It’s a fact of the digital world—big files take longer to travel the Web and load, and that creates a bottleneck for many Flash animations. The longer your audience waits, the more likely you are to lose them to another web page, or app, or quick peek at Facebook. No one has the patience to wait for a stop-and-start animation. With that in mind, you should make every effort to keep your published files small. The process is called optimization because you’re seeking the optimal tradeoff between quality and file size. (If you’re still tempted to skip this step, read the box on page 671.) 669 www.it-ebooks.info Optimizing Flash Documents Ideally, you’ve kept file size in mind from the moment you started planning your project and throughout the entire production process. That’s why there are tips scattered throughout this book about reducing file size. You can think of optimization as low-fat cooking for the animation set: The goal is to get rid of the fat without getting rid of the flavor. And, as with low-fat cooking, Flash doesn’t have a single approach to optimization. Your animation may include graphics, sound, and video, and there are ways to optimize each element. On top of that, every animation and target audience is different—you need to experiment, tweak, and retest using the strategies outlined next. Figure 20-1 Flash lets you choose how to deliver your compiled animation. The options shown here produce a plain .swf that plays in most browsers. You can also publish it as a standalone projector file (a self-contained executable file you double-click to run, with no need for a web browser or a separate Flash Player), an image file, or embedded in a web page. Tip As you check out the optimization strategies in this section, keep in mind that effective optimization is always a balancing act. You may decide some effects are worth the bloated file size they require, and some aren’t. In still other cases, you’ll want to compromise. For example, you might choose to remove half of the gradient effects you’ve applied to your images so that you reduce file size, but keep the other half. In Flash, you’re the director, so you get to decide how much is enough. 670 flash CS6: The Missing Manual www.it-ebooks.info Ten Optimization Strategies Here are 10 tried-and-true strategies for reducing file size. Apply as many as you can while you’re developing your animation. You can use any of these techniques to trim down a completed animation. Better yet, keep them in mind as you create your next animation. That way, you’ll end up with a streamlined animation without a lot of extra, after-the-fact work. Optimizing Flash Documents Frequently Asked Question The Importance of Being Optimized In an era where lightning-fast connections, high-speed processors, and multimegabyte memory cards abound, why should I bother optimizing my Flash documents? noted above, not everyone can upgrade, and not everyone wants to. But even if they do, chances are they’re not going to do it just to see your animation. Here’s why: Not everyone has access to the latest, greatest equipment and Internet service. In many parts of the world, people don’t have access to affordable T1 connections, for example. Also, folks relying on the computers at their schools or jobs don’t have control over their equipment. And, of course, not everyone has the time, money, or patience necessary to upgrade every time a new “revolution” in hardware or software technology hits the market. • So what if it takes 5 minutes to download my animation file? My animation is so fantastic it’s worth waiting for. It doesn’t matter if your animation is in line for the next Webby Award: If your audience can’t run it (or surfs away impatiently instead of waiting for it to download and stutter across their screens), you haven’t communicated effectively—and communicating effectively is, or should be, the goal of every animation you create in Flash. There’s a tendency among some animators to resist the extra effort that optimizing their animations requires. But here’s the fact: If people can’t see your animation, nothing else matters. Not the beauty or cleverness of your artwork, nor the sophistication of your animated sequences, nor the appropriateness of your perfectly synchronized background music. • The big boys (Hollywood trailer-makers, high-end advertisers, and super-sophisticated, high-traffic sites) don’t worry about optimization. Why should I? It’s true that some folks would still check out the latest Hollywood teaser even if it took all day to download. But they don’t have to because the big boys pay an army of professional testers and software designers to optimize their animations using the techniques in this chapter. Here’s a short list of the most common excuses some animators give for not optimizing their animations (and the reasons why these excuses don’t fly): • It looks great on my machine. If my audience doesn’t have a fast enough connection, they need to upgrade. Animators and others using Flash tend to be running highend equipment—much faster and more powerful than the equipment their audiences are running. The trend toward smartphones, tablets, and underpowered netbooks as an on-the-road option reinforces the need for optimized animations. That’s why testing your animation at a variety of connection speeds (as discussed on page 671) and even on a variety of machines, if possible, is so important. As The bottom line, as you’ve read over and over in this book, is to determine the needs of your target audience first , and then construct your animation to meet those needs. If you’re delivering your animation as a standalone file on DVD, you’re absolutely sure that your audience will be running high-end equipment, and you know for a fact that they’re highly motivated to run your animation (for example, they have to work through the Flash training tutorial you created in order to keep their jobs), then by all means take optimization with a grain of salt. But if your audience fits any other profile, ignore optimization at your own risk. Chapter 20: Publishing and Exporting www.it-ebooks.info 671 Optimizing Flash Documents 1. Use as few keyframes and property keyframes as possible Flash stores data for every keyframe, which adds to the size of your .swf file. The regular and tweened frames add very little to file size, so creating an effect with a tween is more efficient than creating the same effect with frame-by-frame animation. 2. Choose the Pencil tool over the Brush tool In general, brush tool fills are more complex than the lines you create with the Pencil tool, so brush strokes take up more file space. When you feel both strokes are equally acceptable, choose the Pencil. 3. Choose solid over dashed or dotted lines Through the Property Inspector, Flash lets you apply a handful of dash-and-dot effects to the lines you draw on the stage using the Pencil, Pen, Line, and Shape tools. But do so sparingly, because these line effects increase file size. 4. Optimize curves and shapes The fewer anchor points used to define curves and fills, the less information Flash has to track. Flash even gives you a special Optimize command to remove superfluous points from your shapes. Here’s how to use it: 1. Select the curved line or fill outline you want to optimize, and then choose Modify→Shape→Optimize. The Optimize Curves dialog box you see in Figure 20-2 (top) appears. 2. Type or scrub in a new number to tell Flash how much optimization to apply, from 0 to a maximum of 100, and then click OK. Flash displays a message (Figure 20-2, bottom) letting you know what percentage of the selected line or outline it was able to dispense with. Figure 20-2 Top: Optimizing a line doesn’t straighten it out or even smooth it the way that Modify→Shape→Advanced Straighten and Modify→Shape→Advanced Smooth do; instead, it ever-so-subtly shifts the points that make up the line. If you want to see how successful the optimization is, make sure you leave the “Show totals message” checkbox turned on. Bottom: Because optimization is a final tweak meant for you to do after your image already looks the way you want it to look, you don’t see a huge reduction in size here. Still, depending on the number of curved lines and fill outlines your animation contains, the saved bytes can add up. 672 flash CS6: The Missing Manual www.it-ebooks.info Optimizing Flash Documents 3. Click OK. On the stage, you see the (subtle) results of the optimization. 5. Use symbols Creating a reusable symbol (page 248) lets you add multiple instances of a shape or drawing to your animation without dramatically increasing file size. Even shrinking, rotating, or recoloring your instances costs less in file size than creating separate images. This strategy can result in big benefits. 6. Test bitmaps and vectors, and then choose the most efficient option Often bitmaps, especially photos, are expensive in terms of file size. If you can do without them, do so; if not, crop them (so that you use as little of them as possible) or optimize them by choosing a higher-than-standard compression option, as described below. On the other hand, overly complicated vector graphics also use a lot of space. If in doubt, test both options and compare the sizes by generating a size report (see the box on page 649). Note You can also optimize bitmaps in the Publish Settings dialog box (page 685). To optimize a bitmap: 1. Import the bitmap into your document’s Library panel. The steps, if you need a refresher, are in Chapter 10 (page 359). 2. In the Library, double-click the icon next to the imported bitmap’s filename. (Or select the bitmap, and then, from the Options menu in the upper-right corner of the Library, choose Properties.) Either way, the Bitmap Properties window you see in Figure 20-3 appears. Figure 20-3 Everything in life is a tradeoff, and bitmap optimization in Flash is no exception. If you find you can’t balance image quality with compression—for example, by the time you reach an acceptably high compression rate, your image appears nearly unrecognizable—consider cropping the bitmap or turning it into a vector drawing (page 365). Chapter 20: Publishing and Exporting www.it-ebooks.info 673 Optimizing Flash Documents 3. From the Compression drop-down list, choose either “Photo (JPEG)” or “­Lossless (PNG/GIF)”. Choose the first option if your image contains a lot of different colors or transparent effects; choose the second if it contains a few solid lumps of color. Find out more about JPEGs, PNGs, and GIFs beginning on page 351. Flash calculates a percent compression rate and displays it near the bottom of the Bitmap Properties window. If you chose Photo (JPEG), you can compress the image further. Click the Custom radio button, and then type a number into the box (Figure 20-3). A value of 100 is the highest quality and the least compression. Tip Flash starts you out with a quality rate of 80. You need to experiment to find out the lowest number that gives you an acceptable tradeoff between file size and quality, but one way to begin is to jot down the current file size (Flash displays it just below the Quality field), type 25, and then click OK. When you open the Bitmap Properties window again, Flash displays the new file size for the bitmap based on a file quality of 25. If the image looks OK, type a lower number; if not, type a higher number. The higher the number, the larger the file size; the lower the number, the lower the file size. 4. Take a look at your newly optimized image by clicking the Test button. The preview area shows the way the image looks using the optimization settings you chose. Near the bottom of the Bitmap Properties window, you see the percent compression rate Flash has calculated based on the Quality setting you typed in. If the image quality looks horrible, repeat step 2 with a higher quality setting; if the quality looks OK but the compression rate doesn’t seem low enough, try again with a lower quality setting. (Sometimes, depending on your image, a lower quality setting will look practically identical to a slightly higher quality setting.) 5. When you’re satisfied with the quality-vs.-file-size tradeoff, click OK. Flash hides the Bitmap Properties window and brings you back to your ­workspace. Note The image doesn’t appear optimized in the Library preview area. But you can preview the effects of different optimization settings when you drag the image to the stage. 7. Keep sound clips to a minimum (or optimize them) Sound clips can quickly swell your animation size, so use them sparingly. Naturally, sound effects like a bell’s ding or a thunderclap use less space than a high-quality music soundtrack. A narrator’s voice also takes up less space than most music. As 674 flash CS6: The Missing Manual www.it-ebooks.info a rule, use the shortest clips you can and compress them as much as the quality can bear. Here are the steps to optimize a sound file that’s already in your Library: Optimizing Flash Documents 1. In the Library, double-click the icon next to the imported sound file’s name. This icon is the quickest of three ways to open the properties for a symbol. You can also use the Options menu in the upper-right corner of the Library panel or right-click (Control-click) a symbol. Either way, the Sound Properties dialog box you see in Figure 20-4 appears. Figure 20-4 If you leave compression set to Default, Flash uses the Compression option you set in the Publish Settings dialog box (page 685) to figure out how to compress this sound clip. Otherwise, Flash applies the Compression option you set here (unless you’ve told Flash to override this compression setting; see page 682 for details). 2. Press Update, if you think the sound has been edited. The file may have been trimmed or changed, using an editor like Soundbooth, since it was imported. 3. From the Compression drop-down list, choose a compression scheme. Flash gives you several options. Choosing the right compression scheme gives you the best size/quality optimization: • The Default settings are defined in the panel that appears when you go to File→Publish Settings and click the Flash tab. There are separate settings for audio streams (longer sounds like music and narration) and events (like sound effects). You can change these settings by clicking the Set buttons. • ADPCM is good for short event sounds. You can reduce file size by checking the “Preprocessing: Convert stereo to mono” box. Sample rates range from a primitive 5 kHz to CD-quality 44 kHz. You can also set the ADPCM Chapter 20: Publishing and Exporting www.it-ebooks.info 675 Optimizing Flash Documents bits from 2 to 5 bits, with larger numbers increasing file size. Below the menus you see the setting and the effect they have on reducing or increasing the file size. • MP3 is the familiar compression format for music. It has the ability to dramatically reduce the size of long streams of sound. You can choose the bit rate (higher numbers, bigger files) and the quality: Fast, Medium, or Best. (These options refer to the length of time it takes to compress the files.) In most cases, you’ll want to choose Best because it achieves the best sound quality for the file size. • Raw provides no compression, so you’d normally not use it for a web-based animation. As with ADPCM, you can reduce the size of the sound file by selecting “Convert stereo to mono” and by reducing the sample rate. • Speech applies compression that’s suitable for voice, but isn’t full enough for a symphonic orchestra. You can further tweak the setting by changing the sample rate (smaller numbers for smaller files). 4. As you experiment with the settings, click the Test button. You hear the sound file with the compression applied. Click the Stop button when you’ve heard enough. 5. When you’re satisfied with the quality-vs.-file-size tradeoff, click OK. Flash hides the Sound Properties dialog box and brings you back to your workspace. Note To make sure Flash uses the Compression option you set in the Sound Properties dialog box, turn off the “Override sound settings” checkbox in the File→Publish Settings→Flash dialog box. Page 682 has details. 8. Group elements Grouping shapes, lines, and other portions of your drawings (by selecting them, and then choosing Modify→Group) cuts down on file size because Flash can streamline the information it needs to store. Page 192 has full instructions. 9. Avoid the extraneous The more you add to your animation, the larger your file size. If you absolutely, positively need to pare down your file, consider removing or simplifying some (or all) of your drawings, multimedia files, and graphic effects, paying particular attention to these space hogs: • Sound files, embedded video clips, and bitmaps • Gradient effects • Alpha (transparency) effects • Custom colors 676 flash CS6: The Missing Manual www.it-ebooks.info Make sure your .swf files don’t include any unnecessary symbols. Look in the Library panel. If it says Export under Linkage, the symbol is being exported for use with ActionScript and will definitely be added to the .swf. If the symbol isn’t needed for the final animation, right-click the symbol, and then choose Properties from the shortcut menu. In the Symbol Properties dialog box, deselect “Export for ActionScript.” Publishing Your Animations Tip If you can’t bring yourself to do without media files altogether, go ahead and use them—but abbreviate them. For example, instead of using a long sound clip, loop a short one. Or use a single sound clip a bunch of different ways (soft, loud, the first half, the second half) to create multiple sound effects for minimal overhead. Instead of embedding a video clip as is, try adjusting the in and out points to clip off any nonessential intro or outro frames when you import it into Flash (page 389). And if you’re using a mask layer, make sure you clip off every scrap of the background image not revealed by the mask. 10. Tell Flash to keep your file size down One of the options you want to make sure you set when you’re ready to publish your animation is the “Compress movie” option in the Publish Settings dialog box (page 685). (Out of the box, Flash turns on this option, but do double-check that you haven’t inadvertently turned it off.) Choosing this option tells Flash to squeeze your animation file as much as it can without sacrificing content. How much Flash compresses your file depends on the specific elements and effects you’ve included in your animation; the more text and ActionScript code your animation contains, for example, the more “bloat” Flash can squeeze out of your file. Publishing Your Animations When you publish your animation, Flash Professional reads the images and sounds in your .fla file, applies compression according to the settings you chose, and then writes a noneditable file (.swf) that your audience will view. The kind of noneditable file Flash produces depends on how you decide to publish your animation. These are your choices: • A compiled Flash file (.swf). Flash Players, including the Flash Player plug-ins that come with most browsers, play .swf files. If you plan to include your Flash animation in a hand-coded HTML file (or to import it into a website creation program like Adobe Dreamweaver), you want this option. • A compiled SWC file (.swc). If you’re working with a team on a Flex project, you can archive components and assets in a SWC file. Flex applications can access the embedded SWF and the other assets. • A web page (.html, .swf). Choose this option if you want Flash to put together a simple web page for you that includes your animation. (You can always tweak the HTML file later, either by hand or using a web design program like Dreamweaver.) Chapter 20: Publishing and Exporting www.it-ebooks.info 677 Publishing Your Animations • An image file (.jpg, .gif, or .png). You can export an individual frame, or if you use the GIF format, you can export a series of image files that play as a frameby-frame animation—useful for those times when your audience doesn’t have Flash Player. (For more advice on using ActionScript to detect your audience’s Flash Player at runtime and offer alternatives, see the box on page 690.) Power Users’ Clinic Preloading Large, Slow-to-Load Content If your animation is large (approaching a megabyte or more) and you’re delivering it over the Web, it takes some time for your audience to download. You need to let them know that something is happening behind the scenes and give them an idea how soon they’ll be entertained. That’s the job of a preloader—a bit of ActionScript and some simple images. You’ve seen them before when web pages display a “Loading” message and report on the progress. In essence, a preloader is a small Flash animation that’s designed to load a larger animation. The smaller program shows a simple animation to let the audience know their computer hasn’t frozen. Many preloaders also report on the progress as a percentage of the download. You can think of a preloader as a “wrapper” that holds the larger, slow-loading animation. Flash CS6 includes a simple preloader template that you can use for your project. Go to File→New→Templates and click Sample Files. Near the bottom of the list choose “Preloader for SWF.” There’s no documentation with the template, but with a couple of tips, it’s easy to use. All you have to do is place your larger SWF, larger picture, or other slow-loading content in the second frame of the layer named “Content.” Test the animation (Control→Test Movie) and you may not notice the preloader, because everything runs so quickly when it’s all on one computer. To see the preloader in action, you need to make some adjustments in the test environment. Set View→Download Settings to 56K or one of the slower settings. Then choose View→Simulate Download. The “Loading” text pulses while the download percentage is shown in numbers. If the template doesn’t quite match the style of your project, it’s easy to swap in your own graphics. The pulsing loading text is a movie clip symbol in the Library made of a 31-frame tween. To examine the movie clip, right-click (Control-click) “loading clip” in the Library and choose Edit. Replace the “Loading” animation in the symbol but make sure you don’t change its name. Feel free to change the length of the movie clip if it suits your needs. If you want to examine the ActionScript code that powers the preloader, just click Frame 1 in the actions layer and open the Actions window. You’ll see that the code stops the animation. At that point, two event listeners take over. The listeners’ functions are named: onLoading and onComplete. The onLoading listener displays the pulsing text and download percentage. The onComplete listener moves the animation to the second frame in the animation, where the larger, now fully downloaded content is displayed. The “onComplete” function also does a little housekeeping, removing the two listeners from memory because they’re no longer needed. If you’re interested in learning more about preloading, you can find more information on the Web; Christopher Skyi’s article on ActionScript.org is a good place to start (www.actionscript.org/ resources/articles/869/1/Preloading-in-ActionScript-30-theEasy-Way/Page1.html). • A standalone projector file (.exe, .app). A projector file is a self-contained Flash-Player-plus-your-animation file. Your audience can run a projector file to play your animation even if they don’t have a copy of Flash Player installed. You might choose this option if you’re creating a CD or DVD (as opposed to delivering via the web). You can create projector files for Windows (.exe) or the Mac (.app). 678 flash CS6: The Missing Manual www.it-ebooks.info Note Flash gives you another way to turn your artwork into an image file: by exporting it (page 370). Publishing Your Animations You can choose more than one publishing option at a time simply by turning on as many checkboxes as you like in the Publish Settings dialog box. For example, you can publish your animation as a compiled Flash file, a web page, and a standalone projector file all at once when you click Publish. The following sections show you each of these publishing options in detail. Publishing as a Compiled Flash (.swf) File When you publish your animation as an .swf file, your audience can run it using a Flash Player—either a standalone version of Flash Player, or a web browser plug-in version. Publishing as an .swf file gives you the flexibility of including your animation in a from-scratch web page. Note If you’ve worked through any of the examples in this book, you’re already familiar with .swf files. Each time you test your animation using Control→Test Movie, Flash automatically generates an .swf file and plays it in the Flash Player that’s built into the test environment. To publish your animation as a compiled Flash (.swf) file: 1. Choose File→Publish Settings. A Publish Settings panel, similar to the one in Figure 20-5, appears. Here’s where you tell Flash what kind of files to publish, and you can choose as few or as many as you like. Click on a file format to adjust the settings for that particular file. Figure 20-5 Each time you turn on a Type checkbox, Flash adds a new file type to the publish process; for example, SWF, HTML, or JPG. Click the format name to display the settings for that type of file. With these settings, the publish process produces an SWF, an HTML wrapper, and a standalone Windows projector file. The Win Projector format name is currently selected. 2. Turn on the checkbox next to “Flash (.swf),” and then turn off all the other checkboxes. The Flash tab appears next to the Formats tab. Chapter 20: Publishing and Exporting www.it-ebooks.info 679 Publishing Your Animations Note You can use almost any animation to experiment with the Publish and Export settings. If you don’t have one handy, use 20-1_Publish_Settings.fla from the Missing CD (www.missingmanuals.com/cds/flashcs6tmm). It’s identical to one of the Chapter 8 motion tween files. 3. Click the words “Flash (.swf)” next to the checkbox. The Flash settings in Figure 20-6 appear. Figure 20-6 The settings here let you fine-tune the .swf file that Flash generates when you click Publish. Normally, you don’t have to make any changes to these settings. But in some cases—for example, when you know your target audience is running an older version of Flash Player—you do want to change them. These pages explain each setting. 4. Change one or more of the following settings: • Player. Lets you select the version of Flash Player you want to run your animation. Choose the latest version (Flash Player 11.2) if you’ve included any of the new-in-Flash-11.2 features or if you’re not sure whether you’ve included any new features. If you know your audience is running an earlier version 680 flash CS6: The Missing Manual www.it-ebooks.info of Flash Player (for example, Flash Player 8) and you know you won’t be using any new-in-Flash-11 features, then you can choose the earlier version. Publishing Your Animations If you choose Flash Player 11, and it turns out that your audience is running an earlier version of the player, like Flash Player 8, they will need to download and install the newest version, which isn’t as troublesome as it sounds. Adobe makes a free downloadable copy of the latest Flash Player available at www.adobe.com/products/flashplayer. The box on page 690 explains how to create a web page that automatically checks to make sure the proper version of Flash Player is present on your audience’s computers. Note On this menu, you’ll also find options for Adobe AIR, iPhone, and Flash Lite players. Usually, if you’re developing an animation for one of these platforms, you start your animation using one of the related templates. The templates size the stage to match the device and automatically choose the right player. • Script. Tells Flash which version of ActionScript to use. You already made this decision when you chose File→New to start your animation. So, if you started with ActionScript 3.0, that’s the only option available here. • JPEG quality. The quality of your JPEGs is controlled in two different places, and sometimes this leads to confusion. You can set the quality for individual images in the Library by right-clicking the library item and choosing Properties (Figure 20-7). Choose a Custom setting for the image and that’s the final word. However, if you choose “Use imported JPEG data” then the image quality is controlled by the Publish Settings (Figure 20-6). In both cases, you can type or scrub in a quality value from 1 to 100. For highly compressed images (50 or less) it may help to turn on JPEG deblocking. Figure 20-7 If you choose “Use imported JPEG data” as shown here, Flash lets you set bitmap quality using the JPEG quality number in the Publish Settings window’s Flash tab. If you set the quality of your bitmap using the Bitmap Properties dialog box, however, Flash ignores the JPEG quality number in the Publish Settings window. In other words, you can’t tell Flash to compress the same image twice. Chapter 20: Publishing and Exporting www.it-ebooks.info 681 Publishing Your Animations • Audio stream. Tells Flash which compression scheme to use for streaming audio clips for which you haven’t already specified a compression scheme (page 675). Flash displays the compression scheme it assumes you want. To specify another one, click the current compression name, and then, in the Sound Settings dialog box that appears (Figure 20-8), choose the compression scheme you want. Figure 20-8 In the Publish Settings window, clicking the name next to “Audio stream” or “Audio event” to opens this Sound Settings dialog box. Here, you can choose from a variety of compression schemes (like MP3, suitable for long, continuous clips like soundtracks) and lower-quality, byte-saving schemes (like Speech). Choosing Raw tells Flash not to compress your sounds at all. • Audio event. Tells Flash which compression scheme to use for audio events for which you haven’t already specified a compression scheme, using the Sound Properties dialog box. Flash displays the compression scheme it assumes you want. To specify another one, click the current compression name next to “Audio event” and then, in the Sound Settings dialog box that appears, choose another compression scheme. Your options are identical to the options Flash gives you for setting “Audio stream” (see Figure ­20-8), and they don’t override individual sound properties unless you turn on “Override sound settings.” Note Flash gives you two ways to specify a compression scheme for your sound clips. You can specify a compression scheme for individual sound clips using the Sound Properties dialog box (page 675) or you can specify one for all the sound clips in your animation using the Audio Stream and Audio Event options you find in the Publish Settings window. (See below for more detail on the difference between audio streams and audio events.) • Override sound settings. Tells Flash to ignore the individual compression schemes you set for your sound clips using the Sound Properties dialog box (page 675) and use the compression schemes (both streaming and event) you set in the Publish Settings window instead. If you don’t turn on this checkbox, Flash uses the compression settings you set in the Publish Settings window only for those sound clips assigned a Default setting in the Sound Properties dialog box. Note Flash can only work with what you give it. Specifying a high-quality compression scheme doesn’t improve a low-quality sound clip. 682 flash CS6: The Missing Manual www.it-ebooks.info • Export device sounds. Tells Flash to include MIDI and other device sound files with the .swf file. Turn on this option only if you’re targeting mobile devices. Publishing Your Animations • Compress movie. Tells Flash to reduce .swf file size as much as possible without sacrificing your animation’s quality. Make sure this option is turned on. (Flash can’t compress animations targeting pre-6 versions of Flash Player, but odds are you aren’t doing that anyway.) • Include Hidden Layers. Flash’s factory settings export all the layers in your animation, even those that are hidden or nested in movie clips. Uncheck this option if you want to test or create different versions of your animation by hiding layers in the Flash file. • Include XMP metadata. Publishes all the details about your animation included in the File Info box. Metadata is a standard method for storing details about a media file. To create metadata in the first place, choose File→File Info, and then fill in whatever information you want your audience to see. • Generate size report. Tells Flash to list the bytes in your .fla file by frame, scene, action, object, and so on. This report is also useful for keeping track of the content you’ve added to your animation. • Omit trace actions. Tells Flash to ignore any trace() statements you’ve added to your ActionScript actions (page 473). It’s best to turn this on before publishing an .swf that’s going out in public. You don’t need other folks with a Flash debugger seeing your trace details, and trace statements can slow down playback. • Permit Debugging. Tells Flash to let you debug your animation remotely (over the web) using the special Flash Debug Player browser plug-in. This option also gives you more detailed error messages when you debug locally. This book doesn’t cover remote debugging, but you can find out more about it using Flash Help (see Appendix A: Installation and Help). • Protect from import. Theoretically, this option tells Flash to encode your .swf file so other folks can’t import it into Flash and edit (steal!) your animation. Unfortunately, human nature being what it is, you can find programs floating around the Web to bypass this encoding. So if you need to reference sensitive information in your Flash animation (like passwords or confidential company info), don’t store that information in Flash; instead, store it safely on a protected server and get it at runtime. • Password. If you’ve chosen “Protect from import” or “Debugging permitted,” type a password in this box. Typing a password lets anyone with the password import the compiled .swf file into Flash at a later date, and then edit it—a potential security risk if your ActionScript code contains confidential company information. Typing a password also lets anyone with the password debug the .swf file remotely. (This book doesn’t cover remote debugging.) Chapter 20: Publishing and Exporting www.it-ebooks.info 683 Publishing Your Animations • Script time limit. Sets the maximum time that scripts can take to run before there’s a stage update. If a script runs longer, Flash Player stops the script from running. • Local playback security. Lets you tell Flash whether you want your .swf to be able to exchange information with local files (files located on your audience’s computers) or network files (files located elsewhere on the Web). • Hardware Acceleration. These settings let your animation take advantage of any advanced video hardware capabilities your audience’s computers may have. The Direct option bypasses the computer browser and draws directly to the screen. The GPU option uses advanced graphics processing units if they’re available. 5. Click Publish. The Publish Settings window disappears, and Flash generates an SWF file ­using the name you provided. If you didn’t type a name of your own choosing, Flash names the file based on your .fla filename. For example, if the name of your Flash document is myAnimation.fla, Flash generates a file named ­ yAnimation.swf. If you click OK, Flash saves your settings and uses them later m when you’re ready to publish. Tip You don’t have to go through the Publish Settings window every time you want to publish your animation. Once you’ve got the settings the way you want them, all you have to do is select File→Publish. Publishing as a Web Page If you want to put your animation on a web page, an .swf file by itself isn’t sufficient: It’s always best to create an HTML file (a web page) that embeds that .swf file. You can create the HTML file either by using your favorite HTML editor or by telling Flash to generate a simple HTML file for you. Power Users’ Clinic Create a Publish Profile Customizing Flash’s publishing settings can be time-consuming. If you plan to reuse a batch of options, you can save time by saving your settings in a profile. So you could create one profile for publishing Flash CDs or DVDs and another for your website. That way, when you want to publish a web-page version of your animation, for example, all you have to do is specify myWebPageProfile or myCD-DVDprofile. To create a publish profile: 2. In the Create New Profile dialog box that appears, type a name for your profile, and then click OK. 3. Flash saves all your current settings to that profile. As you continue to make changes in the Publish Settings window, Flash continues to save those changes to your profile. 4. You can create as many profiles as you like. To change profiles, click the Profile menu, and then select a new name. 1. In the Publish Settings dialog box, click the gear-shaped button next to Profile and choose Create Profile. 684 flash CS6: The Missing Manual www.it-ebooks.info At a minimum, the HTML file needs to tell the web browser how to display the .swf file: at the top of the page or in the middle, whether you want the animation to begin playing immediately or wait until the audience clicks a button, and so on. Publishing Your Animations Because many people who use Flash want to put their animations on the web, the Publish Settings dialog box makes it easy to create an .swf in addition to a simple web page (.html) in one fell swoop. To publish your animation as a web page (.html and .swf): 1. Choose File→Publish Settings. The Publish Settings dialog box appears. 2. Make sure the checkboxes next to “Flash (.swf)” and HTML Wrapper are turned on; if they’re not, turn them both on now. You can choose to publish several different types of files at once, as shown in Figure 20-9. To publish an SWF file and a web page that holds the SWF file, check the boxes: Flash (.swf) and HTML Wrapper. Click the words next to the check-box to display the file settings in the dialog box. Figure 20-9 To publish an SWF file and a web page that holds the SWF file, turn on the Flash (.swf) and HTML Wrapper checkboxes. Click the words next to the checkbox to display the file settings shown in Figure 20-10. 3. Click the words “Flash (.swf),” and then set up your .swf file. For the details, see step 4 on page 680. 4. Click the words “HTML Wrapper.” The HTML publish settings you see in Figure 20-10 appear. 5. If you like, change the template setting. Most of the time, you want to stick with the “Flash only” template that Flash assumes you want. But if you’ve added certain elements to your animation, or if you want to target a specific web browser, Flash needs to insert special HTML Chapter 20: Publishing and Exporting www.it-ebooks.info 685 Publishing Your Animations tags into the template it uses. In that case, you may need one of the following options: • Flash for Pocket PC 2003. Creates an HTML file that runs on Pocket PC 2003. • Flash HTTPS. Choose this option if you plan to upload your HTML and SWF file to a secure web server (https://). • Flash Only. Creates a basic HTML file that runs in any web browser. Figure 20-10 These settings let you tell Flash how you want your animation to be included in your web page. This option is great for testing the way your animation looks on the web, as well as for creating simple pages. But if you want a really sophisticated web page, you need to edit the HTML file that Flash produces—either in a text editor, or in a web page creation tool like Dreamweaver. • Flash Only—Allow Full Screen. Used only with Flash Player 9 or later. This option adds a parameter to the HTML code that lets Flash content run in Full Screen mode. The animation can fill an entire monitor without menus, borders, or the other usual computer paraphernalia. 686 flash CS6: The Missing Manual www.it-ebooks.info • Flash with AICC Tracking. Choose this option if you’ve added Learning Interaction components (Window→Common Libraries→Learning Interactions) to your animation and plan to have these components interact with an AICC learning management system. (AICC stands for Aviation Industry CBT Committee.) Publishing Your Animations • Flash with FSCommand. Choose this option if you’ve included the ­ActionScript fscommand() statement in your animation. (fscommand() lets your Flash animation call a JavaScript statement. JavaScript is the scripting language supported by most web browsers. Adobe warns that fscommand() may not work with Flash Player 10 and later.) The alternative ExternalInterface should be used instead. Details are available in the ActionScript 3.0 Reference. • Flash with Named Anchors. Choose this option if you’ve organized your animation into named scenes (Chapter 15). Flash generates the tags necessary to let people surf directly from scene to scene using their browsers’ Back buttons. • Flash with SCORM 1.2 Tracking and Flash with SCORM 2004 Tracking. Choose one of these options if you’ve added Learning Interaction components (Window→Common Libraries→Learning Interactions) to your animation, and plan to have these components interact with a SCORM learning management system. (SCORM stands for Shareable Content Object Reference Model.) • Image Map. Choosing this option tells Flash to create an HTML image map (which an HTML-savvy person can turn into hotspots). For this option to work, you need to have added the frame label #map to the frame you want Flash to turn into an image map, and you need to have chosen GIF Image (.gif), JPEG Image (.jpg), or PNG Image (.png) in addition to HTML (.html) in the Formats tab of the Publish Settings window. (Chapter 15 explains how to add frame labels.) 6. If you chose Flash Only, “Flash Only – Allow Full Screen,” or Flash HTTPS in the previous step, you can now turn on Detect Flash Version to help make sure your audience has the correct version of Flash Player to view your animation. When you turn on the checkbox for this option, if your audience has a version of Flash Player older than the one you specified, they see a message, which explains that they need a newer version and gives them a link to download the latest version. (See the box on page 690 for further advice.) 7. Turn on any of the following settings if you’d like to tweak how your animation appears in the web page—which may be different from how it appears in Flash on the stage: • Size. Lets you tell Flash how large you want your animation to appear in the web page. Your options are Match Movie, which tells Flash to use the Chapter 20: Publishing and Exporting www.it-ebooks.info 687 Publishing Your Animations dimensions of the stage you specified in the Document Properties window (page 516); Pixels, which tells Flash you want to specify new height and width dimensions in pixels; and Percent, which tells Flash you want to specify new height and width dimensions as a percentage of the web page display (see below). • Width/Height. Lets you specify your animation’s width and height in the web page in pixels or as a percentage of the web page. • Paused at start. Tells Flash not to begin playing your animation as soon as your audience loads your web page into their browser. If you choose this option, make sure you either turn on Display menu (see below) or—a better solution—make sure you’ve included an obvious Play button in your animation. Otherwise, your audience won’t be able to play your masterpiece. • Loop. Tells Flash to automatically play your animation over and over again. • Display menu. Tells Flash to include a shortcut menu for your animation so that when your audience right-clicks (Windows) or Control-clicks (Mac), they see animation controller options like Zoom In, Zoom Out, Play, Loop, Rewind, Forward, and Back. • Device font. This option applies only to Windows computers. It provides antialiased (smoothed) system fonts for fonts that aren’t on your audience’s computers. • Quality. Tells Flash how precisely (and how processor-intensively) you want it to render, or draw, your animation on your audience’s computers. Your options range from Low to Best. • Show Warning Messages. Initially, this option is turned on to display messages if there are conflicts with the HTML tags that are used in your project. 8. Choose one of the following Window Mode settings to tell Flash how you want your animation to appear with respect to HTML/DHTML content that you add to your .html file: • Window. This standard mode tells Flash to place your animation in a rectangular area on the web page. HTML content can appear around the animation. • Opaque Windowless. Tells Flash to place your animation on top of HTML content. • Transparent Windowless. Tells Flash to erase the background of your animation (the blank parts of the stage) so that HTML and DHTML content can show through. 9. Choose from the Scale and Alignment options to size and position your animation with respect to the rest of your page. 688 flash CS6: The Missing Manual www.it-ebooks.info • Default (Show All). Fits as much of the animation into the height/width dimensions you set as possible without stretching or distorting the animation. If there’s extra room left over, Flash fills in the empty spaces with black bands, letterbox style. Publishing Your Animations • No border. Fits as much of the animation into the height/width dimensions you set as possible without stretching or distorting the animation. If there’s extra room left over, Flash crops it. • Exact fit. Stretches (or squishes) the animation to fit the height/width dimensions you set. • No scale. Tells Flash to preserve the stage height/width dimensions you set in the Document Properties dialog box. • HTML alignment options include Default (center), Left, Right, Top, or Bottom. • Flash horizontal alignment. Tells Flash how you want to align your animation with respect to the dimensions you set in the Publish Settings dialog box—in other words, how you want to position your animation horizontally inside the width-and-height box you’re adding to your web page. Your options include Left, Center, and Right. Note See step 7 if you want to align the width-and-height box with respect to your web page (as opposed to aligning your animation with respect to the width-and-height box, which you do using “Flash alignment,” as described on this page). • Flash vertical alignment. Tells Flash how you want to align your animation with respect to the dimensions you set in the Publish Settings dialog box; in other words, how you want to position your animation vertically inside the width-and-height box you’re adding to your web page. Your options include Top, Center, and Bottom. Note You need to know when Flash encounters problems so that you can fix them, so make sure the “Show warning messages” option is always turned on. Turning on this option tells Flash to pop up any errors that happen during the publishing process. 10. Click Publish. The Publish Settings window disappears, and Flash generates both an HTML file and a Flash file based on the names you provide. If you don’t type names of your own choosing, Flash names both files based on your .fla filename. For example, if the name of your Flash document is myAnimation.fla, Flash generates a file named myAnimation.html and myAnimation.swf. To make your HTML file and Flash animation available on the Web, you need to upload both of these files to your web server. Chapter 20: Publishing and Exporting www.it-ebooks.info 689 Publishing Your Animations Tip Sometimes, after you’ve published your .html and .swf files, you may want to change the name of your web page (.html) to match the other pages on your website. You can do that without a problem, as long as you don’t change the extension (.html). On the other hand, if you change the name of your animation (.swf), say from myAnimation.swf to thatAnimation.swf, the HTML code won’t know how to find it, and it won’t run in the web page. Design Time The Problem with Detecting Your Audience’s Flash Version If you create an animation that uses only Flash 11 (or greater) features, your audience won’t be able to play it in an earlier version of Flash Player. But how do you know which version of Flash Player your audience has installed? And if it turns out they are running an earlier version, how can they see your animation? The easiest approach to this dilemma is the one most Flashionados opt for: using the Detect Flash Version publishing option described on page 687. But making people jump through hoops before they can see your animation isn’t always the best design choice. For one thing, not everyone wants to stop what they’re doing and download yet another plug-in. For another, folks in many corporate settings aren’t allowed to download and install software of any kind, even a free Flash Player. Fortunately, hoop-jumping isn’t necessary: Computers excel at this kind of automatic detect-this-and-do-that process. With a little bit of elbow grease, you can devise a more seamless, professional approach, like one of these: • Detecting your audience’s installed Flash Player and automatically displaying a version of your animation that runs in that player. • Having your HTML file substitute a static image or animated GIF file if it doesn’t find the correct Flash Player. • Having your animation download and install the correct version of Flash Player for your audience so they don’t have to. Many Flash programming folks use another option, called ­S WFObject, to detect the presence of a Flash Player in their audience’s browsers. A small chunk of JavaScript code—­ SWFObject 2—is easy to use and works with both HTML and XHTML. You can find SWFObject and more details at www. adobe.com/devnet/flashplayer/articles/swfobject.html. Publishing a Frame as a Static Image File It may seem odd that Flash lets you publish a frame of your animation as a single, static image—after all, the point of using Flash is creating animations, not images. But publishing your animation as an image file (in addition to publishing it as a Flash file) can be a savvy design choice: If some people don’t have Flash Player installed on their machines and so can’t see your animation, at least they can see your opening frame. Also, sometimes web designers use static images produced by Flash as graphic links to the animation. Note When you do choose to publish an image file, you’re the one who needs to create the HTML to display that image file; Flash doesn’t do it for you when you select the HTML Wrapper option in the Formats tab of the Publish Settings window. 690 flash CS6: The Missing Manual www.it-ebooks.info Publishing a static GIF GIF (Graphic Interchange Format) files are super-small, thanks in part to the fact that they limit your image to 256 colors. GIF files are the best choice for vector images containing just a few areas of solid color. Note Publishing Your Animations Another way to create static images is to export them by choosing File→Export→Export Image (page 701). To publish a frame of your animation as a static GIF file: 1. In the timeline, click to select the frame you want to publish. Flash highlights the selected frame. On the stage, you see the image you’re about to publish. Note Another way to tell Flash which frame you want to publish is to add the frame label #Static to the frame you want to publish. Make sure you’ve selected a file type (like GIF, JPEG, or PNG) for the image as described in step 3. Chapter 15 (page 524) shows you how to label a frame. 2. Choose File→Publish Settings. The Publish Settings dialog box appears. 3. Turn on the checkbox next to “GIF Image.” The GIF settings appear in the dialog box as shown in Figure 20-11. If you don’t see the GIF settings, click the words “GIF Image” next to the checkbox. 4. Choose one or more of the following publishing options: • Match movie. Tells Flash to create a GIF image the same size as the stage. • Size (Width/Height). Tells Flash how large you want the GIF file to be, in pixels. These options are available only if you haven’t turned on “Match movie” (see above). • Playback (Static/Animated). Tells Flash whether to create a static GIF file or an animated GIF file. Make sure you turn on Static. (Page 697 shows you how to create an animated GIF file.) • Loop Continuously and Repeat times are used only with animated GIFs. • Optimize colors. Lowers file size as much as possible without sacrificing image quality. Always make sure you turn this option on. • Interlace. Tells Flash to create a GIF that downloads in several passes, so that a fuzzy version appears first, then a clearer version, then a still clearer version, and so on. Turning on this option doesn’t reduce download time, but it does give your audience quick successive “tastes” of the image while they’re waiting—useful for very large images. Chapter 20: Publishing and Exporting www.it-ebooks.info 691 Publishing Your Animations • Smooth. Tells Flash to smooth (antialias) your image. Turning on this option may improve the look of any text your image contains; it can also save a few bytes. Figure 20-11 GIFs are generally the most compact of the three static image file formats, but they’re also the most restrictive: They can display at most 256 colors. (If the image you’re exporting contains a bunch of custom colors, your GIF may look slightly off.) Two different types of GIFs exist: static and animated. In this section, you see how to publish frame content to a static GIF. • Dither solids. Tells Flash to attempt to match any solid custom colors you’ve used as closely as it can by combining two colors. If you don’t turn on this option, Flash chooses the nearest-in-shade solid color in its palette. • Remove gradients. Tells Flash to convert the gradients in your image to solid colors. (Gradient effects don’t translate well to the GIF format anyway, so if your image contains gradient effects, you probably want to turn on this option.) • Transparent. Lets you specify the transparency of your image background (the blank area of the stage). Your options include Opaque (a regular, solid 692 flash CS6: The Missing Manual www.it-ebooks.info background), Transparent (no background), or Alpha and Threshold (lets you choose how transparent you want the background to appear). Publishing Your Animations • Dither. Tells Flash to dither (mix two colors) to try to match all the nonsolid areas of your image as closely as possible. Your options include None (no dithering), Ordered (minimal dithering, minimal file size increase), and Diffusion (maximum dithering, maximum file size increase). • Palette Type. Lets you tell Flash which 256 colors to use to create the GIF image. (GIFs are limited to 256 colors, but you get to pick which 256.) Your options include Web 216 (web-safe colors), Adaptive (non-web-safe colors), Web Snap Adaptive (a mix of web-safe and non-web-safe colors), and Custom (lets you specify a color palette you’ve saved as an .act file, using a program like Fireworks). Depending on the image you’re publishing, one of these options may yield better-looking results—although in most cases, you want to leave this option set to Web 216. • Max colors. Available only if you’ve selected a palette type of Adaptive or Web Snap Adaptive (see above), this option lets you specify a maximum number of colors lower than 256 to save on file size. • Palette. Available only if you’ve selected a palette type of Custom (see above), this option lets you type the filename of your own custom color palette. The palette has to have been created using another program, like Fireworks, and saved with the .act file extension. If you prefer, you can click the file icon to browse your computer for the palette filename. 5. Click Publish. The Publish Settings window disappears, and Flash generates a GIF file based on the name you set in the Formats tab. If you didn’t type a name, Flash names the GIF file based on your .fla filename. For example, if the name of your Flash document is myAnimation.fla, then Flash generates a file named myAnimation.gif. Publishing a JPEG JPEG (Joint Photographic Experts Group) files typically don’t end up being as small as GIF files, but they can contain many more colors. Sometimes referred to as the “photo format,” JPEG is the best choice if your image, like a scanned-in photograph, contains lots of colors, subtle shading, or gradient effects. To publish a frame of your animation as a JPEG file: 1. In the timeline, click to select the frame you want to publish. Flash highlights the selected frame. On the stage, you see the image you’re about to publish. 2. Choose File→Publish Settings. The Publish Settings dialog box appears. Chapter 20: Publishing and Exporting www.it-ebooks.info 693 Publishing Your Animations 3. Turn on the checkbox next to JPEG Image. The JPEG publishing settings shown in Figure 20-12. appear. If you don’t see the JPEG settings, click the words “JPEG image” next to the checkbox. Figure 20-12 Publishing a frame of your animation as a JPEG file is a pretty cut-and-dried process. As you can see here, the only options Flash gives you are to specify your image’s size and quality. 4. Choose one or more of the following publishing options: • Size: Match movie tells Flash to create a JPEG image the same size as the stage. • Width/Height. Tells Flash how large you want the JPEG file to be, in pixels. These options are available only if you haven’t turned on “Match movie,” described on page 687. • Quality. Tells Flash how much detail you want it to include. The larger the number you type (or specify by dragging the slider), the better your JPEG image will look, and the larger your JPEG file size will be. (Depending on your particular image, the image quality may appear similar enough at different quality levels that you can get away with a lower number, thereby whittling away at your animation’s finished file size. See page 671 for more on optimization.) • Progressive. Similar to the GIF Interlace option (page 691), turning on this option tells Flash to create a JPEG that downloads in several passes, so that a fuzzy version appears first, then a clearer version, then a still clearer version, and so on. Turning on this option doesn’t reduce download time, but it does give your audience quick successive “tastes” of the image while they’re waiting, which some audiences appreciate. 5. Click Publish. The Publish Settings window disappears, and Flash generates a JPEG file based on the name you set in the Formats tab. If you didn’t type a name, then 694 flash CS6: The Missing Manual www.it-ebooks.info Flash names the JPEG file based on your .fla filename. For example, if the name of your Flash document is myAnimation.fla, Flash generates a file named ­ yAnimation.jpg. m Publishing Your Animations Publishing a PNG Developed to replace and improve on the GIF file format (back when it looked like web developers would have to pay royalties for every GIF they produced), the PNG (Portable Network Graphics) file format offers the best of both worlds: the tiny file size of a static GIF with the support for 24-bit color of a JPEG. PNG files can include transparent (alpha) effects, too. To publish a frame of your animation as a PNG file: 1. In the timeline, click to select the frame you want to publish. Flash highlights the selected frame. On the stage, you see the image you’re about to publish. 2. Choose File→Publish Settings. The Publish Settings dialog box appears. 3. Turn on the checkbox next to PNG Image. The PNG publishing settings shown in Figure 20-13 appear. If you don’t see the PNG settings, click the words “PNG Image” next to the checkbox. 4. Choose one or more of the following publishing options: • Size: Match movie. Tells Flash to create a PNG image the same size as the stage. • Width/Height. Tells Flash how large you want the PNG file to be, in pixels. These options are available only if you haven’t turned on “Match movie,” described on page 691. • Bit depth. Tells Flash how many colors you want the PNG to be able to render. Your options include 8-bit (256 colors, the same as GIF), 24-bit (16.7 million colors), and 24-bit with Alpha (16.7 million colors, plus the ability to render your image background as transparent). The more colors, the larger the file size. • Optimize colors. Reduces file size without sacrificing the quality of your image. You always want to turn this option on. • Interlace. Tells Flash to create a PNG that downloads in several passes, so that a fuzzy version appears first, then a clearer version, then a still clearer version, and so on. Turning on this option doesn’t reduce download time, but it does give your audience quick successive “tastes” of the image while they’re waiting—useful for very large images. Chapter 20: Publishing and Exporting www.it-ebooks.info 695 Publishing Your Animations • Smooth. Tells Flash to smooth (antialias) your image. Turning on this option may improve the look of any text your image contains; it can also save a few bytes of file size. Figure 20-13 Some older web browsers—for example, Internet Explorer versions 6 and earlier— don’t completely support PNG files. If you want to publish a static image but you’re not sure which browser your audience has installed, you may want to opt for GIF or JPEG instead. • Dither solids. Tells Flash to attempt to match any solid custom colors you’ve used as closely as it can by combining two colors (only necessary if you choose a bit depth of 8-bit, as described above). If you don’t turn on this option, then Flash chooses the nearest-in-shade solid color in its palette. • Remove gradients. Tells Flash to convert the gradients in your image to solid colors to save on file size. • Dither. Tells Flash to dither (mix two colors) to try to match all the nonsolid areas of your image as closely as possible (necessary only if you’ve chosen a bit depth of 8-bit). Your options include None (no dithering), Ordered 696 flash CS6: The Missing Manual www.it-ebooks.info (minimal dithering, minimal file size increase), and Diffusion (maximum dithering, maximum file size increase). Publishing Your Animations • Palette Type. Available only if you chose a bit depth of 8-bit (see page 695), this option lets you tell Flash which 256 colors to use to create the PNG image. Your options include Web 216 (web-safe colors), Adaptive (nonweb-safe colors), Web Snap Adaptive (a mix of web-safe and non-web-safe colors), and Custom (lets you specify a color palette you’ve saved as an .act file, using a program like Fireworks). Depending on the image you’re publishing, one of these options may yield better-looking results—although in most cases, you want to leave this option set to Web 216. • Max colors. Available only if you’ve selected a Palette Type of Adaptive or Web Snap Adaptive (see above), this option lets you specify a maximum number of colors lower than 256 to save file size. • Palette. Available only if you’ve selected a Palette Type of Custom (see above), this option lets you type the filename of your own custom color palette. The palette has to have been created using another program, like Fireworks, and saved with the .act file extension. If you prefer, you can click the file icon to browse your computer for the palette filename. • Filter options. This option lets you tell Flash to apply an additional compression algorithm when it’s creating your PNG file. Normally, you don’t use this option unless you’re trying to pare down your PNG file by a few bytes. Your options include None, Sub, Up, Average, Paeth, and Adaptive. 5. Click Publish. The Publish Settings window disappears, and Flash generates a PNG file based on the name you provide. If you don’t type a name, Flash names the PNG filename based on your .fla filename. For example, if the name of your Flash document is myAnimation.fla, Flash generates a file named myAnimation.png. Publishing as an Animated GIF In addition to static images, the GIF file format lets you create animated images. Animated GIFs are mini-animations that play right in the web browser, with no need for a Flash Player add-in. The quality isn’t always stellar, and your audience can’t interact with them (which is why Flash was invented). But depending on how long your animation is, and what quality of playback you’re shooting for, they can be an impressive alternative. To publish your animation as an animated GIF file: 1. Choose File→Publish Settings. The Publish Settings dialog box appears. 2. Turn on the checkbox next to GIF Image. The GIF publishing options shown in Figure 20-14 appear. Chapter 20: Publishing and Exporting www.it-ebooks.info 697 Publishing Your Animations 3. Set the publishing options you see in Figure 20-14 just as you would for a static GIF file (page 691), except for the following: • Static/Animated. This option tells Flash whether to create a static or animated GIF file. Make sure you turn on Animated. Figure 20-14 Animated GIFs are amazing creatures: small, decent quality (especially if you’re only talking about a few frames), and as easy to include in an HTML file as a static GIF file (the basic line of HTML code you need is ). The only extra settings you have to specify for an animated GIF, as opposed to a static GIF, are whether you want the animated GIF to loop continuously, loop a few times, or not loop at all. • Loop continuously. Turn on this option to tell Flash to replay the animated GIF over and over again. • Repeat times. Tells Flash to create an animated GIF that automatically plays the number of times you type into the “times” box. 4. Click Publish. The Publish Settings window disappears, and Flash generates a GIF file based on the name you set in the Formats tab. If you didn’t type a name, then Flash names the GIF file based on your .fla filename. For example, if the name of your Flash document is myAnimation.fla, then Flash generates a file named myAnimation.gif. Publishing as a Standalone Projector A projector is the equivalent of an .swf file and a copy of Flash Player all rolled up into a single executable file. When you create a projector, your audience doesn’t need to have either a web browser or Flash Player installed on their computers: All they need to do to play your animation is to run the projector file. You’ll want to choose this option if you want to deliver your animation on a CD or DVD (as opposed to over the web). Tutorials, product demonstrations, and program mock-ups (as well as the programs themselves) are all examples of the kinds of animations you might want to publish as projectors. 698 flash CS6: The Missing Manual www.it-ebooks.info Note If you plan to distribute a Flash projector to folks outside your company, take a look at the Adobe Player Distribution License, a legalese description of what you can and can’t do with your projector files. Adobe may change the location of this document, but the time of this writing, you can find a copy online at www.adobe.com/ products/players/fpsh_distribution1.html. Exporting Flash to Other Formats To publish your animation as a standalone projector: 1. Choose File→Publish Settings. The Publish Settings dialog box appears. 2. Turn on the checkbox next to one or both of the following, depending on the operating system you expect your audience to be running: • Windows Projector (.exe) to create a projector that runs on Windows. • Macintosh Projector to create a projector that runs on the Mac. 3. Click Publish. If you chose “Windows Projector (.exe),” Flash generates an .exe file. If you chose Macintosh Projector, Flash generates an .app file. Flash names the files based on the names displayed in the Formats tab. For example, if the name of your Flash document is myAnimation.fla, Flash generates files named m ­ yAnimation.exe or myAnimation.app. Exporting Flash to Other Formats Exporting your entire animation—or one or more of the individual frames that make up your animation—is very similar to publishing. In both cases, you get to specify which file format you’d like Flash to write, and in both cases, you get to tweak file settings based on the file format you choose. Flash designates the most common file formats (.html, .swf, .gif, .jpg, .png, and projector files) as publishing destinations, and all other file formats as export destinations. Most of the time, you’ll export (rather than publish) an image, sound, or your entire animation when you want to work with it in another graphics or animation program. To export to a single frame image, select File→Export→Export Image. To export to an animation (multiframe) file format or an audio format, select File→Export→Export Movie. In Flash Professional CS6, there are very few differences in the available formats for Macs and PCs. The most significant is that Windows computers can write to the Windows BMP, AVI, and WAV formats. Table 20-1 shows the available formats. Table 20-1 File formats to which you can export your Flash animation Format Extension Note SWF movie .swf Single frame image Adobe FXG .fxg Single frame image Chapter 20: Publishing and Exporting www.it-ebooks.info 699 Exporting Flash to Other Formats Format Extension Note Bitmap .bmp Single frame image JPEG image .jpg Single frame image GIF image .gif Single frame image PNG image .png Single frame image SWF movie .swf Animation Windows AVI (Windows only) .avi Animation QuickTime .mov Animation Animated GIF .gif Animation WAV audio (Windows only) .wav Audio JPEG sequence .jpg Animation GIF sequence .gif Animation PNG sequence .png Animation Gem in the Rough Exporting to HTML5 with CreateJS As web standards evolve, HTML5, CSS and JavaScript have taken on some of the functions that were originally in Flash’s domain. What’s a Flash designer/developer to do with all those hard earned Flash skills. Well, one new thing you can do is develop projects in Flash and export them to HTML5 with a third party extension called CreateJS (www.createjs.com). It won’t be suitable for every project you create. For example, the CreateJS extension knows how to work with Classic tweens, but at the time this was written it couldn’t handle motion tweens. To use CreateJS, you need to download the extension and then install it using the Adobe Extension manager. After you’ve done that, you’ll find the Toolkit for CreateJS panel under Windows→Other Panels→Toolkit for CreateJS. You can run the extenstion by going Command→Publish to CreateJS. Exporting the Contents of a Single Frame Exporting the contents of a single frame of your animation lets you create a oneframe animation or (more commonly) an image file you can edit with another image-editing program. 700 flash CS6: The Missing Manual www.it-ebooks.info Note Exporting an image from one animation and then importing the image into another animation is one way to share images between Flash documents. You can also share by saving the image as a graphic symbol in one animation, and then using the Library panel’s drop-down list to add the symbol to another animation, as described in Chapter 7. Exporting Flash to Other Formats 1. On the stage, click to select the frame you want to export. Flash highlights the selected frame. 2. Choose File→Export→Export Image. The Export Image dialog box you see in Figure 20-15 appears. Figure 20-15 The Export Image dialog box lets you export a frame to standard image formats: SWF movie, Adobe FXG, JPEG, GIF, or PNG file. 3. From the pop-up menu, choose the file format to which you want to export. In Windows, this menu is called “Save as type”; on the Mac, it’s called Format. 4. In the Filename (Save As) box, type a name for your exported file. Leave the file extension Flash suggests. 5. Click Save. Flash displays an Export window containing format-specific settings, as shown in Figure 20-16. Chapter 20: Publishing and Exporting www.it-ebooks.info 701 Exporting Flash to Other Formats 6. In the Export window, set one or more export options, and then click OK. Flash exports the contents of your frame to the file format you chose in step 3. Figure 20-16 The settings window you see after you click Save (and even whether you see one or not) depends on the format you’re exporting to. Here, you see the settings window for the PNG format. Exporting an Entire Animation Exporting your animation to another file format lets you edit the animation using another animation program, like Apple’s QuickTime. You might want to do this if, for example, you want to combine frames from Flash and QuickTime animations into a single animation. 1. Choose File→Export→Export Movie. The Export Movie dialog box you see in Figure 20-17 appears. Figure 20-17 The Export Movie dialog box lets you export your animation to a variety of formats, several of which will be familiar to you if you’ve had a chance to check out the section on publishing (page 677). 702 flash CS6: The Missing Manual www.it-ebooks.info 2. From the pop-up menu, choose the file format to which you want to export. In Windows, this menu is called “Save as type”; on the Mac, it’s called Format. Exporting Flash to Other Formats 3. In the Save As box, type a name for your exported file. Leave the file extension Flash suggests. 4. Click Save. Flash displays an Export window containing format-specific settings, as shown in Figure 20-18. Figure 20-18 When you export your animation, Flash displays the same settings you see when you publish your animation. From Flash’s perspective, the two processes are the same, but you may appreciate the convenience of publishing over exporting. For example, when you publish your animation, Flash lets you save your settings in an easy-to-reuse publish profile (see the box on page 684). Not so when you export your animation. Figure 20-19 You can create sprite sheets from the symbols in your library. Sprite sheets and their accompanying JavaScript code are used for creating animated web pages using HTML5, CSS and JavaScript. Chapter 20: Publishing and Exporting www.it-ebooks.info 703 Exporting Flash to Other Formats 5. In the Export window, set one or more export options, and then click OK. Flash exports the contents of your frame to the file format you chose in step 2. Frequently Asked Questions Generating Sprite Sheets from Flash What’s a sprite sheet and why would I want to generate one? 704 In the olden days of the web you almost always turned to Flash to create animations. These days there are more options because HTML, CSS and JavaScript have new capabilities. If you’re working with a team or on an HTML only website you may want to export a Flash animation to an HTML and JavaScript project. image on the web. It takes less time to download one large image than it does to download lots of small images. This is particularly important when developing games or other timedependent animations. Sprite sheets take advantage of this. Each frame of your running bird animation is placed in a single image and JavaScript code is produced to identify each frame. So, what’s a sprite sheet and how does it fit in? Perhaps you have an animated character such as a large desert bird that likes to run down the highway. You have all it’s foot motions animated and they’re stored in a Flash symbol. You could export each frame of that animation as individual images (gif, png or jpeg). However, that’s not the best way to serve up an animated You can generate a sprite sheet for a symbol, by right-clicking it in the Library panel and choosing Generate Sprite Sheet. A window appears (as shown in Figure 20-19) where you can adjust settings like size and background color and choose the image format. Clicking Export generates both the sprite sheet and the necessary JavaScript code. flash CS6: The Missing Manual www.it-ebooks.info chapter Introducing Adobe AIR 21 F lash began life as a program for creating cool animations in files small enough to send over the Internet. Flash has evolved since then, gaining the ability to create interactive animations using ActionScript. During the same period, the Internet grew up, and the line between desktop applications and web-based services has blurred. The next step in Flash’s evolution is the ability to create desktop and mobile applications. After all, not all computers are connected to the Internet all the time. Better still, desktop programs don’t have the limitations of browser-based apps, which are, for safety’s sake, restricted in the ways they can read and write to files on your computer. And so Adobe developed the AIR system for creating applications that run outside a web browser. AIR lets you develop powerful applications using your Flash and ActionScript skills, and do it quickly. This chapter introduces the concepts behind Adobe AIR and shows you how to create a bare-bones AIR application. You’ll learn how to convert your existing Flash animations into an AIR desktop application. Throughout, you’ll find tips explaining where you can learn more about AIR and how other developers are using it. The following chapters show how to apply your AIR skills when building apps for the iPhone operating system (iOS) and Android handhelds. Meet Adobe AIR If you’re interested in developing desktop applications or applets that can run on Windows, Mac, and even Linux computers, read on. AIR stands for Adobe Integrated Runtime. In programmer-speak, a runtime, sometimes called a runtime environment, works sort of like a translator. You can write a program in a relatively human 705 www.it-ebooks.info Meet Adobe AIR language like ActionScript, and the runtime translates your code into the 1s and 0s that a PC understands. For example, you can display an object on a computer screen using ActionScript’s addChild() method—one line of code. Flash Player (the runtime environment) pushes around a bunch of bits and bytes to manipulate specific pixels on the screen. The fact that Adobe has Flash Players for Windows, Mac, and Linux computers means you can write one Flash animation that plays everywhere. You don’t have to worry about all the differences among those operating systems. Adobe has done that work for you. The same runtime concepts apply to AIR. Like Flash Player, AIR is a runtime environment, but there are significant differences between AIR and Flash Player, making each suited for different types of projects. From the beginning, AIR was designed to let Flash designers and web developers use their expertise to build programs that run on computer and mobile desktops instead of within web browsers. Many AIR programs retrieve and store data on a web server, but they also have the ability to work with the local files on a computer in ways not available to a browser-based app. For example, eBay Desktop (­Figure ­21-1) is an AIR app that lives on the desktop and shuffles data stored on a web server when there’s an Internet connection. But other AIR applications can browse through a computer’s file system and then open a file in the associated application; for example, Word docs in Word, and MP3s in media players. AIR applications can be designed to recognize when cameras, thumb drives, or other storage devices are connected or disconnected. You can use input from microphones in your AIR app to create audio notes or other features. Figure 21-1 The eBay Desktop is an example of an AIR application. You install it to run like a desktop program, but it uses web-based data to give you real-time updates on auctions and other eBay services. 706 flash CS6: The Missing Manual www.it-ebooks.info The Integrated part of the Adobe Integrated Runtime name comes from the fact that AIR was designed as a system that gives developers the opportunity to use the skills they’ve already learned. It’s not limited to Flash and ActionScript. If you’re an HTML and JavaScript wizard, you can create an entire AIR application using those tools. If you’re proficient in JavaScript and ActionScript, you can use a combination of those tools to build your app. Naturally, Adobe hopes you’ll use its tools to create your apps, so you’ll find AIR capabilities built into lots of its tools, not just Flash and Flex. For example, Dreamweaver and Fireworks have AIR capabilities, too. Creating Your First AIR Application Differences Between AIR and Flash Both AIR and Flash are available for Windows, Mac, and Linux computers, so you can focus on developing one great program and you don’t have to sweat the details of different operating systems. In spite of that, there are many ways AIR applications and Flash animations differ. Here’s a list of the main differences: • AIR uses the Adobe AIR runtime. Flash uses the Flash Player (also a runtime environment). • Most AIR applications run in a desktop window. Flash usually uses a browser window. • AIR programs can be developed using a combination of tools: Flash, Flex, HTML, XML, and JavaScript. Flash animations are most often developed using Flash Professional, Flash Builder, or Flex. • An AIR application must be installed on a computer like any other desktop application. Flash animations simply require that the Flash Player be present. According to Adobe, Flash Player is installed on well over 90 percent of computers. • Because it’s installed on a computer like any old program, an AIR application requires a code signing certificate. This bit of security verifies the source of the program (see page 710). Flash animations don’t require a code signing certificate. Tip Want to see some snazzy examples of AIR programs? Go to http://www.adobe.com/cfusion/marketplace/ and click OSMF Marketplace. (OSMF stands for Open Source Media Framework.) As shown in (Figure 21-2) you’ll see a variety of apps to download. They’re displayed with descriptions and ranked by users. Creating Your First AIR Application Developing a bare-bones AIR application is simple. If you’ve worked through a fraction of the exercises in this book, you have the skills to build an AIR app. By doing a simple “Hello, World” exercise, you’ll learn that you already have all the computer resources and programming skills you need to produce a working application. Follow these steps to create an animator’s version of the old, reliable “Hello, World” program that’s given so many people their first taste of a new programming language. Chapter 21: Introducing Adobe AIR www.it-ebooks.info 707 Creating Your First AIR Application 1. Choose File→New→AIR, as shown in Figure 21-3. Flash creates a new document with a stage and timeline that looks just like your usual Flash workspace. Behind the scenes, there are differences, because Flash creates a document that uses the AIR runtime instead of Flash Player. Figure 21-2 Taking a page from the iTunes App Store, Adobe created the AIR Marketplace, where developers can showcase and sell their creations. Want to learn what others are doing with AIR? Go to www.adobe.com/cfusion/ marketplace/. Already have a finished AIR app? Maybe yours will make the Highest Rated or Most Popular lists. 2. Click the Text tool, and then in the Properties panel, choose TLF Text and Read Only. You use the same tools for AIR apps as you use for Flash animations. 3. Click the stage and type some text, such as Hello Adobe AIR World . Change the font, color, and size so that it’s large and attractive on the stage. 4. In the timeline, click Frame 48 and then press F5. Flash adds new frames to the timeline. 5. Right-click (Control-click) the timeline and then choose Create Motion Tween. The timeline changes to light blue, indicating a motion tween. 6. Move the playhead to Frame 48. 708 flash CS6: The Missing Manual www.it-ebooks.info Creating Your First AIR Application In the next step, you’ll create a new property keyframe at this location. 7. In the Transform panel (Window→Transform), set Rotate to 720. That’s enough to make the text field spin twice. Figure 21-3 Starting an AIR project in Flash Professional is similar to starting any project, but instead of choosing ActionScript 3.0, choose AIR 2. This way Flash knows your project will use the AIR runtime instead of the Flash Player. 8. Click the New Layer button and name the new layer actions. Time to add a smidgen of ActionScript, just to prove that it works in AIR. Keep in mind, your AIR applications use ActionScript 3.0 and won’t work with ­ActionScript 2.0 or earlier. 9. Right-click the 48th frame of the actions layer and press F6. A blank keyframe appears in the timeline, where you can add some code. 10. Press F9 (Option-F9) or choose Window→Actions to open the Actions panel. You have access to the same ActionScript coding tools, including code hinting and code snippets. 11. Type stop(); . This line simply stops the animation when it reaches the last frame. 12. Press Ctrl+Enter (⌘-Return). After a little computing, your animation runs in a standard window that matches your Windows or Mac operating system, as shown in Figure 21-4. Additional details about the app appear in the Output panel. Chapter 21: Introducing Adobe AIR www.it-ebooks.info 709 Create a Code Signing Certificate Your first attempt at an AIR project proves that the various parts work. You use the standard tools, including tweens and ActionScript, to build applications that run in the Adobe Integrated Runtime. Figure 21-4 Simple, yes. Underwhelming, probably. You might even say this example looks identical to a Flash animation when you test it. That’s true, but remember that different things are going on under the hood. Instead of using Flash Player, your AIR application is powered by the AIR runtime. Note Interested in the process of developing a complex AIR app? There’s a story on Adobe TV about an application developed by the Fiat car company. Its program uses data that’s recorded to a thumb drive while your car is running. Plug the thumb drive into your computer at home, and the AIR app provides details on how to drive more economically to reduce your carbon emissions. Your data is pooled with other drivers in the Fiat community. According to the developers, the AIR app was developed in about five to six months. To find the video, go to http://tv.adobe.com and search for the word Fiat. The video runs about 20 minutes, describing the project from both the client’s and the developer’s point of view. Create a Code Signing Certificate In the previous exercise, you wrote an AIR app that you can test inside Flash, but that’s about all it can do. You can’t save it in a format that runs outside Flash or share it with your friends. If you want to produce a program that runs as a standalone desktop app and distribute it, you need to give people a way to confirm where it’s coming from. In other words, you need to get a code signing certificate. After all, if you’re going to send this app to other people’s computers, they need to make sure it’s really coming from you—a known and trusted source. 710 flash CS6: The Missing Manual www.it-ebooks.info In the bad old days when the Internet was young, just about any website you visited could install and run (or trick you into running) an evil program on your computer. There are still bad folks out there trying to push malware onto unsuspecting computers, but life online is somewhat safer. The safer environment is due in part to certificates—a system that authenticates the source of a program. If a program asks you to install it on your computer, you can check its certificate to see if it’s genuinely from, say, Adobe or Microsoft and not from 16-year-old Todd, aka ­GrimHackerOfAnarchy. If you expect strangers to install your apps on their computers, you should get a code signing certificate from a company like Thawte (www. thawte.com). You’ll find they aren’t cheap—about $300 for a year or $550 for two years. When you distribute your software, people can check with Thawte or some other certificate authority (CA) to see if you’re really who you say you are. And of course, if something goes wrong, they’ll be able to hunt you down through the CA. Create a Code Signing Certificate All AIR programs require a certificate before you can publish them. That certificate can be a third-party code signing certificate from a CA, or if you’re not ready for the big time, you can create what’s known as a self-signed certificate. With a selfsigned certificate, you’re vouching for yourself, which is good enough for testing or for distributing an app among friends and colleagues who know and trust you. If you decide to go the self-signed route for now, here’s how: 1. Choose File→New→AIR. Flash creates a new Adobe AIR document. This step also activates some menu options specific to AIR projects. 2. Choose File→“AIR 3.2 for Desktop Settings.” The “Application & Install Settings” panel opens. It includes tabs labeled General, Signature, Icons, and Advanced. (AIR 3.2 was the latest version when this was written. It’s likely that AIR 3.3 or some other version will appear here in the future.) 3. Click the Signature tab. The Signature tab displays a form where you can enter details related to code signing certificates, as shown in Figure 21-5. The More Info button leads to the Adobe website. 4. Next to Certificate, click the Create (New on a Mac) button. A form like the one in Figure 21-6 appears, where you create and issue your own certificate. 5. Fill in the form details, and then click OK. Use your name or company name as the Publisher. All the fields need to be filled in, but you can repeat your name in the Organization name field and use something like Company or Developer for the Organization unit. Provide a password and leave the Type set to 1024-RSA. Click the folder next to “Save as,” and navigate to a folder on your computer where you want to store the ­certificate. Chapter 21: Introducing Adobe AIR www.it-ebooks.info 711 Create a Code Signing Certificate When you click OK, if all is well, you see a message telling you that a certificate was created. If you missed a field or made some other mistake, you see an alert message. Figure 21-5 When you create a self-signed certificate, you enter information about your organization, including a name and password. If you use a third-party certificate, the issuing company provides details you can enter in this form. (The Windows version looks slightly different, but the functions are the same.) 6. Click OK. You return to the Signature tab, where your new certificate is listed in the Certificate field. Unless you provided a new name, it’s named something like mycert.p12. 7. In the Password box, type the password you created in step 5 and turn on “Remember password for this session.” Click OK. 712 flash CS6: The Missing Manual www.it-ebooks.info Your audience’s computers will use the certificate you create to authenticate the files included in your AIR project. You can go ahead and Publish—that is, compile and package—an AIR application. If you don’t have a certificate, Flash won’t let you publish in AIR. Convert a Flash Animation to AIR 8. Optional: If you’re ready to publish, then instead of clicking OK, click Publish. Flash creates the files for your AIR project, which at a minimum include a main .swf file and an .xml descriptor file. These are stored in a single .air file, which is the one you distribute to your audience. If your project includes other assets like sound or video, they’re also stored in the .air file. Your completed AIR app can be distributed as a download from a website, a file on a disk, or an attachment to an email. For more details on publishing, see page 677. Figure 21-6 Creating a self-signed certificate is pretty much a fill-in-the-blanks job. Flash creates a certificate and stores it on your computer. With this kind of certificate, you can publish AIR apps and give them to people, but your self-signed certificate might not be enough if you want to distribute your app to the world at large. Convert a Flash Animation to AIR If you follow the steps on page 707, you can create a new AIR application from scratch. You can use all your Flash tools and skills to build a new application. On the other hand, you may have a great Flash animation that you’d like to convert to AIR. That’s not hard to do. It’s really just a matter of creating a new AIR document and then opening your Flash project in another tab. Then you can copy content from the Flash animation to the AIR project. To give it a try, you can use the Photo Gallery project from Chapter 7. The file in the Missing CD (www.missingmanuals.com/cds/ flashcs6mm) is named 21-1_Flash_Gallery.fla. 1. Choose File→New→Adobe AIR. A new AIR document opens in Flash. Chapter 21: Introducing Adobe AIR www.it-ebooks.info 713 Convert a Flash Animation to AIR 2. Choose Modify→Document. Then in the Document Settings, change the document width to 800 px and the height to 600 px. Set the background color to a light gray (#999999). Click OK. After you change the dimensions and click OK, the stage changes to the new color and larger size. 3. Choose File→Save As, and save this empty document using the name ­ IR_­Gallery.fla . A The tab for this project changes from “untitled” to its new name: AIR_Gallery.fla. 4. Choose File→Open and then find 21-1_Flash_Gallery.fla . You have two documents in the Flash workspace, the AIR document and the Flash Photo Gallery animation. As shown in Figure 21-7, the workspace holds two projects. Figure 21-7 When you have two projects open, you can jump back and forth between them by clicking on their tabs. In this case, one project is a Flash animation, and the other is an AIR project. Note The Photo Gallery consists of nine photos which, when clicked, spin around and expand to fill the stage. A second click reduces them to their former thumbnail size. Motion tweens create the animation, and event listeners handle the mouse clicks. You’ll find stop() methods in the code to keep the animation from continuing to play at key points. Labels (page 524) are used as timeline markers for the gotoAndPlay() methods. 714 flash CS6: The Missing Manual www.it-ebooks.info 5. In the 21-1_Flash_Gallery.fla animation, drag the edge between the timeline and the stage so you can see all the layers in the timeline. Publish Your AIR Application Once all layers are visible, you see the top layer named “instructions” and the bottom layer named “Gallery.” 6. Right-click (Control-click) any frame in the animation, and then choose Select All Frames from the shortcut menu. Once selected, all the frames in the animation show a blue highlight. 7. Right-click (Control-click) a second time and then choose Copy Frames from the shortcut menu. The contents of every frame in your animation are stored on the Clipboard. 8. Click the AIR_Gallery.fla tab. The empty AIR project fills the workspace. 9. Right-click the first frame (the only frame) in the first layer of the timeline. Then choose Paste Frames. The timeline in the AIR project fills with the frames and layers that were in the Flash animation. All the tweens and labels show in the timeline. All the layers are named as they were in the Flash animation. 10. Click the Library or go to Window→Library. The symbols and JPEG photos used in this project are listed in the Library. 11. Press Ctrl+Enter (⌘-Return). The AIR project behaves like the original Flash animation. Your AIR document now has all the assets and functions that were in the original project. If you want to examine the code in the project, press F9 (Option-F9) and take a peek. If you’re happy with the project, save it and go on to the next section to publish it. If you want, you can make changes such as swapping some of the pictures or developing some new features. AIR projects have capabilities not available to Flash animations, so in the Actions panel, you’ll find AIR packages with classes, properties, methods, and events, like those shown in Figure 21-8. For more details and documentation, go to http://labs.adobe.com/technologies/air. Publish Your AIR Application Once you’ve got your AIR project squared away, you’ll want to test it, debug it, and ultimately distribute it to your audience, just like a Flash animation. In Flash-speak, that means you need to publish your project. The process for publishing an AIR project is different from publishing a Flash animation. For one thing, as explained on page 710, you need a code signing certificate. Usually, Flash animations consist of one or more SWF files and sometimes some HTML code to create a web page. On Chapter 21: Introducing Adobe AIR www.it-ebooks.info 715 Publish Your AIR Application the other hand, AIR applications are distributed as a single .air file, which holds all the project’s stuff. Your audience uses that .air file to install the program and all the necessary files on their computers. As part of that process, the installation routine checks to make sure the AIR runtime is on the local computer. If it isn’t, your user is prompted to install it. The following steps show you how to publish your AIR project. (You can use your own project or the example from page 707.) Figure 21-8 There are special packages and classes you can use with AIR projects. Open the Actions panel, and you see several packages that begin with the name “air.” AIR methods have a special icon (circled) next to their names in the Actions window and in the ActionScript documents. 1. With your AIR project open in Flash, choose File→“Adobe AIR 3.2 for Desktop Settings.” The “Application & Installer Settings” window opens, displaying the General tab. Parts of the form are probably already filled in, such as the Output filename. In any case, here’s a rundown on all the text boxes and widgets: • Output file. The name of the file that you distribute to people who want to install and run your application. The filename ends in .air to indicate that it’s an Adobe AIR application/installation file. Click the folder icon to choose a folder for the file that Flash creates during the publish process. Turn on the Windows or Mac installer box to create an .exe installer for Windows computers or a .dmg installer for Macs. • Output as. You have three choices: An “AIR package” contains all the files necessary to run your application except for the AIR runtime; use this option if you think your target audience will already have AIR runtime installed. “Windows installer” (or “Mac installer”) lets you create a standard installation program for your app. “Application with runtime embedded” creates a standalone application. 716 flash CS6: The Missing Manual www.it-ebooks.info • App Name (Name on the Mac). The application name that appears on the window when the program is running. Publish Your AIR Application • Version. The version number for your application. You need to update this when you make improvements to your program. • App ID. The name AIR uses for this application. By convention, AIR developers use the reverse of their website address and the app name. For example, something like com.MissingManuals.AIR_Gallery would be appropriate. • Description. Your description of your program. What does it do? Who would find it helpful? • Copyright. Protect your work with a copyright notice and date. • Window style. This option determines the appearance of the window that holds your application, called chrome in geekspeak. Choose System Chrome to have the window match the Windows, Mac, or Linux system it runs on. As an alternative, you can choose Custom Chrome (opaque) or Custom Chrome (transparent). • Profiles. Choose where your program is intended to run. Options are Desktop, Mobile Device, Extended Desktop, Extended Mobile Device, TV, and Extended TV. • Included files. Flash automatically adds files needed for your AIR app. In the Photo Gallery project, it adds AIR_Gallery.swf and AIR_Gallery-app. xml (the descriptor file). If your project needs additional assets, like photos, videos, or sound files, you can add them by clicking the + button, as shown in Figure 21-9. 2. Click the Signature tab and add your certificate name and password. If you created a self-signed certificate, as explained on page 710, you can use that here. Use the password you assigned to the certificate. If you have a certificate from a third-party certificate authority, use the details it provided for the certificate name and password. 3. Click the Icons tab. You use the Icons tab, shown in Figure 21-10, to define program icons used by the various operating systems (Windows, Mac OS X, Linux) to represent your application. In pixels, icons are expected to be the following sizes: 16 x 16, 32 x 32, 48 x 48, and 128 x 128. Use a program like Fireworks or Photoshop to create and size your icons. For this exercise, you can create your own or use the icons found on the M ­ issing CD (www.missingmanuals.com/cds/flashcs6mm) in the file 21-2_­Gallery_Icon.zip. The examples are named gallery_icon_16.png, ­ allery_icon_32.png, gallery_icon_48.png, and gallery_icon_128.png. g Chapter 21: Introducing Adobe AIR www.it-ebooks.info 717 Publish Your AIR Application 4. In the Icons tab, select “icon 128x128.” Then click the folder button to find and open the file gallery_icon_128.png. After you click Open, the selected icon appears in the Preview pane at the bottom. Figure 21-9 The .air files created during the publishing process hold all the items needed to install an AIR application. You can add files or remove files and folders using the buttons in the “Included files” section of the “­Application & Installer Settings.” 5. Repeat the process to add all four icon sizes to your project. When you’re finished, four icons of different sizes are associated with your project. When your AIR app is installed on someones desktop, their operating system will uses the icons to represent the program. Different sizes are used for different OS contexts. 718 flash CS6: The Missing Manual www.it-ebooks.info 6. Click the Advanced tab. You use the advanced options to create file associations, to manage the program window size and behaviors, and to designate the folder for installation files and menus. This simple test program doesn’t use any of the advanced features, so there’s no need to make changes unless you’re feeling adventurous. Publish Your AIR Application Figure 21-10 Use the Icons tab to associate program icons with your AIR application. The host operating system uses these images to display thumbnails at various sizes. 7. Click Publish. You can use the Publish button on the “Application & Installer Settings” window, or you can use the standard File→Publish command. In either case, Flash creates an .air file that holds all the assets needed to run your application. If you selected the installer option, then Flash creates either an .exe installer for Windows or a .dmg installer for Macs. Chapter 21: Introducing Adobe AIR www.it-ebooks.info 719 Manually Install Adobe AIR Runtime Once your project is published, you can distribute the .air file or one of the installer files (.exe or .dmg). When your fans double-click the file, your application installs itself. If the AIR runtime is not present on the local computer, the installer prompts the person to download and install it. Manually Install Adobe AIR Runtime The strategy for AIR is similar to the one for Flash Player. Hopefully, your audience will already have AIR installed on their computers because they’ve used some other AIR program. If AIR isn’t present, the program invites your audience to install AIR when they install your program. The process is simple—all they have to do is answer a couple of questions to accept the installation. It makes the installation of your program a little longer, but in most cases it won’t be more than 10 to 30 seconds. And most of the time you won’t need to provide any special instructions for installing the AIR runtime environment. For any unusual circumstances that may come up, it’s good to know you can always find the latest version of AIR at http://get.adobe.com/air. 720 flash CS6: The Missing Manual www.it-ebooks.info chapter Making iPhone Apps 22 I n spite of some well-publicized squabbling between Apple and Adobe, it is possible to use your Flash tools and know-how to create apps for the iPhone, iPod Touch, and iPad. You can use either the Mac or Windows version of Flash CS6 to create and package apps that use iOS (Apple’s operating system) for Apple handhelds. The iOS packager that’s built into Flash Professional CS6 translates your animation and ActionScript code into a language that Apple devices understand. Once your app is converted to the right file format, you can test it on Apple gadgets. When it’s perfected, you can submit your masterpiece to the App Store. (Then all you have to do is play Angry Birds while you wait for the big checks to roll in.) In this chapter, you’ll start off with a simple “Hello iPad” app and test it in the AIR ­Debug Launcher (Mobile). If you want to test your app on an iPhone, iPod Touch, or iPad, you have to become a registered developer ($99) and jump through some of Apple’s security-related hoops. Those details take up a substantial chunk of this chapter, but once they’re out of the way, you can create and test iOS apps that include iPad/iPhone gestures and touchscreen behaviors. Note There’s a difference between the AIR apps created with the techniques described in this chapter and Flash content embedded in a web page. Your AIR for iOS apps are actually translated into the language iDevices understand. Flash content on websites requires a browser with a Flash Player plug-in. At this writing, Safari for iPhone, iPodTouch, and iPad didn’t display Flash Player content, because they don’t permit the Flash Player plug-in. However, there are third-party browsers such as Skyfire (www.skyfire.com) that display Flash video and other content on iDevices. 721 www.it-ebooks.info Your First “Hello iPad” App Your First “Hello iPad” App Creating a “Hello World” app is a rite of passage for any new coding endeavor, and your iPad or iPhone project is no different. As the following steps show, creating this simple demonstration using AIR for iOS isn’t much different from creating any simple animation or AIR project. 1. Choose File→New. The New Document window opens. 2. Choose AIR for iOS and click OK. When you click “AIR for iOS,” the width and height for the stage are automatically set to 640 x 960, as shown on the left of Figure 22-1. In future iOS projects, you may want to make changes to the background color or frame rate, but for now leave them as they are. When you click OK, your new iOS stage appears. It looks like an iPhone held in the vertical position. 3. Click the Text tool, and in the Properties Panel set the Text engine to TLF and the text type to Read Only text. No frills for Hello iPad—all it does is display text on one page so you don’t need the overhead of Selectable or Editable text. 4. In the Character settings, set the Family (font) to _serif and the size to 108 . In many cases, it’s best to use the device fonts (_sans, _serif, and _typewriter) when you’re working with iOS. This means the iPad will use the system fonts already installed on the device, which maximizes performance and minimizes your app’s size. 5. Drag to create a text box on the stage and type Hello iPad or a similar message. 6. Press Ctrl+S (⌘-S) to save your work. 7. Go to Control→Test Movie→“in AIR Debug Launcher (Mobile).” Your minimalist app displays your message in its own little window. That small window is officially called the AIR Debug Launcher. See the right of Figure 22-1. As the name implies, the AIR Debug Launcher is a special tool for viewing AIR animations on your computer. Its limitations for testing iOS apps are immediately apparent. No matter how much you tap, swipe, or give your computer screen the two-finger squeeze, the Hello iPad app just sits there. However, if your app was an animation with multiple frames of content, you could use the AIR Debug Launcher to inspect the animation. Fortunately, Adobe includes the Simulator, a special panel devoted to iOS features including touch and gestures, geolocation, and the accelerometer. For more Simulator details, see the box on page 737. To give your app a real-world test, you need to move it to a real iPad. That’s not as easy as installing one of your AIR apps on a new computer. The stumbling block 722 flash CS6: The Missing Manual www.it-ebooks.info is Apple’s security system for the iPhone, iPod Touch, and iPad: You need to join Apple’s Developer program and acquire security certificates. Unfortunately, this step is required even if all you want to do is test your app on your own equipment. Joining the iOS Developer Program Figure 22-1 Left: To create an app for the iPhone or iPad, you start off with the “AIR for iOS” setting in the New Document window. Right: You can test your app on your computer in the AIR Debug Launcher, but it’s usually a less-than-complete iOS experience. Note The operating system for Apple’s popular mobile devices is referred to as iOS. The current version as of this writing is iOS 5.1. Flash Professional CS6 can produce apps that work with version 3.0 and higher. Joining the iOS Developer Program Apple is the gatekeeper when it comes to putting apps on the various iDevices. If you want to share, sell, or even test your app on an iPhone, iPod Touch, or iPad, you Chapter 22: Making iPhone Apps www.it-ebooks.info 723 Joining the iOS Developer Program must join Apple’s iOS Developer program. A yearly subscription for an individual costs $99 (plus tax). Once you’ve joined, you have access to Apple developer tools, help pages, instructional videos, and developer forums. But for Flash developers, the vital materials are the certificates and IDs required to move apps from your computer onto test devices. It’s easy to sign up. Just grab your credit card and go to http://developer.apple.com. There are separate developer programs for iOS, Mac, and Safari. To create apps for handhelds, choose the iOS program and follow the registration procedures. For individual, lone-wolf developers, choose the Standard Individual program for $99. If you’re signing up for a company, choose Company and be prepared to provide additional details to prove your company exists and that it’s a responsible entity. If you’re a really big company, say 500 or more employees, and want to develop and distribute apps internally, check out the Enterprise program. Once you’re a paid-up, official developer, log in and explore the site. Though it’s not covered in this book, you may want to go ahead and download Xcode and the iOS SDK, the tools Apple provides to build apps. You’ll also find the videos, forums and documentation helpful. Note If you’re interested in developing iPhone apps using Apple’s tools, Craig Hockenberry’s iPhone App Development: The Missing Manual (O’Reilly) is a great place to start learning. The Purpose of Developer Certificates and App IDs Apple’s success in selling phones, MP3 players, and tablets relies on more than manufacturing cool gadgets. Experts agree that iTunes and the App Store give Apple products an edge over the competition. People flock to Apple products because they make it easy to buy and organize music, videos, and apps. In the case of apps, whether they’re free or pay-to-play, customers are confident that there’s no malware hidden inside, thanks to Apple’s security system. As gatekeeper to the store, Apple can both certify the individuals and companies offering apps and ensure that customers can’t legally (or accidentally) add apps to their devices without going through iTunes or some sort of security checking system. Note Some iPhone and iPad power users jailbreak their devices, which frees the devices so they can install apps without going through Apple. This process voids the warranty and is, naturally, frowned on by the powers that be, who constantly find ways to disable jailbroken devices. Jailbreaking isn’t covered in this book, but you can find instructions on the Web in seconds. As an app developer, you need to jump through at least four security-related hoops before you can test your app on an iDevice. The requirements are the same whether you’re using Flash or Apple’s tools to create apps. In broad terms, you need to: 1. Get a developer’s certificate. 2. Assign devices for testing. 724 flash CS6: The Missing Manual www.it-ebooks.info 3. Create an App ID for your project. 4. Create and install a provisioning profile on testing devices. Joining the iOS Developer Program If the system sounds complicated and potentially confusing, it is. It might even sound like a lot of rigmarole, when all you want to do is see if your Flash app will actually run on an iPad. The good news is, you can handle all the certificate-creating business on the iOS Provisioning Portal of Apple’s Developer site (Figure 22-2). You apply the certificates and other details to your application within Flash (File→“AIR for iOS Settings”). Once those chores are done, it’s easy to add your app to iTunes and then install it on a testing device. Figure 22-2 Log into the Apple Developer’s site, and you’ll find links to the Provisioning Portal in the upper-right corner. If you need more details on developer certificates, testing devices, App IDs, and provisioning profiles, check out the videos and help files for each topic. The following sections describe the procedures for the four security requirements: developer’s certificate, testing devices, app IDs, and provisioning profiles. Getting a Developer’s Certificate The developer’s certificate is your way of proving you are who you say you are. You only need one certificate to develop multiple apps. Apple, the certification authority, identifies you through your credit card information when you pay to join the Developer program. Apps you design will be signed with the name that is on that credit card. (Keep this in mind if you’re thinking of using someone else’s card to pay for your Developer subscription.) For companies, Apple requests additional business information to prove that the company exists and to establish an address. In either case, you’re held accountable for the apps you develop and distribute. Once you’re a paid-up, official developer, follow these steps on your Macintosh to get your certificate. Chapter 22: Making iPhone Apps www.it-ebooks.info 725 Joining the iOS Developer Program Note Apple would prefer that everyone use Macs to develop iDevice apps, but you can use Windows computers and Flash to develop your apps. The trickiest part is setting up your Windows computer to supply the developer’s certificate when it’s needed. For details, see the box on page 728. Authorize Apple as a Certificate Authority 1. Log into your developer account at https://developer.apple.com/devcenter/ios . 2. In the upper-right corner, click Provisioning Portal. The left side of the Provisioning Portal has links to pages for certificates, devices, app IDs, provisioning profiles, and distribution. Go ahead and create a bookmark for this page. You’ll be back. Tip The right side of the Provisioning Portal has How-To links. Some are text, and some are audio/visual. Later, if you need a refresher on how to get a certificate, a device or app ID, or a provisioning profile, you might find them helpful. 3. Click the Certificates link. The web page displays your developer certificate if you have one. If not, it’s empty. Tip The layout for each of the major sections in the Provisioning Portal is similar. So whether you’re working on a certificate, a device ID, an app ID, or a provisioning profile, the body of the page has tabs at the top. The tab on the far right is labeled How To. If you’re stumped about the procedure at hand, take a look. You’re likely to find some answers. 4. At the bottom of the page, click the link that reads: “If you do not have the WWDR intermediate certificate installed, click here to download now (https: //developer.apple.com/certificationauthority/AppleWWDRCA.cer).” The intermediate certificate that downloads to your computer is named ­ ppleWWDRCA.cer. This is your way of telling your computer that Apple is a A certification authority. (You might be able to skip this step and the next ones if you’ve already used your computer for Apple development projects.) 5. Once the download is complete, double-click the AppleWWDRCA.cer file. Your Keychain Access application opens, and the Add Certificates dialog box appears. 6. Set the menu to login and click the Add button. The Apple World Wide Developer Relations Certification Authority certificate appears in Keychain Access, in the Certificates category, as shown in Figure 22-3. 726 flash CS6: The Missing Manual www.it-ebooks.info Note The keychain is a security system on Macintosh computers that stores passwords and other security related information in one place. The keychain then supplies security-related data to websites and programs as needed. For example, once you’re an authorized iOS developer, information saved in your keychain is used to sign the apps you create. Joining the iOS Developer Program Figure 22-3 By downloading and installing the Apple World Wide Developer Relations Certificate Authority certificate to your keychain, you identify Apple as an authority worthy of providing certificates. Request your developer certificate Now that you’ve authorized Apple as a certificate authority, it’s time to have it give you a certificate. You use the Keychain Access program to create a certificate request, which you will then upload to the Provisioning Portal. 1. Go to Keychain Access→Certificate Assistant→“Request a Certificate From a Certificate Authority.” The Certificate Assistant (Figure 22-4) opens, which will walk you through the process of creating a certificate request. 2. Type the email address and name you used to join the Apple Developer program. Leave the CA email address blank. Click “Saved to disk.” 3. Click Continue. The Certificate Assistant prompts you for a name and location for your certificate request file. You can leave the name as is and save the file to your desktop. It’s not needed after you upload a copy to the Provisioning Portal. 4. Click Done to close the Certificate Assistant. Head on back to the Provisioning Portal using that handy bookmark you created earlier. On the left side of the page, click Certificates. A message appears that says you don’t have a certificate. Click Request Certificate, and use Choose File to find the certificate request you saved on your desktop. When you click Choose, the box closes. On the web page, click Submit, and you’ll see a message letting you know your request has been submitted. On the certificate page, the status of your request is set to Pending Approval. If you’re the boss of a team of developers, you’d approve Chapter 22: Making iPhone Apps www.it-ebooks.info 727 Joining the iOS Developer Program each of their certificate requests for your company. Working alone, you get to approve your own request by clicking the Approve button. It doesn’t take long for a certificate to be issued. So if you wait a minute or two and then refresh the web page, you’ll probably see a Download button. Click the Download button to save the developer_identity.cer file on your computer. Once the download is complete, double-click the file to add it to your keychain certificates. Choose “login” from the menu and click Add. Figure 22-4 The Certificate Assistant collects details from you and then creates a certificate request that you submit to the Provisioning Portal on the Apple Developer’s site. Windows Workaround Getting a .p12 Certificate for Your Windows Computer Apple expects everyone to use Macs when they want to build an app for iDevices, but if you’re creating apps with Flash, you can do your development on a Windows PC. The tricky part comes when it’s time to sign your app with your developer’s certificate. Macs use OS X’s keychain program to install and safeguard the certificate. On a Windows computer, doubleclicking the developer_identity.cer file doesn’t do the job because Windows computers don’t have a keychain access program. The easiest solution is to download and install the developer’s certificate on a Mac and then export a .p12 certificate from the keychain access program. Right-click (Control-click) the certificate name and then choose the Export option. The 728 .p12 certificate can then be moved to a Windows computer and identified in Flash’s AIR for iOS settings. If you don’t have access to a Mac, there’s another solution, but it’s not nearly as easy. You can use OpenSSL (Open Secure Socket Layer) to manage certificates on a Windows computer. OpenSSL can also convert the developer_identity.cer file from Apple into a .p12 certificate. The process involves command line tools and is too lengthy to cover in this chapter; however, there’s a YouTube video that patiently explains how to do it: www.youtube.com/watch?v=4GteMgFvA1Y. flash CS6: The Missing Manual www.it-ebooks.info When you’re done, you’ll see an iPhone Developer certificate in the Certificates category of Keychain Access. If you click the expand arrow next to its name, your name appears under the iPhone Developer certificate with a key symbol. Under the kind column, you see “private key.” It’s that private key that officially identifies you, giving you Apple developer’s rights. No one else has access to your private key. Apps you create are signed with a related “public key.” Joining the iOS Developer Program As you’ll see later, Flash requires a .p12 certificate to publish the IPA file that’s used by iPhones and iPads. Keychain Access can export this for you. Right-click (Controlclick) the certificate name and then choose the Export option. You choose a folder and name for the .p12 file, but remember both; you’ll need this info when you fill out the AIR for iOS settings (page 738). Keychain Access needs two passwords to complete the export process. First, it asks for a password that’s used with the certificate; it then asks for your keychain password. Assigning Devices for Testing A major goal of security is to keep bad apps from being installed on good iDevices. On the other hand, developers need to test apps they’re developing. Apple requires developers to identify specific, individual devices that are used to test specific applications under development. As a developer, you register the devices in your account on the Apple Developer site; you can then associate them with apps. Each, Apple iDevice has a special identifier called a UDID. (It’s not the same as the device’s serial number.) The easiest way to find this identifier is to connect your device to your computer and fire up iTunes. When you see your gadget listed in iTunes under Devices, click its name and then go to the summary page. Next to the picture of your snazzy device, you see its name and details like capacity, software version, and serial number. Click the serial number, and it changes to display the UDID, which is a 40-character string of numbers and letters (Figure 22-5, top). You could memorize the UDID, but it’s probably easier just to press Ctrl+C (⌘-C) to copy it. Now, head back to the Provisioning Portal and, on the left side of the page, choose Devices. The Manage tab lists the testing devices that you’ve registered. All it takes to add a new device is to provide a descriptive name and that 40-character UDID. Click the Add Device button and fill in the blanks (Figure 22-5, bottom). Apple lets you register up to 100 devices each year, which should be enough for anybody. (You can remove devices from your list, but they’ll still count toward that annual total.) Creating an App ID for Your Project Apps that you develop are given a unique ID that connects you, the developer, to the app. In addition, encrypted information stored inside the app makes it easy to see if the code has been altered from the original. This prevents other individuals with bad intentions from adding malware or Trojan horses to your perfectly innocent app. Where do you create your App ID? You guessed it—the Provisioning Portal. Chapter 22: Making iPhone Apps www.it-ebooks.info 729 Joining the iOS Developer Program 1. On the Apple Developer site (http://developer.apple.com/iphone), go to the Provisioning Portal and click App IDs. As a developer, you can create multiple app IDs. Once they’re created, you see them all listed at the bottom of this page. Figure 22-5 Top: Find your device ID in iTunes and then copy the 40-character string. Bottom: Go to the P­ rovisioning Portal on Apple’s developer site and fill out this form to register your iDevices for app testing. 2. In the upper-right corner, click New App ID. A new page appears, where you provide a name and other details for the app you’re building. 3. Under Description, give your app a name. You might want to call this app ­AngryArmadillos. This name identifies your app in iTunes and on iDevices when it’s installed. 4. Leave Bundle Seed set to Generate New. The bundle seed is a unique identifier provided by Apple. In addition to Generate New, the menu displays bundle seeds from your previous projects. If you want several of your apps to share the same keychain access on a user’s computer, you can set the menu to use the same bundle seed. 730 flash CS6: The Missing Manual www.it-ebooks.info 5. Set Bundle Identifier to com.MyName.AngryArmadillos . This is the name that you use in Flash’s iOS Settings to identify your app. It’s common practice to use a reverse domain as an identifier. So, for example, if your website is www.MassiveCorp.com, you’d name the app com.MassiveCorp .AngryArmadillos. Folks who don’t have a website often use their complete name instead of a domain. For example, com.ChrisGrover.AngryArmadillos. Joining the iOS Developer Program Unlike certificates and provisioning profiles, you don’t have to download a file to use the app ID. The details for your app IDs remain on Apple’s Provisioning Portal. You will use the ID without the bundle identifier in “Flash AIR for iOS Settings,” as described in the next section. Creating and Installing a Provisioning Profile You’ve added a developer’s certificate to your keychain, identifying you as an official iOS developer. You’ve registered the devices you plan to use for testing, and you’ve acquired an ID for the app you’re developing. The last step is to create a provisioning profile that ties all these elements together. Without a provisioning profile, Flash can’t translate your Flash project into code that works with iOS. Apple’s provisioning profile connects you the developer, your testing devices, and your application. The provisioning profile is installed on the device you use for testing, making it possible for you to install the app using iTunes. To create a provisioning profile, follow these steps: 1. On Apple’s Developer site (https://developer.apple.com/devcenter/ios), go to the Provisioning Portal and click Provisioning. The page where your provisioning profiles live opens. You can create more than one provisioning profile. In fact, you need a provisioning profile for every app you test, distribute, or sell. Tip You can come back to this page to make changes to a provisioning profile and to download your profiles. Why would you want to make changes? Perhaps you’re creating a new app or you added a new device for testing. In either case, you’ll want to add those items to your profile and download the new, improved profile to your computer. 2. In the upper-right corner, click New Profile. A page like Figure 22-6 opens, where you provide details for the provisioning profile. 3. Next to Profile Name, type a name, such as AngryAardvarks . 4. Next to Certificates, turn on the box with your certificate name. You must have already created your developer certificate. For details, see page 727. Chapter 22: Making iPhone Apps www.it-ebooks.info 731 Joining the iOS Developer Program 5. Next to App ID, use the menu to select the app you’re developing. Page 729 explained how to create app IDs. Once they’ve been created, the IDs appear in this drop-down menu. Figure 22-6 You get to choose a name for your provisioning profile, but the rest of the settings depend on the certificate, device, and app IDs that you’ve already created. 6. Next to Device, select the testing devices you want to use with this app. Your registered testing devices automatically appear in the list. You can add several testing devices to your provisioning profile. If you need to register a new testing device, see page 729. 7. Click Submit. It takes only a moment for your submission to be processed. Click your web browser’s Refresh button, and you should see your new provisioning profile listed at the bottom of the page with a Download button next to it. 8. Click Download. Provisioning profiles are small files (about 8 K), so they don’t take long to download. You’ll probably want to move the file from your Downloads folder to a more convenient spot, such as the folder with the FLA file for your app. It doesn’t really matter where you keep the file as long as you know where it is. You need to locate and identify your provisioning profile in the iOS settings for your app. See page 731. 732 flash CS6: The Missing Manual www.it-ebooks.info Creating an iOS App that Responds to ­Gestures Joining the iOS Developer Program iPhones and iPads don’t come with mice. That’s why Apple had to create a whole new operating system for its handheld devices. iOS responds to a variety of user inputs: taps, swipes, and shakes. In general, mouse clicks translate easily to single finger taps on the iPhone, but if you’re writing code for an iDevice, you want to employ the other commonly used gestures, too. Fortunately, Adobe developed ActionScript objects that understand gestures, and they went one step further, creating code snippets that “listen” for those iOS events. Handling iOS gestures isn’t the only thing to consider when you create an app for iDevices. You need to rethink the size and placement of buttons, menus, and other user interface widgets. Also, when it makes sense to do so, take advantage of the device’s geolocation and gyroscopic abilities. Here are some more technical ­considerations: • Test your application for performance on the device you expect your audience to use. iOS devices use slower processors and less memory than most laptops or desktop computers. Also, remember that older iPhones are slower than the latest iPad. • Only ActionScript 3.0 code works with the iOS packager. You cannot use ­ActionScript 1.0 or ActionScript 2.0 code in your projects. • For best results, use system fonts in your apps (_sans, Helvetica; _serif, Times New Roman; _typewriter, Courier New). • If your app is destined to be used by iPhones as well as iPads, make sure the elements are properly sized for the small screen. Using the Swipe to Next/Previous Code Snippet Suppose you’re a manufacturer who wants to create a product catalog. You want shoppers to thumb through the pages to learn details about individual products. Follow these steps to create a new app for a manufacturer of wooden finials—the type of ornament you see on the top of gazebos or porch railings. You’ll add ActionScript code to enable swipe left and swipe right gestures that move from one frame (page) to another. Your handy app also orients itself to a portrait or landscape format when the iPhone or iPad is rotated. 1. Open 22-1_iOS_Swipe_Pages.fla. Then choose Save As and name the new file Finials.fla. This FLA file was created using the “AIR for iOS” option described on page 738. You can find the 22-1_iOS_Swipe_Pages.fla on the Missing CD at www.­ missingmanuals.com/cds/flashcs6mm. Chapter 22: Making iPhone Apps www.it-ebooks.info 733 Joining the iOS Developer Program 2. Examine the handful of frames in the Flash document. The first frame (Figure 22-7) shows a photo of a finial on top of a newel post and displays some introductory text. The user won’t interact with this text, so TLF Read Only text was used. The font specified is _serif. The same text settings are used throughout this project. The following frames (catalog pages) show line drawings of finials. There are three layers in the timeline: actions, text, and profiles. Figure 22-7 This iOS project creates a manufacturer’s catalog. Shown here, the introductory page displays a photo of the product (a finial) in use. The following pages show designs and specs for other finials. 3. Click Frame 1 in the actions layer on the timeline and then open the Actions window (Window→Actions). 4. On the first line in the actions, type stop(); This method prevents the animation from moving to the next frame until it receives a specific command. 734 flash CS6: The Missing Manual www.it-ebooks.info 5. Press Enter (Return) to create a new line, and then open Code Snippets You can use the button in the upper-right corner of the Actions window, or you can use the palette button if it’s visible. The button for Code Snippets looks like a page of text with two curly brackets above it. Joining the iOS Developer Program 6. Expand the Mobile Actions snippets and click Swipe to “Swipe to Go to Next/Previous Frame and Stop.” When you select a snippet, the buttons for the Code Snippets heads-up display (HUD) appears. The “i” button leads to general information. In this case it says: “Swiping the stage moves the playhead to the next/previous frame in the timeline and stops the playhead.” 7. Click the bracket button, and after examining the description, click the Insert button. The bracket button {} display more details about the snippet, including the actual code. After you click the Insert button, there’s a little animated flourish, and the snippet is copied to your code in the Actions window (see Figure 22-8). In some cases, you need to select an object on the stage before you insert a code snippet. That’s not the case for this particular gesture. Figure 22-8 Snippets are divided into categories in the Code ­Snippets window. The Swipe gesture used for touchscreens is in the Mobile Actions category. The snippet’s HUD (heads-up display) includes an Insert button, which pops the code into your Actions window. Chapter 22: Making iPhone Apps www.it-ebooks.info 735 Joining the iOS Developer Program 8. Open the Actions window (Window→Actions) to examine the code. You can usually learn something by examining code snippets. In some cases, you’ll pick up new techniques. In other cases, you may want to modify or copy the code for use elsewhere. Here’s the snippet you added to your project: /* Swipe to Go to Next/Previous Frame and Stop Swiping the stage moves the playhead to the next/previous frame and stops the movie. */ Multitouch.inputMode = MultitouchInputMode.GESTURE; stage.addEventListener (TransformGestureEvent.GESTURE_SWIPE, fl_SwipeToGoToNextPreviousFrame_2); function fl_SwipeToGoToNextPreviousFrame_2(event:TransformGestureEvent):vo id { if(event.offsetX == 1) { // swiped right prevFrame(); } else if(event.offsetX == -1) { // swiped left nextFrame(); } } The text between /* and */ is a comment that explains the purpose of the snippet. In some cases, snippet comments offer tips for modifying and using the code. The next line sets the MultitouchInputMode to Gesture. ActionScript has three modes that are used with MultitouchInput: none, Gesture, and TouchPoint. Only one multitouch mode is in effect at a time, so ActionScript can’t listen for a Gesture event and a TouchPoint event simultaneously. The next line adds an event listener. The first parameter in the parentheses defines the event “TransformGestureEvent.GESTURE_SWIPE.” The next parameter identifies the method (function) that runs when the event occurs. Methods are named automatically by snippets and if you use the same snippet more than once, Flash starts adding numbers to the method’s name simply to differentiate them. That’s why in this example there’s a “_2” at the end of fl_SwipeToGoToNextPreviousFrame. In your code, you may see a different number or no number at all. 736 flash CS6: The Missing Manual www.it-ebooks.info The body of the method takes the form of an “if..else if” statement. In effect it says, if the event was “swiped right,” go to the previous frame; else if the event was “swiped left,” go the next frame. Joining the iOS Developer Program The familiar methods prevFrame() and nextFrame() do the heavy lifting, flipping between pages. The page content in this example is in the main timeline, so there’s no need to designate a specific movie clip or timeline. Later in this chapter (page 745), you’ll see how to flip pages in a movie clip symbol that’s been added to the stage. Note If you want to learn more about multitouch events, you can find all the details in the ActionScript Reference for the Adobe Flash Platform. You can open that document by going to Help→Flash Help and then choosing “ActionScript 3.0 and Components.” 9. Press Ctrl+S (⌘-S) to save your work. Flash saves your work as an FLA file. At this point, you can go ahead and test your application in the AIR Debug Launcher (Mobile). When tested, you see the first frame of the animation but have no way to move beyond that frame because your computer won’t respond to a swipe gesture. Instead, you want to test your app on an iPhone, iPodTouch, or iPad that you’ve registered as a test device. If you’ve followed the steps beginning on page 727 to get a developer’s certificate, set up test devices, get app IDs, and get provisioning profiles, then you’re ready to fill in the AIR for iOS settings. Once that’s done, you can test your app on an iDevice. Gem in the Rough Testing Mobile Events with Simulator Developing a mobile app on a desktop computer comes with a few tradeoffs. For example, your desktop is most likely clueless when you swipe your finger across the screen. It also probably doesn’t respond much when you tilt it one way or the other. Those are mobile events that most computers don’t recognize. Flash CS6 includes a new tool that can help out—the Simulator (see Figure 22-9). You see it pop up when you go to Control→Test Movie→“in Air Debug Launcher (Mobile).” The Simulator has three panels that you expand and collapse as needed. The accelerometer panel offers a way to simulate changes in orientation. So, for example, if you have an app that displays a map when held flat but activates a camera when held vertically, you can test it in the Simulator. The Touch and Gesture panel lets you test the usual touchscreen events. Turn on “Touch layer” in the upper-left corner and then choose one of the radio buttons: “Click and drag,” “Press and tap,” “Two-finger tap,” Pan, Rotate, Zoom, or Swipe. At this point, when you move the mouse over your app in the test window (Figure 22-9, right), you see a special cursor, and you can tap, swipe, or perform other gestures using the mouse. If you’re building an app that knows where it is in the world, use the Geolocation panel. Type information like latitude or longitude and then click Send. Does the Simulator relieve you of the need to test your apps on real mobile devices? No. You still want to do real-world testing on the target device. However, the Simulator can be a great timesaver while you’re in the early to mid stages of app development. Chapter 22: Making iPhone Apps www.it-ebooks.info 737 Air for iOS App Settings Air for iOS App Settings When you start a new document with the File→“AIR for iOS” command, Flash provides a bunch of new publishing settings for your document (Figure 22-10). These include general settings that identify folders and documents, deployment settings that record information about security certificates, and icon settings that are used to represent your app in iTunes, and on iPhones and iPads. Figure 22-9 When you test a mobile app in Flash, you see two panels. Right: Your app appears in a window that’s sized to match a phone or a tablet. Buttons respond to clicking, but you need help with other mobile events. Left: The Simulator provides a way to test touchscreen gestures, and accelerometer and geolocation events. Tweaking the settings so that everything works isn’t nearly as much fun as designing and testing your app. The good news is that with few exceptions, it’s a “set and forget” operation. You don’t have to go through these steps every time you build a new version of your app. General Settings To see the settings for your iOS app, go to File→“Air 3.2 for iOS Settings.” The window has three tabs: General, Deployment, and Icons. Here’s a rundown on the settings you find under the General tab: • Output file. Choose a directory and provide a filename for your app. The extension for iOS apps is .ipa. Remember the name and location for your IPA file. You’ll need to add the file to iTunes later in the app install process. 738 flash CS6: The Missing Manual www.it-ebooks.info • App name. Give your application an official name. This is the name that appears under the apps icon on your iDevice and in the App store. Air for iOS App Settings • Version. You can assign version numbers to your app. They usually take a form like 2.05, where numbers to the left of the decimal indicate major version changes. Figure 22-10 The general “AIR for iOS Settings” window handles some of the basic housekeeping issues, such as filenames and locations. If you want your app to work in both portrait and landscape views, set the aspect ratio to Auto and check the “Auto orientation box.” • Aspect ratio. Use this setting to specify whether your app is viewed in portrait or landscape orientation. Choose Auto if it works in both. • Full screen. Check this box to force your app to fill the screen on an iPad or iPhone. Chapter 22: Making iPhone Apps www.it-ebooks.info 739 Air for iOS App Settings • Auto orientation. iDevices know which end is up. If you check this box, your app will automatically make adjustments when the iPad or iPhone’s orientation changes. • Rendering. It takes computing power to draw graphics on the screen. Devices have a special graphics processing unit (GPU) to handle these chores. In some cases, you may prefer to use the central processing unit (CPU). For the examples in this book, leave rendering set to Auto, which lets the device choose the unit. • Device. You can designate whether your app is intended for iPhones (including iPod Touch), iPads, or both. • Resolution. Apple’s iDevices have increased in resolution in successive generations. The new Retina displays are high resolution. Older devices are standard resolution. If you want to be compatible with the widest range of devices, choose standard. • Included files. For the projects covered in this book, Flash automatically adds the needed files to this list as you build your app. In other cases, you may need to manually add resources. Deployment Settings To test, distribute, and sell your app, it needs official approval from Apple. In Flash, the Deployment tab is where you manage these issues. Go to File→“Air for iOS ­Settings” and click the Deployment tab (Figure 22-11). You need to fill in the Deployment form with the following details (if you don’t complete the form, the publishing process stops before it’s complete and doesn’t built the IPA file): • Certificate. Follow the steps on page 727, and you receive a certificate from Apple that establishes your identity. The certificate takes the form of a small file with a .p12 extension that you store on your computer. Use the folder button to locate and identify the file for the deployment settings. • Password. When you get your certificate from Apple, you provide a password. That password needs to be added to the deployment settings. This prevents someone else from using your certificate with his program. • Provisioning profile. For each app that you build, you tell Apple the specific iPhones and iPads you’re using for testing. A provisioning profile links and identifies you, your app, and your testing devices. Your provision profile is another document that’s downloaded from Apple’s Developer site. For details on creating and downloading a provisioning profile, see page 731 • App ID. Each app you develop has a unique ID. The common form used is to reverse your domain name and add the app name at the end. So a Missing Manuals app ID might be com.missingmanuals.AngryAuthors. For details on creating your own app ID, see page 729. 740 flash CS6: The Missing Manual www.it-ebooks.info • iOS deployment type. Use these settings for different stages of the development process. Your choices are: “Quick publishing for device testing,” “Quick publishing for device debugging,” “Deployment – ad hoc,” and “Deployment – Apple Store.” Air for iOS App Settings Figure 22-11 You won’t be able to publish an IPA file unless you enter a provision profile in the deployment settings. In turn, you need a developer certificate, device ID, and app ID to get a provisioning profile. Icon Settings iPads and iPhones are visual experiences. Each app is identified by a square icon that appears in the App Store and on the device. Icons need to be provided in a variety of sizes measured in pixels: 29x29, 57x57, 114x114, and 512x512. Apps that are also used on iPads need to include icons at 48x48 and 72x72. You can produce icons in Flash and export the image files (File→Export→Export Image). But it’s probably easier to create icons in Fireworks or Photoshop if they’re Chapter 22: Making iPhone Apps www.it-ebooks.info 741 Air for iOS App Settings available on your computer. Files should be saved in the PNG format, and it’s helpful in the next step if you include the size in the filename. For example, use names like myAppIcon29.png and myAppIcon57.png. The process is easiest if you store the icons in the same folder as your FLA file. Once you’ve created your icons in the necessary sizes, go to the Icons tab (­Figure ­22-12) and click an icon size, such as “icon 29x29,” and then use the box at the bottom to locate the matching icon that you created. Tip Developing application icons is an art in itself. You can learn a lot by studying the icons used by your favorite apps. Icons need to have the impact of a company logo and be identifiable at very small sizes. Figure 22-12 Use the Icons tab to link your app to the icons that will identify it in the App Store, and on the iPhones and iPads of the world. 742 flash CS6: The Missing Manual www.it-ebooks.info Fill out the details in the General and Deployment tabs. Then, create and identify the icons for your project in the Icons tab. Once those chores are out of the way, you can publish, install, and test your app on an iPhone, iPodTouch, or iPad. Air for iOS App Settings Publishing, Installing, and Testing Your App on an iDevice When you publish an app that you’ve created with AIR for iOS, Flash creates both an SWF file and an IPA file. To install the app on your iDevice, you first add the app (IPA file) to iTunes, where it appears with the all the other apps you got from the App Store. Then, within iTunes, you move your app to the device. These steps explain how to move your app from your computer onto a device that’s plugged in to the USB port. If circumstances prevent you from plugging in, see the box on page 729. 1. With your AIR for iOS Flash document open in Flash Professional, choose File→Publish. You see two successive progress bars as Flash builds an SWF file and then translates it to an IPA file. If your AIR for iOS settings are incomplete, Flash stops in the middle of the process and displays an error message. 2. In the Finder or Windows Explorer, double-click the IPA file; for example: finials.ipa . This starts the process that copies your app to the Apps section in iTunes. If you’re adding a new version of the same app, a dialog box asks if you want to replace the existing version. 3. To locate your app in iTunes, in the upper-left corner, click Apps. Your app appears in the main window identified by the name and icon you provided earlier. If, like a lot of people, you have a gazillion apps, you can search using the box in the upper-right corner. 4. Connect one of your officially designated testing devices to the computer via USB. The device appears in iTunes’ left column under Devices. In many cases, iTunes goes through the “synchronizing” process. That means shuffling purchased apps and media back and forth between the computer and the device. This activity depends in part on the device’s sync settings. Note Your iPhone or iPad must be registered with iTunes. Individual iPhones and iPads are registered with a specific copy of iTunes on a specific computer. That means, iTunes can add apps and purchased media to the device. In addition, your device must be registered as a test device on the Apple Developer site, as explained on page 729. Chapter 22: Making iPhone Apps www.it-ebooks.info 743 Air for iOS App Settings 5. If necessary, drag your app from the iTunes Apps window on to your device, as shown in Figure 22-13. There are different reasons why automatic syncing may not copy your app to the device. It might be your sync settings. Or you may already have a previous version of the same app on your device. The sure way to get the latest version on your device is to delete the previous version and then manually drag the app onto your device. Figure 22-13 To install your app, drag it from the Apps section in iTunes onto the device listed in the left column. If you’re repeatedly testing and retesting, it may save time if you leave the device connected to your computer and turn off its auto-syncing features. 6. Test your app on the device. You don’t have to disconnect your iDevice from the computer to test the app. Often it’s best to stay connected, especially if you know you’ll be making changes in Flash and reinstalling the app on your device. Staying connected eliminates some of the time spent while iTunes and the device synchronize. Removing Your Test App from the Device Testing is a repetitive process. Build. Install. Test. Then, you do it all over again. Before you can install a new version of your app on a test device, you need to delete the old version. To do that, touch and hold the app’s icon on the device. After a couple of seconds, all the app icons go wobbly and you see X buttons in their upper-left corners. Tap the X button on apps you want to remove. Note If you want to examine a finished example of the project started on page 733, download 22-2_iOS_ Swipe_Pages_done.fla from the Missing CD at www.missingmanuals.com/cds/flashcs6mm. 744 flash CS6: The Missing Manual www.it-ebooks.info Building a Tap-Ready App Building a Tap-Ready App The previous example showed how to create an app that recognizes swipe gestures to move from one page to another. Often, you’ll want to create buttons that respond to taps, just like buttons respond to mouse clicks in conventional programs. Since their function is virtually identical, Flash automatically recognizes MouseEvent clicks as single finger taps when it builds the IPA file. This makes life easier if you’re repurposing a computer-based AIR app for iOS. Developers’ Corner Over-the-Air App Installation with Testflightapp.com There’s another unique way to move your test apps to iPhones and iPads. A website called TestFlight (www.testflightapp.com) is set up to deliver apps that are under development to testers. Currently, the service is free to developers and testers, though both need to sign up with their certificates and device UDIDs. Once that is done, developers upload their apps to the site using the site’s tools (see Figure 22-14). Then, also through the site, developers notify testers via email that the app is ready to run through its paces. Testers can click links on the email to download the app directly to their iDevice. There’s no side trip through iTunes when you use TestFlight. The process is simple for both developers and testers. In addition to bypassing the installation dance with iTunes, TestFlight gives developers an easy way to reach more testers scattered over a larger geographic area. If you don’t already have a designated team of testers, you can use the volunteers who’ve signed up with TestFlight. Figure 22-14 Testflightapp.com is a website that distributes apps under development to testers. You can use it with a team of app testers or you can use it to easily install your apps on testing devices, bypassing the iTunes installation routine. Though it looks similar to the app in the previous exercise, it’s constructed differently. Follow these steps to add tap-ability to the app: 1. Open 22-3_iOS_Tap_Menu.fla and then save it as Finials Tap.fla . The main timeline for this app has a single frame. Two movie clips symbols are placed on the stage in that frame. mcMainContent, as the name suggests, holds the content for the app in several frames (pages). mcMenuBar holds buttons used to navigate through mcMainContent. Separating the content from the Chapter 22: Making iPhone Apps www.it-ebooks.info 745 Building a Tap-Ready App navigation tools has organizational benefits. By putting mcMenuBar on the one and only frame in the main timeline, the buttons are always available and ready to handle their chores. 2. On the stage, double-click the mcMainContent movie clip. The content on the various frames will look familiar if you tackled the “swipe gesture” exercise earlier in this chapter. ActionScript code appears on the first two frames of the actions layer. In the first frame, a stop() method keeps the playhead from running through the entire movie clip on startup. The code on the second frame was added using the “Click to Go to a Frame and Stop” snippet. The result is when someone clicks on a finial profile in Frame 2, the playhead moves to the frame showing that finial’s dimensions. Each gotoAndStop() method uses a frame label. For example, gotoAndStop(“nc3”) moves the frame labeled nc3. 3. Click Scene 1 on the edit bar to close the mcMainContent movie clip. mcMainContent closes and you’re back at the main timeline. 4. On the stage, double-click the mcMenuBar movie clip. The movie clip opens on stage for editing. As shown in Figure 22-15, the movie clip holds three more movie clip symbols. By examining the properties, you see the instances are named btnBack, btnHome, and btnNext. You’ll use these names to identify the navigation buttons in the following steps. Figure 22-15 The buttons for this app were placed at the bottom of the screen to make it easy for iPhone single-handed operation. It’s common for iPhoners to hold their device in the left hand and use their thumb for simple navigation chores. Bottom buttons are easier to reach. The right hand is brought in for more complex gestures and operations. 746 flash CS6: The Missing Manual www.it-ebooks.info 5. Click Scene 1 on the edit bar to close the mcMenuBar movie clip. mcMenuBar closes and you’re back at main timeline. Building a Tap-Ready App 6. Select mcMenuBar and then open Code Snippets→Timeline Navigation. The Timeline Navigation snippets include a number of predesigned chunks of code that move the playhead within a movie clip. Each has a descriptive name. You can use these snippets to handle mouse clicks or single finger taps. 7. With mcMenuBar selected, double-click the snippet names “Click to Go to Previous Frame and Stop.” The code is automatically added to the actions. An ActionScript symbol appears in Frame 1 of the actions layer. 8. If necessary, press F9 (Option-F9) to open the Actions window. As usual, the comment at the beginning of snippet explains its purpose. Without the comment, the working code appears as follows: mcMenuBar.addEventListener(MouseEvent.CLICK, fl_ClickToGoToPreviousFrame); function fl_ClickToGoToPreviousFrame(event:MouseEvent):void { prevFrame(); } The prevFrame() method moves the playhead left one frame in the movie clip. That’s fine, but in this case, you don’t want to move the playhead in the main timeline; you want to control the playhead in mcMainContent. 9. Change the method to read mcMainContent.prevFrame(); Now the code triggers the prevFrame() method in the mcMainContent movie clip. You need to make a similar change to the event listener. As it is now, clicking any point in mcMenuBar triggers the prevFrame() method. Instead, you want ActionScript to listen for clicks on btnBack within the mcMenuBar movie clip. 10. Change the event listener to read: mcMenuBar.btnBack.addEventListener (MouseEvent.CLICK, fl_ClickToGoToPrevious Frame); The dot syntax identifies btnBack within mcMenuBar. 11. Repeat steps 7–10 to add and modify a snippet for btnNext. Use the snippet named “Click to Go to Next Frame and Stop.” Chapter 22: Making iPhone Apps www.it-ebooks.info 747 Building a Tap-Ready App 12. Repeat the process to add and modify a snippet for btnHome. Use the snippet named “Click to Go to a Frame and Stop.” As the instructions in the comment explain, you change the number 5 in the gotoAndPlay(5) method to customize this code. You can substitute the number 1 so the complete method reads as follows: mcMainContent.gotoAndPlay(1). Or you can use the “home” frame label in mcMainContent. mcMainContent.gotoAndPlay("home"). 13. Go Control→Test Movie to check the buttons’ operations. The buttons you created work with either mouse clicks or finger taps so you can quickly check their operation using the AIR Debug Launcher. 14. In the main timeline, select Frame 1 in the actions layer. Then, open Code Snippets→Mobile Actions and double-click “Swipe to Go to Next/Previous Frame and Stop.” As explained in the exercise on page 733, this code enables the “swipe” gesture so that users can move from page to page. As with the buttons, this gesture needs to identify the movie clip that holds the content: mcMainContent. 15. In the Action window (Window→Actions), change the prevFrame() and nextFrame() methods in mcMainContent. After you’ve made changes, here’s how the code for the snippet should read: Multitouch.inputMode = MultitouchInputMode.GESTURE; stage.addEventListener (TransformGestureEvent.GESTURE_SWIPE, fl_SwipeToGoTo NextPreviousFrame); function fl_SwipeToGoToNextPreviousFrame(event:TransformGestureEvent):void { if(event.offsetX == 1) { // swiped right mcMainContent.prevFrame(); } else if(event.offsetX == -1) { // swiped left mcMainContent.nextFrame(); } } 748 flash CS6: The Missing Manual www.it-ebooks.info 16. Test your app. You can test the app again using AIR Debug Launcher to double-check for compiler errors and try out the buttons. However, you’ll probably want to test it on an iDevice. That means you need to create a new app ID for this project and add details to the AIR for iOS settings. Tips for iOS App Development When you test this app on an iPhone or iPad, you’ll see that the mouse click events work as finger taps. The swipe gesture works as it did in the earlier exercise. Note To see the finished example, download 22-4_iOS_Tap_Menu_done.fla from the Missing CD at www. missingmanuals.com/cds/flashcs6mm. You’ll need to provide your own AIR for iOS settings to test the app on a device. Tips for iOS App Development iPhones and iPads are remarkable devices that cram a lot of computing power into a tiny package. It’s easy for users to think of them as desktop and laptop substitutes. As a developer, you need to consider the differences and limitations of the iDevice. You want your app to be quick and responsive. You don’t want it to hog all the device resources. A well designed app will be used by many. A poorly designed app will remain undiscovered in some dusty corner of the App store. Here are some things to consider as you design your winner: • Make use of iOS behaviors like swipes, taps, and pinches. Avoid behaviors that won’t work with iOS, like rollovers. • Where possible, design for both portrait and landscape orientation and test your app both ways. • Use tweens only when necessary—they hog iDevice brainpower. • Use gradients and transparency sparingly—they also hog iDevice brainpower. • Where possible, use bitmaps instead of vector artwork. iOS likes bitmaps, but the calculations necessary to draw vectors may use too much CPU power. • If you use vector art, use the “cache as bitmap” option. This stores the vector art as a bitmap, making it easier for iDevices to display the image. In ActionScript, you can set the property for a movie clip: mcMovieClip.cacheAsBitmap = true. As always, test your app to make sure caching helps rather than hurts performance. • Use system fonts: _san, _serif, and _typewriter. • Remove event listeners when they are no longer needed. • Remove objects from the display list and from memory when they are no longer needed. Chapter 22: Making iPhone Apps www.it-ebooks.info 749 www.it-ebooks.info chapter Building Android Apps 23 T here are two ways to view Flash-developed content on Android devices like the HTC One smartphones or Motorola Xoom tablets. The old-fashioned way is to use the device’s web browser to display Flash content that’s embedded in the web page. The up-and-coming way is to develop an application using AIR for Android, and that’s the focus of this chapter. (For a comparison of installed apps versus web-based animations, see the box on page 753.) You can use all your animation and ActionScript skills to build apps for Android devices, but there are differences between mobile apps and web-based or desktop apps. For example, in an app you’ll want to include touchscreen gestures. If your app is destined for smaller smartphone screens, you need to make your buttons large, and the text and images readable. Take a look back at Chapter 22—which explains how to create apps for Apple’s iOS—even if you plan to focus on Android. That chapter’s details on using code snippets to add touchscreen gestures, for example, also applies to Android. This chapter explains how to create a new Android document in Flash. You’ll also learn how to create an app that uses Android’s accelerometer to move objects on the screen. The last section discusses how to convert an iOS app into an Android app to maximize your app-building efforts. It’s not hard to convert an application so that it runs on AIR for desktops (Windows, Mac, and Linux), as well as Apple’s iDevices and Android handsets. 751 www.it-ebooks.info Meet AIR for Android Meet AIR for Android A philosophical argument is going on in the mobile computing world, and it’s as hotly contested as the old Mac-vs.-Windows debate. For phones and tablets, the hot issue is open development (Android) versus controlled/moderated development (iOS). As covered in Chapter 22, Apple has a pretty firm thumb on application development for iPhones, iPads, and iPod Touch devices. Their argument is that Apple’s oversight ensures a quality user experience and inhibits malware. For validation, they point to the Mac’s track record. Android has a different pedigree, which comes from Linux, the mother of all open source projects. The philosophy behind open source is that transparency makes code better. Open source makes use of an army of coders ready to stress test and add to the existing code. This improves the source more quickly than a closed or proprietary system. Today, the Android operating system is available under a free software/open source license. Google makes the entire source code available to developers and is a member of the Open Handset Alliance, which includes a number of phone manufactures including HTC, LG, Motorola, and Samsung. Note The company that founded Android in 2003 included an ex-Apple engineer (Andy Rubin), a voice communication executive (Rich Miner), an ex-T-Mobile VP (Nick Sears), and an ex-WebTV developer (Chris White). Google acquired Android, Inc. in 2005. If you’re going to develop apps for Android devices, you want to visit the official developer’s site: http://developer.android.com. The site is well-organized and easy to navigate. You’ll find an SDK (software development kit) section where you can download the tools that Java programmers use to develop Android apps (see the box on page 755). The Dev Guide section provides documentation. Read through the guide and reference, and you’ll have a renewed appreciation for Flash’s ability to shield you from some of the nitty-gritty elements of Android programming. Other resources found on the website include sample code, tutorials, FAQs (frequently asked questions), and videos. For social interaction with other Android developers, visit the forums at http://developer.android.com/community. Note At this writing, the most recent version of Android is 4.0, also known as Ice Cream Sandwich. It was developed specifically for tablets. Currently, the source code is not available, but there are promises that it will be in the future. What does the difference between an open and a controlled market mean for you as an app developer? The process necessary to develop iPhone and iPad apps includes paying a developer subscription fee ($99) and registering each test device you use. With Android apps, by contrast, you don’t need to pay anything or jump through as many hoops to build, test, and market apps. From the consumer end, the iPhone app store feels like a bricks-and-mortar Apple store—clean, vetted, and efficient. The 752 flash CS6: The Missing Manual www.it-ebooks.info Android app stores (https://play.google.com and www.amazon.com/appstore) and the apps themselves have a little more Wild West feeling about them (Figure 23-1). Meet AIR for Android Figure 23-1 Android users download apps directly to their phones and tablets. Apps are available at the Google app store shown here (http://play.google. com) or from other vendors such as Amazon. Up to Speed AIR for Android vs. Flash Player The AIR for Android apps discussed in this chapter are different. They’re standalone apps (.apk files) that are installed on Android devices along with the AIR runtime code. These apps appear as icons on the phone or tablet’s touchscreen and behave like any other installed app. As a developer, AIR apps are generally the best way to show off your Flash/ActionScript talents. On mobile devices, apps designed using AIR for Android simply perform better. AIR apps have use of the entire screen, and they aren’t competing with HTML content. Since they’re translated into Android-speak, AIR apps are more responsive. Also, a well-designed AIR for Android app makes use of all those touchscreen gestures like swipes and pinches. If you do create a website that welcomes Android users, make sure you incorporate user interface elements that will work for handhelds. Avoid rollovers, for example, and scale the buttons and other widgets to accommodate big fingers on small screens. When Android phones and tablets first hit the market, Adobe developed a Flash Player specifically for mobile browsers. They discontinued that effort with Flash Player 11.1 commenting in a blog that “HTML5 is now universally supported on major mobile devices, in some cases exclusively. This makes HTML5 the best solution for creating and deploying content in the browser across mobile platforms… Our future work with Flash on mobile devices will be focused on enabling Flash developers to package native apps with Adobe AIR for all the major app stores. ” If you’re interested in dipping your toe in HTML5, CSS and JavaScript waters take a look at Adobe Edge a design/animation tool that has that familiar Adobe interface. Need missing manual guidance for Edge? Check out Adobe Edge Preview 5: The Missing Manual (O’Reilly Media). Your First “Hello Android” App In Flash CS6 you start Android apps using a specially designed template that automatically sizes the stage and adjusts other settings. The process is nearly identical to creating a Flash document for AIR (desktop) or iOS. As you’ll see on page 758, when you’re ready to test your app on an Android smartphone or tablet, you fill in the Chapter 23: Building Android Apps www.it-ebooks.info 753 Meet AIR for Android deployment and security settings and then publish your AIR for Android app. At that point, Flash creates the APK file for the device. This exercise shows how to start an AIR or Android app and then how to test it in Flash’s AIR Debug Launcher (­Mobile). Why break with tradition? Here’s how you build your first “Hello Android” app. 1. Choose File→New. The New Document window opens. 2. Choose “AIR for Android” and click OK. When you choose “AIR for Android,” the width and height for the stage are automatically set to 480 x 800, as shown in Figure 23-2. You can change the stage color (background) and the frame rate, but for this first project, leave them as they are. AIR for Android Stage Size Figure 23-2 When you create a new AIR for Android document, Flash sets the stage to 480 x 800 pixels. The frame rate is set to 24 frames per second, but you can make changes if your project requires it. 3. Click the Text tool and then, in the Properties panel, set the Text engine to TLF and the text type to Read Only text. Your “Hello Android” app doesn’t need fancy text. 4. In the Character settings, set the Family (font) to _serif and the size to 72 . When you specify a device font like _serif, _sans, or _typewriter, your app uses a font already installed on the device. This practice keeps your app files small and is efficient for the device. 5. Drag to create a text box on the stage and type Hello Android or a message of your choice. 754 flash CS6: The Missing Manual www.it-ebooks.info 6. Choose File→“AIR for Android Settings.” Set the aspect ratio to Auto and turn on auto-orientation. Click OK. Meet AIR for Android With these settings, Android devices will automatically orient the screen to portrait or landscape mode. The settings are covered in detail beginning on page 758. When you click OK, the settings window closes. 7. Press Ctrl+S (⌘-S) to name and save your work. 8. Go to Control→Test Movie→“in AIR Debug Launcher.” Your Hello Android app appears in a small window and displays the message. The AIR Debug Launcher (ADL) is a special tool for viewing AIR animations on your desktop. It’s useful for quick checks of graphics, animations, and simple buttons. If your app is set up to auto-orient (step 6 above), you can use the Device→Rotate Left and Device→Rotate Right commands to view it in different orientations. If you want to test out touch gestures or other mobile features, you can do a quick check with the Simulator described in the box on page 737. If you want to gauge app performance under real-world conditions, you need to move your Android app (.apk file) and the AIR runtime to a real device, as described in the next exercise. Frequently Asked Question The Android-Java Connection If I didn’t use Flash Professional, what tools would I use to create Android apps? Most Android development is done using Java, an objectoriented programming language that shares much with the C and C++ languages. Originally developed by Sun Microsystems, Java is now maintained by Oracle Corporation. Even though you’re developing Android apps using AIR, at some point you may want some of the tools from the Java Development Kit (JDK). To download the JDK, head to www.oracle.com/ technetwork/java/javase/downloads . Click the Download JDK button on that page. Choose your platform, check the licensing agreement, and click Continue. On the next page, you’ll see a link to download your version of the Java Developer kit. You may be saying “Hey, I’ve already got Java on my computer.” Chances are you have the Java Runtime Environment (JRE), the tools needed to run Java applications. You probably don’t have the Java Developer Kit (JDK) unless you or your computer have already been involved in Java application development. App Building with the Android ­Accelerometer Template To truly get a feel for Android app development, you need to install your app on an Android device and test it. If you worked your way through the Apple iOS security process, you’ll be pleased to learn that life is easier and less expensive in the Android world. Like the AIR applications described in Chapter 21, with AIR for Android, you can create a self-signed certificate. You don’t need to get a certificate from an official certificate authority (CA) to install and test your app. With your self-signed Chapter 23: Building Android Apps www.it-ebooks.info 755 Meet AIR for Android certificate, you can move Android apps to devices connected to your computer by USB cables. This next exercise explains exactly how to do that. For testing purposes, you’ll use a template that makes use of the Android accelerometer (the unit inside gadgets that knows which end is up). Tip Flash Professional CS6 arrives on your computer with several prebuilt templates that provide examples of Android behaviors and techniques. These templates are easy to use, and they’re great starting points for your own projects. 1. Choose File→New. The New Document window opens showing two tabs: General and Templates. 2. Click the Templates tab. Templates are grouped into categories such as Advertising, Media Playback, and Presentations. 3. Click the AIR for Android category. Shown in Figure 23-3, the Android templates include: “800 x 400 Blank,” ­Accelerometer, Options Menu, and Swipe Gallery. Figure 23-3 Flash CS6 comes with templates that show how to use basic Android behaviors including the devices’ built-in accelerometer. Choosing a template adds content and ActionScript code to your Flash document. 4. Click Accelerometer, and then click OK. When you click a template, its image appears in the Preview panel, and a description provides some details on the template. The Accelerometer template’s description explains that a ball reacts to the device’s accelerometer. When you click OK, the template opens in Flash. 756 flash CS6: The Missing Manual www.it-ebooks.info 5. Go to File→Save and then save the document with a name like ­TestAccelerometer. Meet AIR for Android It’s a good practice to save your documents when you first create them. One benefit is that the name is used to fill in some of the blanks in the AIR for ­Android settings. Another benefit is that Flash’s Auto-Save feature (Figure 23-2) can minimize disasters like unexpected power outages. 6. Click the Library tab. The Library shows that this animation has one movie clip symbol named “ball.” The instance on the stage has the same name. 7. Click the Timeline tab. The template starts off with four layers: Instruction, Actions, Ball, and Background. Below the stage, you see the brief instructions included with the template. 8. Click the first (and only) frame in the actions layer and then open the Actions window (Window→Actions). The ActionScript code that manages Android accelerometer events appears in the Actions window as shown here: import flash.events.Event; var accelX:Number; var accelY:Number; var fl_Accelerometer:Accelerometer = new Accelerometer(); fl_Accelerometer.addEventListener(AccelerometerEvent.UPDATE, fl_AccelerometerUpdateHandler); function fl_AccelerometerUpdateHandler(event:AccelerometerEvent):void { accelX = event.accelerationX; accelY = event.accelerationY; } ball.addEventListener(Event.ENTER_FRAME, moveBall); function moveBall(evt:Event){ ball.x -= accelX*30; ball.y += accelY*30; if(ball.x > (480-ball.width/2)){ ball.x = 480-ball.width/2; } if(ball.x < (0+ball.width/2)){ ball.x = 0+ball.width/2; Chapter 23: Building Android Apps www.it-ebooks.info 757 Meet AIR for Android } if(ball.y > (800-ball.width/2)){ ball.y = 800-ball.width/2; } if(ball.y < (0+ball.width/2)){ ball.y = 0+ball.width/2; } } The first line imports Flash events. Then number variables are created for ­tracking the X and Y properties of the ball. A new instance of the Accelerometer object is created and named fl_Accelerometer. Like all objects, fl_­Accelerometer has an addEventListener method, which is put into action and triggers fl_ ­AccelerometerUpdateHandler(). The ball movie clip has an event listener that uses the ENTER_FRAME constant to trigger moveBall(). The moveBall() function updates the position of the ball movie clip based on data provided by the accelerometer (accelX and accelY) and a series of if statements that keep the ball visible on the stage. 9. Click File→“AIR for Android Settings.” When you start a document with an Android template, Flash automatically provides a group of settings specific to Android devices. The settings are grouped under four tabs: General, Deployment, Icons, and Permissions. 10. Click the General tab. Set the aspect ratio to Auto. Turn on Full Screen and Auto Orientation. With these settings, Android devices will automatically orient the screen to portrait or landscape mode. The output file, app name, and app ID are automatically filled in with the name you used when saving the Flash document. Note that the output file ends with the .apk extent used by Android apps. 11. Click the Deployment tab. The deployment tab, shown in Figure 23-4, is used to identify your developer’s certificate and password, choose a deployment type, select a source for the AIR runtime, and set the behavior after publishing. The following steps describe each procedure. 12. In the certificate box, identify your developer certificate. If you don’t have a certificate, click Create to create a self-signed certificate. If you’ve already created a certificate, you can choose it from the combo box. If you haven’t created one, it’s easy to create a self-signed certificate on the spot by clicking the Create button and filling in all the blanks on the form. You can put the same company/organization name in the “Publisher name,” “Organization unit,” and “Organization name” boxes. Provide and confirm your password. You can leave the type set to 1024-RSA and the validity period set to 25 years. Lastly, give your certificate a name and choose where to save it. 758 flash CS6: The Missing Manual www.it-ebooks.info When you click OK, Flash automatically loads the new certificate in the deployment settings. There are more details about security certificates in Chapter 21 (page 710). Meet AIR for Android 13. Back in the Deployment tab of the “AIR for Android Settings” box, set Android development type to “Device release.” Use this setting to test your app on an Android device that’s connected to your computer by a USB cable. Deployment tab Create certificate Figure 23-4 Top: Use the deployment tab to identify your d­ eveloper’s certificate. If you don’t have one, you can easily create a self-signed certificate by clicking the Create button. Bottom: To create your self-signed certificate, all you have to do is fill in all the blanks. 14. Under “After publishing,” turn on both “Install application on the connected Android device” and “Launch application on the connected Android device.” As advertised, these options automatically install and launch the app on your Android gadget. 15. Click the Icons tab. Each Android app is identified by an icon that users see on the touchscreen. Icons for Android are displayed in three different sizes measured in pixels: 36 x 36, 48 x 48, and 72 x 72. You will want to create distinctive icons for your app in each size. You can produce icons in Flash and export the image files (File→Export→Export Image). But it’s easier to use Fireworks or Photoshop if they’re available. Save Chapter 23: Building Android Apps www.it-ebooks.info 759 Building Apps for Both iOS and Android files in the PNG format, and it’s helpful if you ­include the size in the filename. For example: TestAccelerometer_36.png and T ­ estAccelerometer_48.png. 16. For each icon size, click the name/size in the top list and then, in the text box below, identify the icon’s file. Once you’ve selected the file, a preview appears in the box at the bottom. 17. Click the Permissions tab and select Internet. The Permission tab displays a list of Android abilities ranging from writing to storage to camera and audio recording access. You use this list to choose the abilities your app requires. When users install your app, they’ll be notified about its capabilities and the resources it uses. Click on a permission, and a brief description appears at the bottom of the window. In this case, click Internet to allow device debugging. 18. On your Android device, turn on USB debugging. For example, on a Xoom tablet, go to Device Administration→Applications→De velopment and turn on the USB debugging box. If USB debugging isn’t turned on, you’ll see an error message when you publish. 19. Click Publish to publish and test your Android app. You can publish from the “AIR for Android Settings” window, or, if it is closed, you can publish by choosing File→Publish. A couple of progress bars appear as Flash creates an SWF file and then builds an APK file for Android devices. The APK file is installed on the attached device and then launched. 20. Test your app. You can test your Android accelerometer app while it’s still connected by the USB cable, or you can disconnect it. Hold the device with the screen facing up. When you tilt it, the ball rolls to the low point on the screen. Tip Templates aren’t the only way to add prewritten code to your Android apps. As demonstrated in C­ hapter 22, there are many code snippets designed specifically for mobile devices. Page 733 explains how to add swipe gestures to your app to navigate between pages (movie clip frames). Building Apps for Both iOS and Android If you read through the iOS chapter before attacking Android, then you’ve probably noticed the many similarities. When you develop in Flash, you spend most of your time using your basic animation and ActionScript skills. The part of the process that’s specific to a platform comes at the beginning, when you start your app, and at the end, when you publish. Flash handles the translation when you publish for iOS or Android. This system means you don’t have to sweat many of the nitty-gritty details of writing low-level code for a specific environment. It’s relatively easy to 760 flash CS6: The Missing Manual www.it-ebooks.info take an app that works for Apple’s iDevices and convert it to work for Android, or vice versa. Here’s an iOS-to-Android example: Building Apps for Both iOS and Android 1. Open 23-1_iOS_to_Android.fla . This is an iOS project that was completed in Chapter 22. If you’re not familiar with the project, go to Control→Test Movie to explore the app in the ADL (AIR Debug Launcher). Clickable buttons control the timeline of a movie clip (­mcMainContent) placed on the stage. 2. Go to File→New→“AIR for Android” to create a new Android document. Save the new document with the name AndroidConversion.fla. An empty Android document is created. 3. Go to the 23-1_iOS_to_Android.fla . Click the top layer; then, while holding the Shift key, click the bottom layer. All three layers are selected. The layers are named: named “actions,” “content,” and “menu.” 4. Right-click (Control-click) the layers and choose Copy Layers from the shortcut menu. The layers and their content are copied to the Clipboard. 5. Go to AndroidConversion.fla . Right-click (Control-click) and then choose Paste Layers. The copied layers are pasted into the timeline. The stage content appears scrunched up in the upper-left corner of the stage. That’s because the two documents have different dimensions. The iOS document is 360 x 480, but the Android document is 800 x 600. 6. Examine the Android document’s Library (Window→Library). The movie clips and graphics that were in the iOS doc’s library have been copied to the Android doc. The object and their instances on the stage have the same names that were used in the original iOS app. 7. Right-click (Control-click) the first and only frame in the actions layer and then choose Actions. The Actions window opens, displaying the ActionScript code that was copied from the original document and pasted into the new one. The code is unchanged, and because the objects and instance names are unchanged, the actions work in the new animation just as they did in the old one. 8. Choose Control→Test Movie→“in AIR Debug Launcher (Mobile)” to test the movie as an Android app. Everything works as it did in the iOS version. In ADL, you can click the Back, Home, and Next buttons to navigate. The second page shows five finial profiles, Chapter 23: Building Android Apps www.it-ebooks.info 761 Building Apps for Both iOS and Android as shown in Figure 23-5. Click on a profile to jump to the page that shows the dimensions for the finial. To test the app on an Android device, follow the steps from the previous exercise to complete the deployment settings. Go to File→“AIR for Android Settings” and fill in the blanks. You may want to reposition the two movie clips on the stage: ­mcMainContent and mcMenuBar. After you’ve made these changes, you can test the app with the Publish command (File→Publish). When you test the Finial app on an Android device, you can use swipe left and swipe right gestures to move from page to page. Instead of mouse clicks, single finger taps activate the buttons. For details on adding swipe gestures to your application, see the code snippets discussed on page 733. Figure 23-5 Each of the finial profiles is a clickable button in the AIR Debug Launcher. When the app is installed on an Android device, the buttons respond to finger taps. Resizing Graphics for Multiplatform Development Even if you center the mcMainContent and mcMenuBar movie clips, the Finials app looks a little lost in its Android incarnation (Figure 23-6). It will look much better if you fill the screen with the content and make the navigation buttons bigger. The quick and easy way to do this is to simply scale the objects on the stage. There are two problems with that approach, which might not be a major issue with a simple app like this one, but could lead to trouble with bigger projects. First of all, the aesthetic issue: When you scale a bitmap up, the image is likely to become blocky and pixelated. The other issue has to do with Android resources. In general, it’s best to place graphics on the stage at 100 percent scale. That way, the smartphone or tablet 762 flash CS6: The Missing Manual www.it-ebooks.info doesn’t have to spend brainpower resizing the graphic. So, the best practice is to go back to the original artwork and resize it to fit Android’s larger stage. Tips for Android App Development So, when you’re planning to build an app that’s destined for multiple devices such as iPhones, iPads, and Android phones and tablets, where do you start? Should you do your initial design for a small stage or a big stage? Many developers feel it’s best to begin your development for the small screen, because that’s likely to be the most challenging. Buttons and other widgets are proportionally bigger compared with the total stage, so every pixel makes a difference. In general, it’s easier to scale your project up to a larger screen. Figure 23-6 The Android template’s stage is bigger than the one for the original iPhone, so the iOS app looks a little lost in the extra space. Initially, the movie clips are positioned by the x/y coordinates for the smaller stage. Centering the movie clips helps some, but you’ll probably want to resize the graphics for Android. Tip If you plan ahead, you can create your multiple-sized graphics in batches. Adobe Fireworks comes with most of the CS6 suites, and it’s an excellent program for resizing graphics and outputting files in batches. In ­Fireworks, go to File→Batch Process. Fireworks also has a round-trip relationship with Flash. Right-click (­Control-click) a bitmap in a Flash document and then choose “Edit with Fireworks.” Tips for Android App Development Android devices are handheld computers, but they aren’t quite as powerful as the computer that sits on your desktop. On top of that, Android apps use gestures like swipes and flicks for navigation and other functions. You need to build apps that work in the Android environment and that don’t hog all the resources. When building Chapter 23: Building Android Apps www.it-ebooks.info 763 Tips for Android App Development Android apps, you want to conserve the device’s brainpower, battery power, and storage space. Your app has to share all those resources with the other installed apps. Many of the tips for Android app building are the same as those for any handheld: • Make use of behaviors like swipes, taps, and pinches. Avoid behaviors that won’t work with a touchscreen, like rollovers, tiny buttons, and minuscule menus. • Whenever possible, design for both portrait and landscape orientation. Make sure to test your app in both positions. If your app works only one way, you can lock in the orientation using the settings at File→“AIR for Android Settings”→General. • Use tweens only when necessary. The calculations to execute a tween gobble up Android brainpower. • Use gradients and transparency sparingly—they also hog Android brainpower. • Where possible, use bitmaps instead of vector artwork. Mobile devices like bitmaps, but the calculations necessary to draw vectors may use too much CPU power. • Pre-size your bitmaps for the application. There’s no need to perform an extra “scale” calculation if your bitmaps are sized at 100% when they’re on the stage. • If you use vector art, use the Cache as Bitmap option (Properties→Display→ Render→“Cache as Bitmap.”) This stores the vector art as a bitmap, making it easier for devices to display the image. In ActionScript, you can set the property for a movie clip: mcMovieClip.cacheAsBitmap = true. As always, test your app to make sure caching helps rather than hurts performance. • Use device fonts: _san, _serif, and _typewriter. Using device fonts keeps your app smaller and increases its performance. • Remove event listeners when they are no longer needed. • Remove objects from the display list and from memory when they are no longer needed. 764 flash CS6: The Missing Manual www.it-ebooks.info Part Appendixes Appendix A: Installation and Help Appendix B: Flash Professional CS6, Menu by Menu www.it-ebooks.info 5 www.it-ebooks.info appendix Installation and Help A I t’s 2:00 a.m., you’re this close to finishing your animation, and you run into a snag. If you can’t find the answer to your question in the pages of this book, you have plenty of other possibilities. First of all, Flash has its own built-in help system, which may give you the answer you need on the spot. For more complex problems, you can seek technical support from Adobe or from fellow Flash fans via the Web. This appendix outlines all these options. First, in case you need help getting Flash installed on your computer, some basic instructions follow. Flash CS6 Minimum System Requirements While the Flash box lists minimum requirements, minimum is the operative word. You’ll want at least 20 GB free on your hard disk—not just for the program installation, but to give you room to create and store your Flash masterpieces and import additional files (like previously created images, sound files, and movies) from elsewhere. Adobe lists the minimum amount of computer memory as 2 GB for both Macs and PCs, but as usual, you won’t be sorry if you have two to four times that amount. The same is true of processor speed—faster multicore processors perform best. For Windows operating systems, Flash works with Windows XP with Service Pack 3, Vista, or Windows 7. It’s best to have the most recent service packs (operating system upgrade) installed. For Macs, the requirement is an Intel multicore processor accompanied by Mac OS X version 10.6 or 10.7. Flash CS6 isn’t compatible with PowerPC Macs. Last, and certainly not least, is screen size and video card. The minimum is listed as 1200 x 800 pixels with a 16-bit video card. Again, most of 767 www.it-ebooks.info Flash CS6 Minimum System Requirements today’s PCs and Macs, even laptops, meet this requirement. But Flash has so many windows and panels, it’s great to have a system with more than one monitor or one very large display. That lets you display multiple panels, the Flash stage, and the Actions window without having to open, close, and then reopen them all the time. Adobe lists a DVD drive as one of the requirements. Installing Apple’s QuickTime 7.6.6 or later (which is available for Windows as well as Macs) gives you access to additional file formats and multimedia features. To activate and to use some of the online services, such as Adobe TV help, you need a broadband Internet connection. Installing and Activating Flash ­Professional CS6 As with most programs, before you can use Flash, you need to install it on your computer and activate it. Flash Professional can arrive on your desktop via several routes. Your copy may come on a DVD, or it may arrive via a download from Adobe’s online store. With Creative Suite 6, Adobe introduced a new way to acquire the various applications. You may subscribe to the suite by paying a monthly subscription fee. You may have purchased Flash Professional separately or as part of one of the Creative Suites. Also significant, your copy is for either a Windows PC or a Mac. These purchasing and system circumstances affect the installation. For example, if you got your copy of Flash CS6 through the subscription process, you will use the Adobe Application Manager to install and remove CS6 applications (Figure A-1). Depending on the settings, the Application Manager may automatically download and install updates to the applications when they’re available. If you purchase a box version of Flash CS6, the process for installing and activating your application is more traditional. Insert the disc and follow instructions. In either case, the process is pretty straightforward with instructions on what is expected from you each step of the way. Once the program is installed, you can start it up as you would any program on your system: • For Windows computers, Flash is in the Adobe folder in your Program Files folder. That path and filename are usually C:\Program Files\Adobe\Adobe Flash CS6\Flash.exe. You can create a shortcut or drag the file to your Windows taskbar for quicker starting. 768 flash CS6: The Missing Manual www.it-ebooks.info • For Macs, Flash is in the Adobe Flash CS6 folder in your Applications folder. That path and file name is usually Macintosh HD\Applications\Adobe Flash CS6\ Adobe Flash CS6. You can make an alias or drag the file to your Dock for quicker starting. Flash CS6 Minimum System Requirements Figure A-1 If you have a subscription to Adobe Creative Suite apps, you’ll use the Adobe Application Manager to install and uninstall applications as you need them. The manager also notifies you when updates are available. About Licenses and Activation Your agreement with Adobe gives you a license to run the application on a limited number of computers. If you have the standard single license that gives you permission to install one copy on your computer. It also permits you to install a second copy on a laptop or home computer, providing both copies don’t run at the same time. Adobe controls your account through the Application Manager or through the activation or deactivation process. Appendix A: Installation and Help www.it-ebooks.info 769 Getting Help from Flash Getting Help from Flash In the olden days of computing, software companies provided nice, thick paperback manuals with their programs. They weren’t always well-written, and sometimes they were downright wrong, but at least you could read them on the bus or train on the way to work or school. These days companies, including Adobe, provide book-length help files either in the program, online, or both. If you want printed pages, crank up your printer and load up a ream or two of paper. The online descriptions are more up to date and accurate than they were in those old printed volumes, but they’re often a bit cryptic, as if they were written by the software engineers who designed the programs. Funny, that. On the positive side, electronic help documents let you use your computer’s search capabilities to hunt down an answer. Initially, Flash CS6 documents are presented as online documents. Go Help→Help and a web page appears with a number of links that lead to various references, videos and articles. A section at the top, serves somewhat like a table of contents. Click a link like Interactivity, Getting Started or ActionScript and the page scrolls to a spot with links related to that subject. At first it may be confusing the way official Adobe reference materials are mixed together with “community” content from the Adobe forums. At the time this was written, the official help documents weren’t available for download; however, there was a link on the help page that said CS6 Help PDF documents would be available in June 2012 (Figure A-2). Figure A-2 Adobe’s online help files provide links to articles, videos and traditional reference materials. The Search box at the top searches the entire Adobe web site, so it may lead to pages that promote or sell Adobe products. The search box at the left lets you choose a product, but it searches for answers in the “community” also known as the Adobe Forums. 770 flash CS6: The Missing Manual www.it-ebooks.info Flash Video Workshop Tutorials Making good use of its own tools, Adobe serves up Adobe TV, where you can find video tutorials for Flash and other Creative Suite 6 programs. The company adds new programs, tutorials, and demonstrations all the time. Go to http://tv.adobe.com, and you’ll see a page like Figure A-3. You can use the search box to hunt down videos on a particular topic, or you can select an index based on specific Adobe products. For beginners, the series “Flash in a Flash” is a good place to start. Getting Help from Adobe Getting Help from Adobe Adobe offers a variety of technical support options, from free to for-a-fee. Online Articles, FAQs, and Sample Code Adobe maintains a website containing articles on Flash, as well as sample code and answers to frequently asked Flash-related questions. You can get there quickly through Help→Flash Support Center. You’ll find lots of articles and tutorials. If you’re looking for more advanced help, check out the Developer Centers listed in the column on the right side of the page. There are Developer Centers for Adobe AIR for Flash, Flash, Flash Lite, Flash Media Server, and Flash Player. Forums Adobe hosts online forums, where anyone can ask a question about Flash, and anyone can answer. User-to-user means that Adobe employees don’t officially monitor the forums or answer any questions, so the feedback you get has no official sanction or guarantee of accuracy. Still, the best and fastest answers and advice often come from other folks in the trenches, so if you’ve worked your way through Adobe’s Tech Notes, Knowledgebase (online articles), FAQs, and documentation, these forums (Help→Adobe Online Forums) are definitely worth a look. Direct Person-to-Person Help Sometimes, nothing will do but asking a real live technical support person for help. Adobe sells several different pay-to-play support plans. For example, single-incident support varies from $29 to $249. Other plans are available for workgroups and enterprises. Appendix A: Installation and Help www.it-ebooks.info 771 More Flash Books Package Definitions Figure A-3 Go to Adobe TV (http:// tv.adobe.com) for demonstrations and tutorials on Adobe products. More Flash Books Class Flash and ActionScript are popular topics. Designers and developers who are serious about using these tools generally have a shelf full of books. Some of the books mentioned here were written for Flash CS5, but by the time you read this they’ll probably be updated to cover CS6. You’re very likely to find these among the titles: • Foundation Flash CS5 for Designers by Tom Green and David Stiller. Good coverage of tools and techniques. • Flash CS5 Professional Digital Classroom by Fred Gerantabee. A good beginner to intermediate Flash guide. • How to Cheat in Adobe Flash CS5 by Chris Georgenes. Great for drawing and animation tips and tricks. • Learning ActionScript 3.0 by Rich Shupe and Zevan Rosser. Very good introduction for those new to ActionScript. • Essential ActionScript 3.0 by Colin Moock. The bible when it comes to ­ActionScript 3.0. 772 flash CS6: The Missing Manual www.it-ebooks.info Finding Flash Gurus Finding Flash Gurus Flash is one of those programs that people tend to get passionate about, so it’s not surprising that there are hundreds of great resources on the Web offering everything from example code to free components, articles, tutorials, and more. Here are a few that are definitely worth checking out: • Flashthusiast (http://flashthusiast.com). A blog maintained by Team Tween of Flash at Adobe. You can read the new developments or search the archives. • Flash Kit (www.flashkit.com). Surprisingly badly designed for a site that focuses on a design program, Flash Kit nevertheless offers a wealth of sound effects, fonts, components, and movie clips. It also hosts a well-attended online forum. • ActionScript.org (www.actionscript.org). If you’re interested in all things ActionScript, then check out this site offering tutorials, articles, and forums populated by ­ActionScript programmers. Once you’ve earned your stripes, there are even job listings where you can put your newfound skills to work. • FlashTuts+ (http://active.tutsplus.com). Tutorials on ActionScript, AIR, Flash, and other design tools. • Flashloaded (www.flashloaded.com). A place to purchase predesigned Flash components. You’ll find photo and media galleries, menu and navigation tools, and animated effects like book-style page flippers. • Keyframer (www.keyframer.com). Chris Georgenes’s website and blog is fun and has good info, especially for those interested in character animation. • Best Flash Animation Site (www.bestflashanimationsite.com) and Webby Awards (www.webbyawards.com). There’s nothing like watching a beautifully constructed Flash animation to get you thinking about good design. On these two sites, you can nominate the coolest Flash animation you’ve ever seen (including your own) or simply visit the sites others have nominated. • Boston Adobe Mobile and Devices User Group (www.flashmobilegroup.org). If you’re interested in creating Flash content for mobile devices (like mobile phones), you’ll want to check out this site, which offers Flash Lite–specific articles, seminars, links, and live chats. Appendix A: Installation and Help www.it-ebooks.info 773 www.it-ebooks.info appendix Flash Professional CS6, Menu by Menu B Flash CS6: The Missing Manual is full of details, explanations, and examples. This appendix provides quick thumbnail descriptions of every command in every menu for quick reference. File The File menu commands work on your Flash document as a whole. Use the File menu for major events, like starting a new project, opening a file you created previously, and adjusting Flash’s Publish and Preview settings. New Windows: Ctrl+N Mac: ⌘-N The New command opens the New Document dialog box, where you can create many different types of Flash documents. For web pages, choose Flash File (­ActionScript 2.0 or ActionScript 3.0). To create Flash files that will run on smartphones or tablets, use “AIR for iOS” or “AIR for Android.” For other phones, organizers, or small handheld devices, use “Flash File (Mobile).” Open Windows: Ctrl+O Mac: ⌘-O 775 www.it-ebooks.info File Opens the standard dialog box where you can navigate through your folders and open Flash files. Use the Open command to quickly find and then open files in Flash. Consider using the Browse command (described next) if you need to organize your files and perform other housekeeping chores. Browse in Bridge Windows: Ctrl+Alt+O Mac: Option-⌘-O Opens Adobe Bridge, where you can organize, preview, import, and work with all different types of graphic files. Bridge shows thumbnail animations of SWF files and previews of JPEGs and other image files. Use Bridge to edit and search through the metadata and keywords attached to your graphic files. Open Recent Leads to a submenu that shows a list of the last 10 Flash (.fla or .as) files that you opened and saved. Click a filename to open the Flash animation. Close Windows: Ctrl+W Mac: ⌘-W Closes the active Flash document. If you made changes to the document, Flash asks if you want to save it before closing. Close All Windows: Ctrl+Alt+W Mac: Option-⌘-W Closes all open Flash documents. If you made changes to the documents, Flash asks if you want to save them before closing. Save Windows: Ctrl+S Mac: ⌘-S Saves the changes you’ve made to your Flash document. If you haven’t made any changes since opening the document, the Save command is dimmed. Save As Windows: Ctrl+Shift+ S Mac: Shift-⌘-S 776 flash CS6: The Missing Manual www.it-ebooks.info Use Save As to save the active Flash document with a new name or as a different file type. For example, you can save your CS6 file in the Flash CS4 file format or in the uncompressed (.xfl) format. File Save as Template Saves your document as a Flash template. Templates provide easy-to-use starting points for Flash projects. When you save a Flash file as a template, you provide a category and description of the template. You see templates listed when you use the File→New command and click the Templates button at the top of the New Document dialog box. Check In Flash can use Adobe’s Version Cue program to make it easier to track changes in your project and work collaboratively with others. After making changes to a file on your local computer, use Check In to post those changes on the Version Cue server. Save All Saves all open Flash documents. Revert Discards any changes you’ve made to your document and reverts to the last saved version. Import Adds graphics, sound, video, and other media files to your Flash animation. Subcommands on this menu let you import files to the stage or to the Library of your active Flash animation. You can also open files in an External Library, where they’re available to all Flash animations. The last subcommand is used to import video files. Export Lets you save images and movies in a variety of different file formats so you can use them in other programs. Some of the Image options include FXG, JPEG, GIF, and PNG. Some of the Movie options include SWF Movie, QuickTime, Animated GIF, and JPEG Sequence. Publish Settings Windows: Shift+Ctrl+F12 Mac: Shift-Option-F12 Opens the extensive Publish Settings dialog box, where you can fine-tune the production of your Flash animations. Use Publish Settings to create web pages (HTML files) complete with commands to show your Flash animations and position them on the page. With Publish Settings, you can choose to create Flash projectors (standalone programs that run your animation for Windows or Mac). appendix b: flash professional cs6, menu by menu www.it-ebooks.info 777 File Publish Preview Windows: F12 Mac: ⌘-F12 Publish Preview runs your Flash animation in the format of your choice. Using the factory setting for Publish Preview, you see your animation embedded in a web page. With the submenus, you can choose to see your animation in a projector file or other formats, like an animated GIF, JPEG, or PNG file. Publish Windows: Alt+Shift+F12 Mac: Shift-⌘-F12 Produces the finished files that make up your Flash animation. Flash uses the Publish Settings dialog box (see page 685) to create the files of your choosing. These may include Flash movies (SWF), web pages (HTML), projector files (EXE for Windows, APP for Mac), and the whole spectrum of graphics files (JPEG, GIF, PICT, and PNG). If you’re publishing for the iPhone, iPod Touch, or iPad, Flash produces both SWF and IPA files. If you publish for Android, Flash produces SWF and APK files. AIR Settings AIR stands for Adobe Integrated Runtime, which is a system for creating desktop programs that run on PCs, Macs, and other systems using the AIR runtime and other web technologies, like HTML, JavaScript, and CSS. The benefits to programmers are that they can use familiar programming tools and don’t have to rewrite programs for different computer systems. Once you create a new AIR file by selecting File→New→AIR, use this command to set up the AIR project files and to provide a code signing certificate. For more details on Adobe AIR, go to www.adobe.com/ products/air. AIR for iOS Settings Use these settings to publish apps for the iPhone, iPod Touch, and iPad. On the Deployment tab, you identify your developer’s certificate, testing devices, and app IDs. For details see page 738. AIR for Android Settings Use these settings to publish apps for Android smartphones and tablets. On the Deployment tab, you can create a self-signed certificate that permits testing apps on devices that are connected via USB cable. For details see page 758. File Info Stores metadata for your Flash file. Metadata can include details like the date you created a file, the name of the file’s author, and the copyright information. Programs like Adobe Bridge read the metadata stored in files and provide database-type 778 flash CS6: The Missing Manual www.it-ebooks.info features. For example, in Bridge you can search through all your media files for ones that were created or modified on certain dates. Edit Share My Screen Adobe ConnectNow lets you share your screen with up to three other people online. Click the Share My Screen option to open the ConnectNow panel and have live online meetings with others. Adobe IDs are required, but it’s free to register for one. Page Setup Flash documents are meant to be viewed on a computer or mobile device, but you can print frames of your document on paper. Page Setup opens the dialog box where you can choose a printer, page size, and orientation before you print from your Flash document. Print Margins (Mac only) Opens the Print Margins dialog box, where you can position Flash frames on your page before printing. The settings include margin measurements and options for centering the document horizontally and vertically on the page. (To set margins for Windows computers, use the Page Setup command.) Print Windows: Ctrl+P Mac: ⌘-P Prints a frame or a sequence of frames from your Flash document using the settings from Page Setup and Print Margins. Send (Windows only) Opens your email program and attaches the current .fla file to a blank email message. All you need to do is type an address and message. Exit (Mac: Flash→Quit Flash) Windows: Ctrl+Q Mac: ⌘-Q Stops the program, and then closes the Flash window. If there are open documents, Flash closes them. If there are unsaved documents, the program prompts you to save them before quitting. Edit Use this menu to cut, copy, paste, and change items you’ve selected on Flash’s stage. appendix b: flash professional cs6, menu by menu www.it-ebooks.info 779 Edit Undo Windows: Ctrl+Z Mac: ⌘-Z This command undoes the last command you applied. So, if you accidentally deleted a drawing from your stage, the Undo command brings it back like magic. Remember the Undo command for those moments when you smack your forehead and say, “Oh no! Why’d I do that?” For extensive undoing, consider using the History panel: Window→Other Panels→History (Windows: Ctrl+F10; Mac: ⌘-F10). Redo Windows: Ctrl+Y Mac: ⌘-Y Repeats the last command you used. So if the last thing you did was paste a circle on the stage, Redo pastes another circle on the stage. If you’ve just used the Undo command, Redo restores the change. Thus, you can use Undo to step backward through your recent commands and Redo to step forward again. Cut Windows: Ctrl+X Mac: ⌘-X Removes the selected object from the stage and places a copy of it on your computer’s Clipboard. Once it’s on the Clipboard, you can paste it to a new location or a new document. Copy Windows: Ctrl+C Mac: ⌘-C Makes a copy of any selected objects and places a copy on the Clipboard. The original objects remain on the stage. Once you’ve copied an object or group of objects to the Clipboard, you can paste them to a new location or a new document. Paste in Center Windows: Ctrl+V Mac: ⌘-V Tells Flash to paste the cut (or copied) object right smack in the middle of the stage’s visible area, on top of any other image that happens to be there. Paste in Place Windows: Ctrl+Shift+V 780 flash CS6: The Missing Manual www.it-ebooks.info Mac: Shift-⌘-V Tells Flash to paste the cut or copied object in its original position on the stage. Useful for copying objects from one frame to another, this command ensures that the objects are positioned in exactly the same location in both frames. Edit Clear Windows: Backspace Mac: Delete Removes any selected objects from the stage. Flash doesn’t store cleared objects on the Clipboard, so you can’t use the Paste command to put them back on the stage. Duplicate Windows: Ctrl+D Mac: ⌘-D Copies any selected objects, and then immediately pastes a duplicate on the stage. This one command combines the Copy and Paste commands. Select All Windows: Ctrl+A Mac: ⌘-A Selects all the objects on the stage and work area. Deselect All Windows: Ctrl+Shift+ A Mac: Shift-⌘-A Removes the selection from any currently selected objects. Find and Replace Windows: Ctrl+F Mac: ⌘-F Opens the “Find and Replace” panel, where you search your document or scene for text, symbols, graphics, and media that you specify. You can then, if you wish, replace those items with something else. Find Next Windows: F3 Mac: F3 Searches for the next occurrence of the items identified in the “Find and Replace” panel. appendix b: flash professional cs6, menu by menu www.it-ebooks.info 781 Edit Timeline Leads to a submenu that shows Edit commands specific to Flash’s timeline. The submenu commands include the following: • Remove Frames Windows: Shift+F5 Mac: Shift-F5 Removes frames from the timeline, shortening the length of the timeline. • Cut Frames Windows: Ctrl+Alt+X Mac: Option-⌘-X Cuts the contents of the frames, placing that content on the Clipboard, where you can paste it into other frames. Cut Frames doesn’t reduce the number of frames in the timeline. • Copy Frames Windows: Ctrl+Alt+C Mac: Option-⌘-C Copies the selected frames and places them on the Clipboard, so you can paste them to a different location in the timeline. • Paste Frames Windows: Ctrl+Alt+V Mac: Option-⌘-V Pastes copied or cut frames into the timeline after the selected frame. Pasting frames increases the overall length of the timeline. • Clear Frames Windows: Alt+Backspace Mac: Option-Delete Removes the contents of the selected frames, leaving empty frames in place. (Unlike Cut, Clear Frames doesn’t place the frames on the Clipboard.) • Select All Frames Windows: Ctrl+Alt+A Mac: Option-⌘-A Selects all the frames in all the layers in the visible timeline so you can make changes to the entire timeline at once. 782 flash CS6: The Missing Manual www.it-ebooks.info • Cut Layers Remove one or more layer and all its content is added to the Clipboard so it can be pasted into a new timeline. Edit • Copy Layers Similar to Cut Layers (above) but the original layer and its content remain in place. • Paste Layers Use this command to paste the layers and content that has been stored on the clipboard through a Cut Layers or Copy Layers command. • Duplicate Layers A single command that copies and pastes layers. • Copy Motion Copies the properties of a motion tween so you can paste them onto another object. • Copy Motion as ActionScript 3.0 Copies the properties of a motion tween and creates ActionScript 3.0 code, which you can then use in the Actions panel. • Paste Motion Used after Copy Motion to paste the properties of a motion tween onto another object. • Paste Motion Special Lets you choose specific tween properties you want to paste onto another object. For example, your choices include X and Y positions, horizontal and vertical scales, rotation, skew, colors, and filters. Edit Symbols/Document Windows: Ctrl+E Mac: ⌘-E When you edit symbols, you change every instance of the symbol in your document. Edit Symbols opens the selected Flash symbol so you can edit it in its own timeline. (When you’re in Edit Symbols mode, this command changes to Edit Document and brings you back to the document timeline.) Edit Selected Lets you edit a selected group or object within a group. Other objects on the stage that aren’t part of the group are dimmed and inaccessible. Use Edit All (below) to return to the normal stage. appendix b: flash professional cs6, menu by menu www.it-ebooks.info 783 View Edit in Place Use “Edit in Place” to edit symbols within the context of the stage. Other objects on the stage are dimmed and inaccessible. When you edit a symbol, you change all instances of that symbol in your document. Edit All Restores the normal stage after you use the Edit Selected command. Preferences (Mac: Flash→Preferences) Windows: Ctrl+U Opens the extensive Flash Preferences panel, where you can tweak dozens of settings to make Flash work the way you like to work. You can set Preferences in the following groups: General, ActionScript, AutoFormat, Clipboard, Drawing, Text, Warnings, PSD File Importer, AI File Importer, and Publish Cache. For example, General settings include Flash’s startup options, how many levels of undo to save, and whether or not to display tooltips when the cursor is over a command or object. Customize Tools Panel (Mac: Flash→Customize Tools Panel) Opens the Customize Tools panel, where you can set up the Tools panel with just the tools you want and arrange them any way you like. Font Mapping (Mac: Flash→Font Mapping) Opens the Font Mapping panel, where you can choose substitute fonts for fonts that are missing on your system. For example, you can choose Times Roman to substitute for Times. Keyboard Shortcuts (Mac: Flash→Keyboard Shortcuts) Use Keyboard Shortcuts to add or change the keys used to invoke specific commands. View Use this menu to alter the onscreen display, with features such as zoom, guides and rulers, preview mode, and snapping to a grid (or other objects). Go To Lets you navigate Flash animations that are broken up into multiple scenes. The Go To command leads to a submenu where you can select scenes by name or choose First, Last, Previous, and Next options and specific scenes. Zoom In Windows: Ctrl+= Mac: ⌘-= 784 flash CS6: The Missing Manual www.it-ebooks.info Changes the view of the stage by zooming in twice as much. So, if the view is at 500%, zooming in changes the view to 1,000%. View Zoom Out Windows: Ctrl+Mac: ⌘-hyphen (-) Changes the view of the stage by adjusting the zoom to half as much. So, if the view is at 500%, zooming out changes the view to 250%. Magnification Leads to a submenu where you can choose from several preset zoom levels that range from 25% to 800%. In addition, there are options to Show All (zoom to show all the contents of the current frame), Show Frame (shows the entire stage), and “Fit in Window” (scale the entire stage to fit in the program window). Preview Mode Leads to a submenu with several options related to previewing your animation with the Control→Play command. The options include the following: • Outlines Windows: Ctrl+Alt+Shift+O Mac: Shift-Option-⌘-O Displays shapes in the animation as outlines or wireframe representations. With older, slower computers, this mode can help speed up previews, although most of today’s machines can keep pace with even the most complex Flash animations. • Fast Windows: Ctrl+Alt+Shift+F Mac: Shift-Option-⌘-F Turns off antialiasing and other settings that slow down Flash previews. • Anti-Alias Windows: Ctrl+Alt+Shift+A Mac: Shift-Option-⌘-A Turns on antialiasing, a computer graphics technique that makes shapes and lines appear smoother on computer screens. • Anti-Alias Text Windows: Ctrl+Alt+Shift+T Mac: Shift-Option-⌘-T appendix b: flash professional cs6, menu by menu www.it-ebooks.info 785 View Uses antialiasing on text to create a smoother appearance. These settings change the appearance of text while you’re working inside Flash; to adjust anti-alias settings for your published files, use the Properties panel settings for the Text tool. • Full Renders your Flash animation fully, providing a close approximation of the published animation. Pasteboard Windows: Ctrl+Shift+W Mac: Shift-⌘-W Shows the workspace around the stage. Works in conjunction with the Magnification commands (page 785). A checkmark appears in the menu when this option is in force. Rulers Windows: Ctrl+Alt+Shift+R Mac: Shift-Option-⌘-R Shows or hides the rulers that appear at the top and left of the program window. With rulers visible, you can drag guidelines to place on the stage. (Guides don’t appear in your final animation; they’re just visual aids to help you position items on the stage.) A checkmark appears in the menu when this option is turned on. Grid The grid is another visual aid to help you position and align objects on your stage. The grid appears as horizontal and vertical lines, similar to graph paper. The Grid command leads to a submenu where you can show or hide the grid and change the color and spacing of the lines. You can turn the grid’s “snapping” behavior on and off (see below). Guides Show, hide, and lock guides using the submenu under the Guides command. Use the Edit Guides command to adjust the appearance and behavior of your guides. The Clear Guides command removes all guides from the stage. Snapping When Snapping is turned on, objects automatically line up with other objects. So, for example, if you turn on Snapping for guides, then objects you drag snap into alignment with the nearest guide. You can turn Snapping on or off for the grid, guides, and objects. The Snapping submenu displays the following commands: • Snap Align When Snap Align is turned on, dotted lines appear on the stage when you drag an object near another object or near the edge of the stage. 786 flash CS6: The Missing Manual www.it-ebooks.info • Snap to Grid View Windows: Ctrl+Shift+’ Mac: Shift-⌘-’ Toggles the snapping behavior of the grid on or off. • Snap to Guide Windows: Ctrl+Shift+; Mac: Shift-⌘-; Toggles the snapping behavior of guides on or off. • Snap to Pixels Use “Snap to Pixels” for super-accurate alignment. With “Snap to Pixels” on, a grid appears when the zoom level is 400% or greater. This grid represents individual pixels on your Flash stage. • Snap to Objects Windows: Ctrl+Shift+/ Mac: Shift-⌘-U Toggles the snapping behavior of objects on or off. • Edit Snapping Windows: Ctrl+/ Mac: ⌘-/ Opens the Edit Snapping panel, where you can adjust the settings for snapping behaviors, including tolerance (how close objects need to be before snapping behavior kicks in). Hide Edges Windows: Ctrl+H Mac: Shift-⌘-E Toggles the highlight that appears on objects when you select them. If you want to see the object without the highlight, click Hide Edges; a checkmark appears on the menu. Show Shape Hints Windows: Ctrl+Alt+H Mac: Option-⌘-H Shows and hides shape hints on the stage. Shape hints are used to control shapes that are being tweened. By positioning shape hints, you control the appearance of appendix b: flash professional cs6, menu by menu www.it-ebooks.info 787 Insert an object as it changes shape during a tween. Turn Show Shape Hints on to make adjustments, and then turn the hints off to see your objects as they’ll appear in your animation. Show Tab Order Tab Order establishes keyboard navigation in forms and web pages. For example, if you create a form with the tab order Name = 1, Address = 2, and Phone number = 3, then your visitors can fill in their name, press the Tab key to move on to the Address field, and so on. Use Show tab order to see a visual representation of the Tab Order of items on your stage. Insert Use the Insert menu to add objects to your animation and to make changes to the timeline. New Symbol Windows: Ctrl+F8 Mac: ⌘-F8 Opens the Create Symbol dialog box, where you name and select the symbol type (movie clip, button, or graphic). Motion Tween Applies a motion tween to an object, which is great for animating movement and changing properties over time—like color, transparency, and dimensions. You can use the new Motion Editor to fine-tune every aspect of a motion tween. Shape Tween Creates a shape tween between adjacent keyframes. Shape tweens work only on editable shapes (not text or symbols). They’re great for morphing objects from one form to another—an acorn to an oak, for example. Classic Tween Creates a motion tween between adjacent keyframes (represented by an arrow on a blue background). Use classic tweens to create nonlinear motions. Classic tweens work only on symbols, grouped objects, and text blocks. While Adobe still makes classic tweens available in CS6 for compatibility reasons, it’s replaced them with the more versatile and powerful motion tween. 788 flash CS6: The Missing Manual www.it-ebooks.info Timeline The Timeline command leads to a submenu with commands for adding layers and frames to your timeline: Insert • Layer Inserts a new layer in your timeline. You use layers to organize objects on the stage. For example, layers can hold elements like shapes and text. You can also create keyframes and tweens on individual layers. • Layer Folder Creates a layer folder. Layer folders are used to organize and group layers. By opening and closing layer folders, you can simplify the appearance of your timeline. • Frame Windows: F5 Mac: F5 Inserts frames into your timeline. If no frame is selected, then this command inserts one frame in every layer after the current position of the playhead. If one or more frames are selected, then an equal number of frames are inserted following the selection. If a position is selected on the right, outside the range of the current timeline, then Flash adds new frames up to the selected point. • Keyframe Inserts new keyframes into the timeline (represented by a solid circle), similar to the Frame command. Keyframes are different from ordinary frames in that the changes and repositioning of objects in keyframes represent significant changes in the action of your animation. When you use the Insert Keyframe command, objects on the stage become part of the new keyframe. • Blank Keyframe Inserts blank keyframes into your timeline (represented by a hollow circle). Similar to the Keyframe command, except there are no objects in a blank ­keyframe—you’ve got a clean slate where you can add new objects to the stage. Scene Adds a new scene to your Flash animation. Scenes let you divide long animations into smaller, more manageable parts and create nonlinear animations or animations that repeat certain segments. appendix b: flash professional cs6, menu by menu www.it-ebooks.info 789 Modify Modify The commands in the Modify menu let you change the properties of your document, your timeline, and the objects in your animation. For example, you use commands in this menu to rotate, scale, and distort the shapes on the stage. Document Windows: Ctrl+J Mac: ⌘-J Opens the Document window, where you set the width, height, and background color of the stage. Document settings also control the speed (frames per second) of your animation and the measurement units used by rulers. Convert to Symbol Windows: F8 Mac: F8 Converts selected objects to a symbol, which can be a movie clip, a graphic, or a button. Symbols are key to many aspects of Flash animations. Among other things, symbols help to reduce the overall file size of Flash animations. Break Apart Windows: Ctrl+B Mac: ⌘-B Used to break an imported bitmap into separate pixels that can be selected and edited. (When you first import a bitmap, Flash treats it as a single discrete element.) This command also separates grouped objects and symbols into their component parts. Bitmap Flash has two Modify commands to help you work with imported bitmap (raster) images: • Swap Bitmap Replace the selected instance of a bitmap with another bitmap. • Trace Bitmap Converts the selected bitmap into a vector image, by converting areas of color into editable vector shapes. In some cases, this can reduce the Flash file size, but it’s worth testing to see whether that’s the case and that you’re OK with the changes it makes to the image. 790 flash CS6: The Missing Manual www.it-ebooks.info Symbol Flash has two Modify commands to help you work with symbols. Modify • Swap Symbol Replace the selected instance of a symbol with another symbol from the Library. • Duplicate Symbol Creates a new instance of a symbol you’ve selected on the stage. Shape Flash has several commands to help you modify shapes in your animation: • Advanced Smooth Windows: Ctrl+Alt+Shift+N Mac: Shift-Option-⌘-N Removes the hard angles and bumps from shapes and lines. Applying this command repeatedly creates smoother and smoother shapes. • Advanced Straighten Windows: Ctrl+Alt+Shift+N Mac: Shift-Option-⌘-M Removes the curves from lines and line segments. You can apply this command repeatedly, creating straighter lines each time. • Optimize Windows: Shift+Ctrl+Alt+C Mac: Shift-Option-⌘-C Reduces the number of anchor points (control points) in a shape or line by removing unneeded anchor points. This doesn’t change the shape, but it does reduce the file size and helps make shapes more manageable. • Convert Lines to Fills Changes lines into fills, in effect giving them the properties of fills. For example, once a line is changed to a fill, you can change its shape. • Expand Fill Opens the Expand Fill window, where you can expand (enlarge) or inset (shrink) the fill portion of a shape. This is similar to scaling a shape and works best on simple objects. appendix b: flash professional cs6, menu by menu www.it-ebooks.info 791 Modify • Soften Fill Edges Softens the edges of the selected shape, giving it the appearance of fading away. In the Soften Fill Edges window, you can choose the distance and the steps (gradations) for the effect. • Add Shape Hint Windows: Ctrl+Shift+H Mac: Shift-⌘-H When you’re creating a shape tween, you can use hints to control the appearance of objects as they change from one shape to another. By adding hints, you can highlight important parts of the shape that should be defined during the transition. • Remove All Hints If you’ve applied hints to a shape tween (see the previous command), this command removes them. Combine Objects The Combine Objects submenu lets you create more complex objects by combining multiple objects created in object drawing mode and altering their grouped features: • Delete Envelope Removes the Envelope modifier from the selected object. • Union Combines two or more shapes to create a new object by deleting unseen overlapping sections. The new object consists of the visible portions of the joined shapes. • Intersect Creates an object from the intersection of two or more objects. The new object shape consists of the overlapping portions of the combined shapes. • Punch Removes portions of an object as defined by the overlapping portions of another object placed on top of it. Areas where the top object overlaps the lower object are removed, and the top object is deleted entirely. • Crop Uses the shape of one object to crop another object. The front or topmost object defines the shape to be retained. Any part of an underlying shape that overlaps the top shape remains, while the visible portions of the underlying shapes are removed, and the topmost shape is deleted entirely. 792 flash CS6: The Missing Manual www.it-ebooks.info Timeline The Timeline submenu’s commands help you organize and manipulate the parts that comprise your animation, notably layers and frames: Modify • Distribute to Layers Windows: Shift+Ctrl+D Mac: Shift-⌘-D Distributes the selected objects so that each object is on its own layer. Useful for making sure different shapes are on separate layers before applying a tween. • Layer Properties Opens the Layer Properties window, where you name layers and adjust settings like layer type, layer colors, layer height, layer visibility, and layer locking. • Reverse Frames Rearranges the selected frames in reverse order. In effect, this arranges the frames so that the animation runs in reverse. • Synchronize Symbols Synchronizes the animation of a graphic symbol instance to match the timeline. It also recalculates the number of frames in a tween to match the number of frames allotted to it in the timeline. • Convert to Keyframes Windows: F6 Mac: F6 Converts the selected frames in the timeline into keyframes. This command retains the contents of the preceding keyframe. Keyframes are represented by a solid circle. • Clear Keyframe Windows: Shift+F6 Mac: Shift-F6 Converts a keyframe to a standard frame. • Convert to Blank Keyframes Windows: F7 Mac: F7 Converts the selected frame to a blank keyframe. Represented in the timeline by a hollow circle, blank keyframes have no content. appendix b: flash professional cs6, menu by menu www.it-ebooks.info 793 Modify Transform Leads to a submenu with the following Transform commands: • Free Transform Puts the selected object in Free Transform mode where you can perform scale, rotate, and skew transformations. • Distort Puts the selected object in Distort mode. You can change the shape of the object using handles on the bounding box. • Envelope The Envelope modifier lets you distort the shape of an object using handles on the bounding box. • Scale Scale lets you change the height and width of an object by dragging the handles on the bounding box. Press Shift to resize the object proportionally. • Rotate and Skew Places a bounding box around the selected object. Using the handles, you can freely rotate and skew the object. • Scale and Rotate Windows: Ctrl+Alt+S Mac: Option-⌘-S Opens the Scale and Rotate window, where you can resize and rotate the selected object by typing numbers into text boxes. • Rotate 90 degrees CW Windows: Ctrl+Shift+9 Mac: Shift-⌘-9 Rotates the selected object by 90 degrees in a clockwise direction. • Rotate 90 degrees CCW Windows: Ctrl+Shift+7 Mac: Shift-⌘-7 Rotates the selected object by 90 degrees in a counterclockwise direction. • Flip Vertical Flips the selected object vertically, putting the top of the object at the bottom. 794 flash CS6: The Missing Manual www.it-ebooks.info • Flip Horizontal Flips the selected object horizontally, putting the left side of the object on the right. Modify • Remove Transform Windows: Ctrl+Shift+Z Mac: Shift-⌘-Z Removes the previously applied transformations from the selected object. Arrange The Arrange submenu’s commands act on the objects in your animation’s layers: • Bring to Front Windows: Ctrl+Shift+up arrow Mac: Shift-Option-up arrow Brings the selected object to the top level in the frame so that the object appears to be in front of all other objects in the same frame. This action pertains only to objects in the same layer in the timeline; it doesn’t reposition layers or move objects from one layer to another. • Bring Forward Windows: Ctrl+up arrow Mac: ⌘-up arrow Brings selected objects forward one step in front of other objects in the same frame. This action pertains only to objects in the same layer in the timeline; it doesn’t reposition layers or move objects from the layer to another. • Send Backward Windows: Ctrl+down arrow Mac: ⌘-down arrow Sends the selected object backward one step behind other objects in the same frame. This action pertains only to objects in the same layer in the timeline; it doesn’t reposition layers or move objects from one layer to another. • Send to Back Windows: Ctrl+Shift+down arrow Mac: Shift-Option-down arrow Sends the selected object to the bottom level in the frame so that the object appears to be behind every other object in the same frame. This action pertains appendix b: flash professional cs6, menu by menu www.it-ebooks.info 795 Modify only to objects in the same layer in the timeline; it doesn’t reposition layers or move objects from one layer to another. • Lock Windows: Ctrl+Alt+L Mac: Option-⌘-L Locks selected objects in their current position on the stage. Locked objects can’t be selected to be moved or transformed in any other way. • Unlock All Windows: Ctrl+Alt+Shift+L Mac: Shift-Option-⌘-L Unlocks objects that have been locked in position using the Lock command. Align The Align submenu’s commands help you position your animation’s objects neatly in relation to the edges of the stage or to one another: • Left Windows: Ctrl+Alt+1 Mac: Option-⌘-1 Aligns selected objects along the left edge. • Horizontal Center Windows: Ctrl+Alt+2 Mac: Option-⌘-2 Aligns the center of the selected objects to the same horizontal position. • Right Windows: Ctrl+Alt+3 Mac: Option-⌘-3 Aligns selected objects along the right edge. • Top Windows: Ctrl+Alt+4 Mac: Option-⌘-4 Aligns selected objects along the top edge. 796 flash CS6: The Missing Manual www.it-ebooks.info • Vertical Center Modify Windows: Ctrl+Alt+5 Mac: Option-⌘-5 Aligns the center of the selected objects to the same vertical position. • Bottom Windows: Ctrl+Alt+6 Mac: Option-⌘-6 Aligns selected objects along the bottom edge. • Distribute Widths Windows: Ctrl+Alt+7 Mac: Option-⌘-7 Spaces selected objects evenly on the stage from left to right. • Distribute Heights Windows: Ctrl+Alt+9 Mac: Option-⌘-9 Spaces selected objects evenly on the stage from top to bottom. • Make Same Width Windows: Ctrl+Alt+Shift+7 Mac: Shift-Option-⌘-7 Makes the width property of selected objects equal. • Make Same Height Windows: Ctrl+Alt+Shift+ 9 Mac: Shift-Option-⌘-9 Makes the height property of selected objects equal. • Align to Stage Windows: Ctrl+Alt+8 Mac: Option-⌘-8 Toggles the To Stage behavior of alignment tools. For example, with To Stage selected, the Align Bottom command aligns selected objects with the bottom of the stage. A checkmark appears on the menu when this option is selected. appendix b: flash professional cs6, menu by menu www.it-ebooks.info 797 Text Group Windows: Ctrl+G Mac: ⌘-G Combines selected objects into a group. Grouped objects behave as if they’re a single object. They can be selected with a single click and modified and transformed with a single command. Ungroup Windows: Ctrl+Shift+G Mac: Shift-⌘-G Breaks grouped objects (see above) apart into their individual elements. Text Use the commands on the Text menu to modify the appearance of text on the stage: Font Choose a typeface from a list of fonts available on your computer. Size Apply a new size to the selected text. Sizes range from 8 point to 120 point. Style Available type styles include Plain, Bold, Italic, Subscript, and Superscript. Align Use this command to set the text alignment to Left, Centered, Right, or Justified. Letter Spacing Letter spacing is a typographic effect sometimes used in headings and logos to increase or decrease the space between all letters by the same fixed amount. Scrollable Use the Scrollable command to make dynamic text or input text fields scrollable, so the text can be longer than the available space in the text box. Check Spelling Runs Flash’s spell checker on the text in the Spelling Setup window (see below). 798 flash CS6: The Missing Manual www.it-ebooks.info Spelling Setup Use the Spelling Setup command to identify the text that needs to be spell-checked, select your language, choose a personal dictionary, and set options for words you want the spell checker to ignore. Commands Font Embedding Opens the Font Embedding window, where you can manage all the fonts used in your animation and make sure the proper fonts are available for your audience. For the details, see page 582. Commands The Commands menu helps you automate tasks in Flash. You can create commands for tasks that you perform repeatedly and download prebuilt commands from the Adobe Exchange website. Manage Saved Commands Opens the Manage Saved Commands panel, where you can rename and delete commands. Get More Commands Opens your web browser to the Adobe Exchange page, where you can find commands others have created. Some are for sale and some are free. Run Command Use Run Command to run a JavaScript command. An Open File dialog box opens, where you can navigate to the script you want to run. Convert Symbol to Flex Component You can convert Flash content into a Flex component in the .swc file format. Your content in Flash must be a movie clip symbol and must use ActionScript 3.0 (as opposed to an earlier version). Convert Symbol to Flex Container Similar to the option above that creates components for Flex, this option creates Flex containers. Copy Font Name for ActionScript Font names are sometimes complicated, with odd combinations of upper- and lower-case letters. To make sure you use exactly the right name in your ActionScript code, select a text field and then use this command to copy the font name to the Clipboard. At that point, you can paste it into your code. appendix b: flash professional cs6, menu by menu www.it-ebooks.info 799 Control Copy Motion as XML Records an XML description of your animation that you can reuse in other projects. Export Motion XML Exports a copied motion as an XML file so you can import and reuse it in other animations. Import Motion XML Imports an XML file that defines a Flash motion so you can apply it to objects in your animation. Control Control menu commands provide playback controls to test your animation in the program window, the Flash Player, and HTML pages. Play Windows: Enter Mac: Return Plays the timeline in the Flash window, showing the contents of each frame on the stage. Rewind Windows: Shift+comma (,) Mac: Shift-comma (,) Moves the playhead in the timeline back to the first frame. Go To End Windows: Shift+period (.) Mac: Shift-period (.) Moves the playhead in the timeline to the last frame. Step Forward One Frame Windows: period (.) Mac: period (.) Moves the playhead in the timeline ahead one frame. 800 flash CS6: The Missing Manual www.it-ebooks.info Step Backward One Frame Control Windows: comma (,) Mac: comma (,) Moves the playhead in the timeline back one frame. Test Movie Windows: Ctrl+Enter Mac: ⌘-Return The Test Movie option leads to a submenu, where you can choose to test your movie in Flash Professional, Device Central, “AIR Debug Launcher (Desktop),” “AIR Debug Launcher (Mobile),” or “on Device via USB.” These options may look similar, but in each case, they use the designated runtime environment. Once you’ve selected the environment for testing your movie, a checkmark appears next to its name. Then you can use the Ctrl+Enter (⌘-Return) command to test it. Flash compiles the animation and then runs it. If your movie has more than one scene, then this command plays all the scenes in order. Test Scene Windows: Ctrl+Alt+Enter Mac: Option-⌘-Return Compiles and tests the scene in the timeline. If you want to test and view all the scenes in your movie, use Test Movie (above). Clear Publish Cache Clears the publish cache of any previously stored files. Flash can create temporary files when you publish your animation. Doing so can speed up the process the next time you publish and test your animation. To adjust the publish cache settings, go to Edit→Preferences→Publish Cache (Flash→Preferences→Publish Cache). Clear Publish Cache and Test Movie This command clears the cache of any previously stored files and then publishes and tests the animation. Loop Playback Repeats the playback of your movie or scene when testing. When the movie reaches the end, it starts playing from the beginning again. Play All Scenes Tells Flash to play all the scenes in your animation, not just the currently selected scene. appendix b: flash professional cs6, menu by menu www.it-ebooks.info 801 Debug Enable Simple Frame Actions Windows: Ctrl+Alt+F Mac: Option-⌘-F Tells Flash to play the actions you’ve added to frames in the timeline. (These are basic actions like Play and Stop commands.) If you don’t turn on Enable Simple Frame Actions, then Flash ignores frame actions. Enable Simple Buttons Windows: Ctrl+Alt+B Mac: Option-⌘-B Makes your buttons work on the stage. If you turn off this menu item, mousing over and clicking buttons has no effect. Enable Live Preview Displays components you’ve added to the stage as they’ll appear in the Flash Player. If you turn this item off, then Flash displays components as outlines. Mute Sounds Windows: Ctrl+Alt+M Mac: Option-⌘-M Prevents Flash from playing sound clips during playback. Debug Debug commands give you tools to play back your movie and, at the same time, examine the inner workings of the timeline, object properties, and ActionScript code. Similar to testing, you can debug your animation in different environments: Flash Professional, “AIR Debug Launcher (Desktop),” “AIR Debug Launcher (Mobile),” or “on Device via USB.” Debug Movie Windows: Ctrl+Shift+Enter Mac: Shift-⌘-Return Plays your animation while displaying information in the Debugger window, where you can monitor the list of objects and variables your animation and ActionScript are using. 802 flash CS6: The Missing Manual www.it-ebooks.info Continue Debug Windows: Alt+F5 Mac: Option-F5 Continues playback after being stopped by the debugger. End Debug Session Windows: Alt+F12 Mac: Option-F12 Stops the debugging session and stops playback of the animation. Step In Windows: Alt+F6 Mac: Option-F6 Used during debugging in combination with breakpoints, the Step In command runs ActionScript functions step by step. Step Over Windows: Alt+F7 Mac: Option-F7 Use Step Over during debugging in combination with breakpoints to step through your ActionScript code a line at a time. Stepping over a line of code tells Flash to execute the code even if the line contains a function call. Step Out Windows: Alt+F8 Mac: Option-F8 Use Step Out during debugging in combination with breakpoints. You use this command to return from examining a function in your ActionScript code (see Step In, above). Remove All Breakpoints Windows: Ctrl+Shift+B Mac: Shift-⌘-B Breakpoints are used in debugging as a way to stop the animation and ActionScript program from running, which gives you the opportunity to examine the code, variables, and properties. This command removes all the breakpoints you previously placed in your ActionScript program. appendix b: flash professional cs6, menu by menu www.it-ebooks.info 803 Window Begin Remote Debug Session Remote debugging is the programmer’s art of debugging an .swf file on a remote server. Use this command to begin remote debugging after you’ve done the necessary setup chores of choosing your ActionScript version, creating a remote debugging file (.swd), and uploading files to the server. Window This menu is Command Central for opening and closing the many windows you use when working in Flash. Checkmarks appear next to the names of currently open windows. Clicking next to the name opens or closes the window. Duplicate Window Windows: Ctrl+Alt+K Mac: Option-⌘-K Creates a second program window. Use this command when you want more than one view of your animation or timeline. It’s useful for side-by-side comparisons of two separate frames or other aspects of your Flash animation. Toolbars Leads to a submenu with the following commands: • Main (Windows only) Opens the Main toolbar, which includes buttons for frequently used commands including New, Open, “Go to Bridge,” Save, Print, Cut, Copy, Paste, Undo, Redo, “Snap to Object,” Smooth, Straighten, “Rotate and Skew,” Scale, and Align. Like many toolbars, the Main toolbar can float or dock to the edge of the workspace. • Controller Opens the Controller toolbar, which you use to play, pause, and navigate through the frames of your animation. • Edit Bar Opens the Edit bar, which appears between the timeline and the stage in your program window. Timeline Windows: Ctrl+Alt+T Mac: Option-⌘-T Displays the timeline in your program window, which you use to work with frames and layers in your animation. 804 flash CS6: The Missing Manual www.it-ebooks.info Motion Editor Opens the Motion Editor panel, which you use to fine-tune motion tweens. The Motion Editor uses graphs to show how properties change over time. In particular, the Motion Editor gives you greater control over the easing applied to property changes. Window Tools Windows: Ctrl+F2 Mac: ⌘-F2 Shows and hides the Tools palette, which holds tools for selection, drawing, shape creation, text, color application, and color picking. Properties Windows: Ctrl+F3 Mac: ⌘-F3 Opens the Properties window, where you view—and edit—various aspects of objects in your animation. Library Windows: Ctrl+L Mac: ⌘-L Opens the Library window, which stores objects used in your animation, like graphics, movie clips, buttons, and sound clips. Common Libraries Opens the Common Library windows, which include Buttons, Classes, and Sounds. Motion Presets Opens a panel with predesigned motion tweens like “Fly-in,” “Fly-out,” and Bounce. You can use Adobe-designed presets or store your own custom-designed presets using this panel. Project Opens the Project window, where you can manage multiple files that are part of an application or large project. Actions Windows: F9 Mac: Option-F9 Opens the Actions panel, where you define and edit ActionScript code used in your animation. appendix b: flash professional cs6, menu by menu www.it-ebooks.info 805 Window Code Snippets Opens a panel with dozens of chunks of code that you can use in your ActionScript programs. Snippets are organized in these groups: Actions, Timeline Navigation, Animation, “Load and Unload,” “Audio and Video,” Event Handlers, Mobile Touch Events, Mobile Gesture Events, Mobile Actions, “AIR for Mobile,” and AIR. Behaviors Windows: Shift+F3 Mac: Shift-F3 Opens the Behaviors panel, which automates the process of applying actions to objects in your animation. (Behaviors aren’t available with ActionScript 3.0.) Compiler Errors Windows: Alt+F2 Mac: Option-F2 Opens the Compiler Errors window, where Flash displays the problems that may happen during the compilation of your animation. Debug Panels Opens the Debug panel, which you use to find errors in your ActionScript programs. The Debug panel displays the lines of your code, variables, values, and properties, while giving you the opportunity to execute code a line at a time. The Debug subpanels are Debug Console, Variables, and ActionScript 2.0 Debugger. Movie Explorer Windows: Alt+F3 Mac: Option-F3 Displays the Movie Explorer window, where you see a hierarchical representation of your Flash animation, breaking it down into scenes and objects. Output Windows: F2 Mac: F2 Opens the Output window, which is used in combination with trace() statements to debug ActionScript code. 806 flash CS6: The Missing Manual www.it-ebooks.info Align Window Windows: Ctrl+K Mac: ⌘-K Displays the Align window, which you use to align, distribute, and position objects on the stage. The Align commands are identical to those in the Modify→Align submenu, except that the window displays icons that visually indicate the alignment command. Color Windows: Alt+Shift+F9 Mac: Shift-⌘-F9 Opens the Color window, from which you pick stroke, fill, and gradient colors. The Color window provides several tools to identify colors, including color pickers, swatches, and RBG color tools. Info Windows: Ctrl+I Mac: ⌘-I Opens the Info panel, which provides details on the position of the mouse cursor and the colors at that location. The Info panel also provides height, width, and location information for selected objects on the stage. Swatches Windows: Ctrl+F9 Mac: ⌘-F9 Opens the Swatches panel, where you can pick colors to apply them to objects in your animation. You use the Swatches panel to create and save custom colors for your animation. Transform Windows: Ctrl+T Mac: ⌘-T Opens the Transform window, which you use to resize, rotate, and skew objects in your animation. Components Windows: Ctrl+F7 Mac: ⌘-F7 Opens the Components window, where you choose components to add to your animation. Components are grouped in these categories: Flex, User Interface, and Video. appendix b: flash professional cs6, menu by menu www.it-ebooks.info 807 Window Component Inspector Windows: Shift+F7 Mac: Shift-F7 Displays the Component Inspector window, which you use to set parameters, bindings, and XML schema for components you add to your animation. Other Panels Leads to a submenu with additional panels, including the following: • Accessibility Windows: Alt+Shift+F11 Mac: Shift-⌘-F11 Opens the Accessibility window, which you use to provide accessibility information to screen readers and to set accessibility options for individual Flash objects. • History Windows: Ctrl+F10 Mac: ⌘-F10 Displays the History panel, where you see a record of actions performed during the current Flash authoring session. Use the slider to the left of the list to backtrack and undo these actions. By selecting and saving multiple actions in the History panel, you can create commands (reusable actions, similar to macros) that you run from the Commands menu. • Scene Windows: Shift+F2 Mac: Shift-F2 Opens the Scene window, which lists all the scenes in your animation. Reorganize the list of scenes to change the order in which scenes play in your animation. • Strings Windows: Ctrl+F11 Mac: ⌘-F11 Opens the Strings panel, where you can create and update multilingual content for your animation. Using strings, you specify content for text fields that accommodate multiple languages. Flash can automatically determine which language to use based on the language used by the computer running Flash Player. 808 flash CS6: The Missing Manual www.it-ebooks.info • Web Services Help Windows: Ctrl+Shift+F10 Mac: Shift-⌘-F10 This panel helps to connect your Flash application to web-based services, like those provided by the SOAP protocol or RESTful design architecture. Extensions Leads to a submenu with additional Adobe services and community-based tools. Initially, there is only one item in the submenu:: • Kuler A community-based tool that lets Flash fans share, rate, and reuse color palettes. You can use this resource when you’re looking for inspiration. Workspace Leads to a submenu of commands that let you customize the Flash workspace and save your favorite workspace layouts for use with later projects. You can also use the Workspace menu on the main menu bar. Hide Panels Windows: F4 Mac: F4 Hides all panels and toolbars, leaving only the main program window visible. This command works like a toggle. Help The Help menu provides access to Flash help files included with the product and links to the Adobe website. (Many of the Help and Support resources were still in the works at the time this book went to press.) Search Field (Mac Only) The first help option on the Mac is a search field. Enter words to display and highlight the related menu command. Flash Help Windows: F1 Mac: F1 Opens the Help window in Flash, where you can find and view the help information that’s included with the Flash program. Use the panels on the left to select books appendix b: flash professional cs6, menu by menu www.it-ebooks.info 809 Help and to type in search words and phrases. Help articles appear on the right side of the Help window. Flash Support Center Opens your browser to the Flash Support pages, where you can find tech support. Get Latest Flash Player Leads to Adobe’s website, where you can find the latest version of Flash Player. Adobe Product Improvement Program Opens a dialog box, where, if you wish, you can give Adobe permission to anonymously collect information about how you use its products. The company then uses this information to develop future products. If you choose to participate, you can always turn this feature off later through the same menu command. Flash Exchange Opens Adobe’s Extension manager and provides access to Flash Exchange, where you can download components and other extensions that add to Flash’s features. Omniture This command leads to a web page with information about Omniture SiteCatalyst, a product that provides tracking and analysis for Rich Internet Applications. Manage Extensions Opens Adobe’s Extension Manager, where you can add components and features to Flash. Manage AIR SDK Use this tool to identify the location of the AIR SDK. AIR is the Adobe Intergrated Runtime that is used to develop standalone desktop and mobile apps. The SDK is the software development kit used to create AIR apps. Adobe Online Forums Opens your browser to Adobe’s forums, where you can interact with other designers and developers. Complete/Update Adobe ID Profile To use some of the features provided with Flash CS6 Professional, you need an Adobe ID. This menu item provides a link to the online site where you can create or modify your Adobe ID. Product Registration Many of Adobe’s online services, such as CS Live, use your Adobe ID. Using this command, you can register your product and create or make changes to your ID profile. 810 flash CS6: The Missing Manual www.it-ebooks.info Deactivate Opens a window where you can deactivate Flash. After deactivation, you can install Flash on another computer. Help Updates Runs Adobe’s product update tool. You have to have an activated product and Internet access to download updates from Adobe’s website. About Adobe CS6 Professional (Mac: Flash→About Flash) Opens the About Adobe CS6 Professional window, where you see the product name and version, as well as copyright information. appendix b: flash professional cs6, menu by menu www.it-ebooks.info 811 www.it-ebooks.info Index Symbols 3-D moving/rotating objects in, 181–185 moving text in, 238–239 Position and View subpanel (text), 240 rotating/moving/skewing text in, 222–223 Translation tool, 184 = (assignment operand in ActionScript), 427–428 + (concatenation) operator, 591 != (does not equal) operator, 590 == (equality) operator, 431, 433 () parentheses in ActionScript, 431 “ “ (quotation marks) defining strings with, 601 for string values, 586 A accelerometer template (Android), 755–760 accessibility, 34 ActionScript 3.0-compatible documents, 326 ActionScript 2.0, 19 ActionScript 3.0 Cookbook, 544, 586 ActionScript 3.0 Language and Components Reference, 448, 509 ActionScript Reference for the Adobe Flash Platform, 737 Actions panel, 415–416 animating text without, 233–239 arrays, 433–434 built-in data types, 434–435 changing object properties with, 422–426 classes, 422–423 conditionals and loops, 436–439 constants, 436–437 controlling text with. See strings (ActionScript) creating class folders, 419 creating text fields with, 591–594 drawing with. See drawing with ActionScript events, 429 formatting text with, 596–600 for() statements, 439 functions and methods in, 426–429 help references, 411–413, 448, 452 vs. JavaScript, 410–411 making button components work with, 550–553 making Library objects available to, 484 modifying ColorPicker component with, 557–558 naming conventions in, 490 numbers, 430–431 object-oriented programming and, 421 overview, 408 partnership with Flash, 408–409 previous versions of, 409 813 www.it-ebooks.info Actions panel 814 Script pane toolbar, 416–417 setting frame rates with, 517 specifying colors for, 203 starting timeline with, 520–522 strings, 432 summary of properties/methods, 507–510 support for ActionScript 1 and 2, 411 targeting labeled frames with, 525–529 targeting scenes with, 532–535 timeline programming pros and cons, 413–415 writing code, 415 Timer, 477 variables, 435–436 while() statements, 438–439 writing code in ActionScript files, 418–419 Actions panel, 654 Add Anchor Point tool, 71 addChild() methods, 509, 591 addChild() statement, 485, 491–492, 494 addEventListener() method, 478 Adobe AIR. See AIR (Adobe Integrated Runtime) Adobe Player Distribution License, 699 ADPCM sound format, 676 Advanced Character subpanel (TLF text), 242–243 advertising templates, 282 AICC learning management system, 687 AIR (Adobe Integrated Runtime) AIR for Android templates, 283 AIR for iOS app settings, 738–743 “Hello iPad” app, 722–723 AIR Marketplace, 708 code signing certificates, 710–713 converting Flash animations to, 713–715 Debug Launcher, 722, 737, 755 defined, 408 vs. Flash, 707–708 “Hello World” application, 707–709 installing runtime environment, 720 overview, 705–706 publishing applications, 715–720 self-signed certificates, 711–714 aligning objects, 78–79, 190–195 alpha channel (transparency), 318 anchor points defined, 62 in motion paths, 115 moving with Subselection tool, 165 Android apps accelerometer template, 755–760 converting to iOS, 760–764 development tips, 763–764 “Hello Android” app, 753–755 overview, 751–753 Animated Button Highlight template, 284–285 animations adding components to, 544–550 animating drawings with TimerEvent, 627–629 animating text, 233–239 “auto refinishing” animation, 6–7 background, 5–6 bones and. See bones “Compress movie” option, 677 controlling speed of, 514–519 converting to AIR, 713–715 exporting, 699–700 frame-by-frame. See frame-by-frame animations playing out of sequence, 522–523 playing (tutorial), 41 publishing. See publishing animations starting/stopping, 519–520 templates, 283 testing. See testing animations tips from experts, 45–46 Anti-alias settings (type), 241–242 appendText() method, 588 Apple World Wide Developer Relations Certification Authority certificate, 726–727 armatures (bones) branching, 332–333 defined, 327 arranging drawn objects, 75–76 arrays (ActionScript), 433–434 assignment operand (=) in ActionScript, 427–428 audio file formats, 374 Index www.it-ebooks.info Audio stream/Audio event options, 682–683 Audition, Adobe, 383 Autoformatting (ActionScript), 417 AutoSave checkbox, 50 autosizing text fields, 594–595 B backgrounds Background color box, 50 of text fields, 593–594 backstage area, 23 bandwidth profiler reports, 648–651 Banner templates, 283 batch encoding (video), 388 beginFill() method (ActionScript), 622 Bind tool, 345 bitmaps breaking apart, 364–365 editing with Photoshop, 366–367 import options for, 359–360 optimizing, 673–675 selecting colors, 169–171 turning into fills, 364–365 turning into symbols, 366 turning into vectors, 365–366 black boxes (components), 549 blank keyframes, 92 Blend option (shape tweens), 119 bones Bone tool, 326 branching armatures, 332–333 changing length of, 338 combining with tweening, 332 controlling rotation of, 333–335 control points (shapes), 344–346 deleting, 339 linking symbols with, 326–330 moving, 335–337 moving shapes with, 342–346 overview, 325–326 pinning, 341–342 pose layers, 328, 330–332 posing with control handles, 339–340 repositioning symbol instances, 337–338 Spring properties, 346–348 Boolean data type (ActionScript), 433 borders, text field, 593–594 bounce-smoosh tween animating the drop, 103–107 copying/pasting frames, 109–110 reversing frames in frame span, 110 tweening dimension properties of symbols, 107–109 branching armatures (bones), 332–333 Break Apart command, 234, 257 breakpoints (debugging), 663–666 Bridge, Adobe, 369–370 brightness (color), 198 Brush tool basics, 72–75 vs. Pencil tool, 672 button components adding sounds to, 376 basics, 560–561 working with ActionScript, 550–553 button symbols creating, 273–275 creating instances of, 276–279 editing, 280 editing instances of, 276–280 oddly shaped/invisible, 277 overview, 271–272 classic text C case camel case (ActionScript), 423 of strings, 590–591 certificates code signing, 710–713 developer, 724–726, 725–729 characters Character subpanel (text), 240–242 formatting with ActionScript, 596–600 replacing in strings, 590 CheckBox component, 561–562 Check syntax button (debugging), 652–655 Check Syntax tool, 464 child bones, 336 circles, drawing with ActionScript, 622–625 classes ActionScript 3, 422–423 OOP, 420 classic text advanced formatting functions, 231 creating hyperlinks with, 227–229 Index www.it-ebooks.info 815 clearing 816 formatting with CSS, 602–604 positioning/sizing, 240 vs. TLF text, 216–218 types, 218 clearing clear() method (Graphics class), 632 keyframes, 102, 131 objects, 172 posed frames, 331 clip symbols, 251 CMYK color space, 356 code analyzing with Debugger, 662–666 Code Snippet Window, 735 commenting out, 661 copy-and-tweak coding, 467–471 hinting, 594–595 reusing, 638 signing certificates, 710–713 color basics, 198–199 changing text color, 224–226 color code (Actions panel), 654 color effects using Motion Editor, 315–316 ColorPicker components, 554–559, 562–563 creating custom, 199–202 of fills, changing, 87–88 gradients, 206–209 RGB and HSB, 199 rules for using, 202 saving swatches, 203–204 selecting bitmap, 169–171 specifying for ActionScript, 203 of stage, 50–51 of strokes, changing, 84–86 tools, 29 using images as fill “color”, 203–205 ComboBox component, 563–564 Commands menu (Flash), 799–800 commenting code, 460, 466–467, 638, 661 Common Libraries, 560 compiled Flash files (publishing), 679–684 compiler errors, 435, 465, 655 components adding to animations, 544–550 built-in, 558–559 button, 550–553 ColorPicker, 554–559 Component Assets folder, 547 Component Parameters subpanel, 548, 553, 560 modifying in Properties panel, 553–554 overview, 543–544 User Interface. See User Interface components compressing “Compress movie” option, 677 Flash videos, 385 sound clips, 682–683 concatenation (strings), 432, 591 conditional statements (ActionScript), 436–439 constants (ActionScript), 436–437 containers contains() method (DisplayObjectContainer), 509 text, 228–233 content adding to multiple layers, 136–138 defined, 46 preloading, 678 Controller timeline, 641 toolbar, 27 Control menu (Flash), 800–802 control points (bones), 344–346 Convert Anchor Point tool, 71 Convert to Symbol dialog box, 251, 268 copying/pasting Copy Frames/Paste Frames commands, 305 drawn objects, 82–83 frames, 109–110, 127–129 keyframe properties, 115–117 layers (animation), 145 motion paths, 114–115, 302–303 objects, 172–173 pose frames, 332–333 properties between property keyframes, 310–311 shape tweens, 129–130 Create New Symbol dialog box, 255, 263 cropping video clips, 390–392 Index www.it-ebooks.info CSS (Cascading Style Sheets) CSS: The Missing Manual, 602 formatting classic text with, 602–604 formatting text with, 600–601 formatting text with external files, 605–606 cue points (video), 392–394 curves adding to motion paths, 113 converting straight line segments to, 166 drawing with ActionScript, 619–621 drawing with Pen tool, 70–72 optimizing, 672–673 customizing color gradients, 208–209 colors, 199–202 FLVPlayback component (video), 403–404 Photo Album template, 286–287 saving custom Motion Presets, 298–299 templates, 282 view in Motion Editor, 316–317 Cut Frames command, 129, 131 D Damping property (bones), 346–348 dashed/dotted lines, 672 DataGrid component, 565–567 DataProvider objects, 566–567 data types (ActionScript), 429 Date data type (ActionScript), 434 debugging analyzing code with Debugger, 662–666 Compiler Errors panel, 656–657 Debug menu (Flash), 802–804 overview, 652 setting breakpoints, 663–666 Syntax checker, 652–655 trace() statement, 657–661 using Output panel, 657–661 declaration blocks (CSS), 602 declaring constants, 436 declaring variables (ActionScript), 435 Deco tool, 196–198 deleting bones, 339 frames, 102–103, 129 graphic symbols, 262–263 iOS test apps, 744 layer folders, 151 layers (animation), 146–147 lines/shapes (ActionScript), 632–633 motion paths, 302 Motion Presets, 299 multiframe graphic symbols, 267 deploying Flash videos, 395–396, 402 deployment settings (AIR for iOS), 740–741 design time (ActionScript), 562 Detect Flash Version publishing option, 690 developer program (iOS). See iOS developer program device fonts, 585 dimension properties of symbols, tweening, 107–109 Display Lists adding display objects by index position, 501–504 adding objects to, 483–488 DisplayObjectContainer classes, 482–483 methods, 508–510 properties, 508–509 identifying display objects, 505–506 modifying display containers, 494–495 moving objects between containers, 495–499 overview, 481–482 placing objects inside display containers, 490–495 removing display objects by index position, 504–505 removing objects from, 499–500 stacking order of objects, 500 swapping display object positions, 507–508 using trace() to report on, 488–490 distorting objects, 179–181 Distribute to Layers function, 139 Distribute Widths command, 549 dithering (color), 693 docked toolbars/panels, 26 documents adding text to, 220–222 Index www.it-ebooks.info documents 817 download time, testing‌ 818 Document Properties dialog box, 516 Document Settings window, 49 exchanging symbols between, 259 opening new, 47–48 optimizing. See optimizing files properties, setting, 48–50 download time, testing, 646–651 drawing aligning objects, 78–79 arranging drawn objects, 75–76 Brush tool, 72–75 changing fill colors, 87–88 changing stroke colors, 84–86 converting strokes to fills, 189–190 copying/pasting objects, 82–83 with Deco tool, 196–198 Drawing Effect subpanel, 196–197 Eraser tool, 79–82 Line tool, 65–66 measurement guides, 50–53 merge mode, 56–58, 60–61 modes overview, 55–56 object mode, 58–60 opening new document page, 47–48 Pencil tool, 66–68 Pen tool, 68–72 planning for, 43–47 predesigned templates for, 52 selecting objects on stage, 61–63 setting document properties, 48–50 shapes, 53–54 shape tools, 76–78 strokes and fills, 63–65 tools, 28 drawing with ActionScript animating drawings, 626–631 built-in shapes, 622–625 curves, 619–621 drawRandomLine() method, 660 Graphics class, 615–616 irregular shapes, 625–626 lines, 616–619 moving objects independently, 629–631 Point class, 611–615 shapes/sprites/movie clips, 631–632 Drop Shadow filter, 317 duplicating objects, 84, 173 Dynamic Text, 218 E Ease option (shape tweens), 119 ease presets, 321–322 editing bitmaps, 364 bitmaps with Photoshop, 366–367 button symbols, 280 editable paths, 357 editable text, 218 Edit bar, 26–27 Edit menu (Flash), 779–784 Edit Snapping window, 191–192 frame-by-frame animations, 99–104 graphic symbols, 258–262 instances of button symbols, 276–280 instances of graphic symbols, 257–259 instances of movie clip symbols, 271 instances of multiframe graphic symbols, 266 motion paths, 110–115 movie clip symbols, 271 multiframe graphic symbols, 267 multiple frames, 132–136 property keyframes in timeline, 308–309 software for videos, 384 sound files, 382–384 symbol editor, 252–255 tween spans, 307–310 ellipse shape (ActionScript), 624 embedding fonts in SWF files, 582–585 encapsulation (OOP), 421 encoding Flash videos, 385–390, 392, 395 endFill() method (ActionScript), 623 end points (motion paths), 113–114 envelope distortions of objects, 180–181 equals property (Point class), 615 Eraser tool, 79–82 errors, compiler, 655–657 Essential ActionScript 3.0, 544, 586 Essentials workspace, 21–22 events ActionScript 3, 429 event handler snippets, 445 Index www.it-ebooks.info event listeners, 448–451, 453–455, 477 keyboard and text, 471–475 mouse. See mouse events in OOP, 421 overview, 443–444 properties, 472–474 registering, 450 TimerEvent, 476–478 exporting animations, 699–700 content of single frames, 700 Exporting Flash Movie dialog box, 643 Export Settings window (video), 389–390 graphics from Flash, 370 F files audio formats, 374 File menu (Flash), 18–19, 775–779 formats for exporting animations, 699– 700 Flash import, 353 FXG, 354 overview, 19 video, 384, 386 managing with Adobe Bridge, 369–370 opening (tutorial), 35 fills basics, 54 changing color of, 87–88 converting strokes to, 189–190 creating, 63–65 defined, 29 turning bitmaps into, 364–365 using images as fill “color”, 203–205 filters applying to button symbols, 273, 277–281 using in tweens, 316 Find and Replace function, 132 Fireworks, 361–365 Flash Exchange website, 19 Media Server, 396 Flash CS6 Adobe help, 771–772 vs. AIR, 707–708 file formats, 19 flash.geom package, 612 Help, 770–773 installing/activating, 768–770 menus. See menus (Flash) minimum system requirements, 767–768 new features in, 3–5 online resources, 773–774 potential uses for, 1–3 Professional workspace, 16 reference books, 772 starting, 15–20 workspace. See workspace Flash Player detecting version of, 690 testing in, 640 View menu, 651 flipping objects, 177, 178 floating toolbars/panels, 26 flowing text between containers, 232–233 FLVPlayback component (video), 403–404 flyin-pause-flyout motion preset, 296–299 folders organizing layers with, 150–151 organizing symbols into, 281 fonts device, 585 embedding in SWF files, 582–585 overview, 219, 581–582 formats, file. See files formatting text fields, 593–594 text with ActionScript, 596–600 text with external CSS files, 605–606 text with HTML and CSS, 600–606 for() statements (ActionScript), 439 forums, online (Adobe), 771 frame-by-frame animations changing tweens to, 310 creating, 93–97 editing, 99–104 overview, 91–92 testing, 97–98 Index www.it-ebooks.info Frame By Frame animations 819 frame by frame bandwidth profiler report Frame By Frame bandwidth profiler report, 650 frames adding sound files to, 376–381 basics, 24 converting to movie clip symbols, 269 copying/pasting, 109–110, 127–129 deleting, 102–103, 129 editing multiple, 132–136 exporting content of, 700 frame rates, 515–516, 517 inserting static, 101 labeled. See labeled frames looping series of, 536–538 moving, 130–131 publishing as static image files, 690–697 removing/cutting/clearing, 131 reversing in frame span, 110 selecting, 99–100 static image files, 690–697 turning tweened into posed, 331 freehand mode (Lasso tool), 166–167 Free Transform tool, 174–181 fscommand() statement, 687 function closures (ActionScript), 421, 428 functions (ActionScript 3), 426–429 FXG file format, 354 G general settings (AIR for iOS), 738–740 getChild() methods (DisplayObjectContainer), 510–511 GIF (Graphic Interchange Format) files publishing animated, 697–698 publishing static, 691–693 gotoAndPlay() statements, 528–529, 535 gotoAndStop() method, 452, 551 gradients, color, 206–209, 225 graphics. See also images elements, selecting, 159–161 exporting from Flash, 370 Graphics class (ActionScript), 615–616 importing, 351–354 820 importing series of, 368–369 resizing for multiplatform development, 762–763 tablets, 67 graphic symbols converting existing images to, 250–254 creating instances of, 255–256 creating in symbol editing mode, 252–255 deleting, 262–263 editing, 258–262 editing instances of, 257–259 multiframe. See multiframe graphic symbols overview, 249–250 registration points vs. transformation points, 253 Grid Fill effect, 197 grid tool, 51 grouping objects, 188 guide layers, 192–195 guides tool, 51 H “Hello Android” app, 753–755 “Hello iPad” app, 722–723 “Hello World” app (AIR), 707–709 Help from Adobe, 771–772 Flash, 15, 770–773 menu (Flash), 809–811 hexadecimal numbers (color), 203, 557 hiding/showing multiple layers (animation), 138–141 hinting, code, 594–595 hints, shape, 121–123 History panel, 309 horizontalScrollPolicy setting, 572 HTML (Hypertext Markup Language) creating hyperlinks with, 601–603 formatting text with, 600–602 publishing animations as, 685–689 hue (color), 198 hyperlinks HTML, 601–603 text, 225–228 Index www.it-ebooks.info I icon settings (AIR for iOS), 741–743 iDevices, 743–744 IDs for iDevice apps, 724–726, 729–731 if() statements (ActionScript), 436 IK bones. See bones Illustrator, importing from, 354–359 images. See also graphics converting to graphic symbols, 250–254 using as fill “color”, 203–205 vector vs. bitmap, 365 importing files to Library, 359 Flash videos stored on computers, 397–402 stored on web, 402–403 graphics, 351–354 graphics from Fireworks, 361–365 Illustrator files, 354–359 options for bitmaps, 359–360 Photoshop files, 359–361 series of graphics files, 368–369 sound files, 374–375 unimportable graphics, 362 video files, 384, 395–396 incrementing values (while() statements), 439 indexOf() method (string class), 589–590 index position adding display objects by, 501–504 identifying display objects with, 505–506 removing display objects by, 504–505 Ink Bottle tool adding strokes to shapes with, 64 coloring strokes with, 86–87 Ink option (Pencil tool), 67 in point/out point markers (video), 389 Input Text, 218 inserting Insert menu (Flash), 788–789 keyframes, 100–102 static frames, 101 installing Adobe AIR runtime, 720 Flash Professional CS6, 768–770 iOS apps, 743–744 provisioning profiles (Apple), 731–732 instances of button symbols, 276–282 defined (OOP), 420 of graphic symbols, 255–256, 257–259 of movie clip symbols, 269–271 of multiframe graphic symbols, 264–266, 266 of symbols, 337–338 Interactive Advertising Bureau, 52 interpolate() method (Point class), 613 int (integer) data type (ActionScript), 430 iOS apps building tap-ready, 745–748 converting to Android, 760–764 “Hello iPad” app, 722–723 overview, 721, 733 publishing/installing/testing, 743–744 swipe to next/previous code snippet, 733–737 testing mobile events with Simulator, 737 iOS developer program assigning devices for testing, 729 creating app IDs, 729–731 developer certificates, 725–729 overview, 723–724 provisioning profiles, 731–732 purpose of certificates/IDs, 724–726 iPhone App Development: The Missing Manual, 724 irregular shapes drawing with ActionScript, 625–626 selecting with Lasso tool, 167 JPEG (Joint Photographic Experts Group) files J jailbreaking mobile devices, 724 Java Development Kit (JDK), 755 JavaScript vs. ActionScript, 410–411 joining strings, 586–588 Joint: Rotation settings (bones), 334–335, 340 JPEG (Joint Photographic Experts Index www.it-ebooks.info 821 Group) files publishing, 693–695 quality of, 681 kerning text K kerning text, 230, 240 keyboard events, 471–475 keyboard shortcuts Actions panel, 415 arranging drawn objects, 76 clearing keyframes, 131 deselecting objects, 159 displaying Properties panel, 30 duplicating objects, 63 frames and keyframes, 96 ruler measurement units, 51 scaling objects, 175 Selection tool, 61 Subselection tool, 62 timeline, 93 Tools panel, 60 Undo command, 38 ungrouping, 550 viewing animations, 98 keychain security system (Apple), 727 keyframes basics, 92 clearing, 102 inserting, 100–102 moving, 130–131 selecting, 99–100 keyword function, 498 L Label component, 567 labeled frames adding, 523–525 overview, 523 vs. scenes, 525 targeting with ActionScript, 525–529 Lasso tool, 62–63, 166–170 lastindexOf() method (string class), 589–590 launching Flash CS6, 15–20 layers benefits of, 142 copying/pasting, 145 creating for actions/labels/buttons, 545–549 defined, 135 822 deleting, 146–147 Distribute to Layers function, 139 Layer Properties dialog box, 144 locking/unlocking, 148 moving, 147 multiple. See multiple layers organizing with folders, 150–151 Outline view, 149–150 renaming, 141–144 reordering (moving), 146 spotlight effect with mask layers, 151–154 leading (text), 230, 240 length property (Point class), 612 Library importing files to, 359 panel, 30–31, 249 line breaks (strings), 589–590 lines drawing with ActionScript, 616–619 Line tool, 65–66 removing (ActionScript), 632–633 lip-synching (sound), 378 List component, 567–569 literals, string, 587 locking/unlocking layers (animation), 148 looping defined, 98 parts of timeline, 537–540 series of frames, 536–538 with while() and for() statements, 436–439 lossy formats (video), 385 M Mac starting Flash in, 16–18 Magic Wand, 169–172 Magnification menu (Edit bar), 39 main timeline, 482 Main toolbar, 27 mask layers, 151–154 Math.random() method, 660 Math.round() method, 666 measurement guides, 50–53 Media Encoder, Adobe, 384, 386–390 Media Playback templates, 283 menu bar, 22–23 menus (Flash) Index www.it-ebooks.info Commands, 799–800 Control, 800–802 Debug, 802–804 Edit, 779–784 File, 775–779 Help, 809–811 Insert, 788–789 Modify, 790–798 Text, 798–799 View, 784–788 Window, 804–809 merge drawing mode, 56–58, 60–61 metadata, 683 methods ActionScript, 507–510 ActionScript 3, 426–429, 434 DisplayObjectContainer, 508–510 OOP, 420–421 Mobile Actions snippets, 735 Modify menu (Flash), 790–798 morphing. See shape tweens Motion Editor adding/removing property keyframes, 313–314 basics, 311–312 changing transparency with, 318–321 color effects, 315–316 customizing view, 316–317 ease presets, 321–323 moving property keyframes, 314–315 property changes, 315 using filters in tweens, 316 workflow for common tweens, 312–313 motion paths adding curves to, 113 changing, 300–302 copying/pasting, 114–115, 302–303 deleting, 302 moving, 111–112 moving end points on, 113–114 orienting tweened objects to, 304–306 overview, 110–111 Motion Presets applying, 295–299 bounce-smoosh preset, 40 deleting, 299 previewing custom, 299 saving custom, 298–299 tutorial, 39–41 motion tweens bounce-smoosh tween. See bouncesmoosh tween modifying timelines of, 308 mouse events applying to different projects, 455 basics, 445–448 constants (MouseEvent class), 449 creating rollovers with, 449–452 tabbed window project copy-and-tweak coding, 467–471 modifying windows for different projects, 471 overview, 456 planning before coding, 459–464 tabbed folder display preparation, 456–459 testing code, 464–468 movie clips creating drawings on, 631–632 MOVIECLIP data type, 434 movie clip symbols creating, 268–270 creating instances of, 269–270 editing, 271 editing instances of, 271 vs. multiframe graphic symbols, 251 overview, 267 moving anchor points with Subselection tool, 165 bones, 335–337 drawings with ActionScript, 626–631 end points on motion paths, 113–114 frames and keyframes, 130–131 layers, 146, 147 motion paths, 111–112 objects, 172–173 objects between display containers, 495–499 objects in 3-D, 181–185 objects independently, 629–631 objects with Selection tool, 163–164 objects with Subselection tool, 164–165 property keyframes, 314–315 shapes with bones, 342–346 text in 3-D, 222–223, 238–239 multicolumn text containers, 232–233 Index www.it-ebooks.info multicolumn text containers 823 multiframe graphic symbols multiframe graphic symbols creating, 263–264 creating instances of, 264–266 deleting, 267 editing, 267 editing instances of, 266 vs. movie clips, 251 overview, 263 saving series if frames as, 249–250 multiline text containers, 229–230 multiplatform development, 762–763 multiple frames, editing, 132–136 multiple layers adding content to, 136–138 showing/hiding, 138–141 N naming consistency in, 639 name property (DisplayObjectContainer), 508 scenes, 530–531 nesting symbols, 249, 250 New Document window, 48 nextFrame() method, 737 Number data type, 614 numbers (ActionScript 3), 430–431 numChildren property (DisplayObjectContainer), 508 NumericStepper component, 569–570 O objects adding to Display Lists, 483–488 aligning, 78–79, 190–195 applying gradient swatches to, 207–208 arranging drawn, 75–76 changing dimensions with Transform tool, 109 changing properties of, 422–426 copying/pasting, 82–83 cutting/copying/pasting, 172–173 cutting out irregular shapes from, 81–82 duplicating, 84, 173 freehand selection of, 166 grouping, 188 modifying properties of, 170–171 moving, 172–173 824 moving between display containers, 495–499 moving independently, 629–631 moving/rotating in 3-D, 181–185 moving with Subselection tool, 164–165 object drawing mode, 58–61 object-oriented programming (OOP), 419–421 placing inside display containers, 490–495 removing from Display Lists, 499– 500 reshaping with Selection tool, 163–164 selecting on stage, 61–63 selecting parts of, 161–163 stacking, 185–189 swapping tweened, 307–309 transforming, 174–175. See also transforming objects onion skinning, 132–136 online forums (Adobe), 771 opaqueBackground property, 556 opening files (tutorial), 35 OpenSSL (Open Secure Socket Layer), 728 operators (ActionScript), 430–432 optimizing files importance of, 671 overview, 669–671 strategies for, 671–679 Options menu button (panels), 31 Options tools, 29 “Orient to path” checkbox, 306–307 OSMF Marketplace, 707 Outline view (layers), 149–150 Output panel, 657–661, 473 Oval tool, 76–79 P .p12 certificates for Windows, 728 padding properties (text fields), 594–595 painting Paint modes (Brush tool), 74 spray painting Symbols, 195–196 panels Align, 78–79 basics, 25–27 Index www.it-ebooks.info Library, 30–31 Properties, 29–30, 36–37 summarized descriptions of, 31–34 Tools, 27–29 paragraphs formatting with ActionScript, 596–600 Paragraph subpanel (TLF text), 243 parameters Button component, 560 Checkbox component, 562 ColorPicker component, 563 ComboBox component, 564 Component Parameters subpanel, 560 DataGrid component, 565 FLVPlayback component, 404 Label component, 567 lineStyle() method, 617 List component, 567–569, 568–569 for methods, 450 NumericStepper component, 569–570 ProgressBar component, 571 RadioButton components, 571–572 ScrollPane component, 573 Slider component, 574 TextArea component, 575 TextInput component, 576 TileList component, 576–577 parent property DisplayObject, 490 DisplayObjectContainer, 508 Paste Properties Special dialog box, 116 paths, motion. See motion paths Pencil tool basics, 66–68 vs. Brush tool, 672 Pen tool, 68–72 Perspective property (3-D), 185–186 Photo Album template, 286–287 Photoshop editing bitmaps with, 366–367 importing graphics from, 359–361 pinning (bones), 341–342 pixels, defined, 29 playhead (timeline), 24 PNG (Portable Network Graphics) files publishing, 695–697 saving in Fireworks, 362–363 Point class (ActionScript), 611–615 polygon mode (Lasso tool), 168 Polystar tool, 76–79 pose layers (bones), 328, 330–332 posing with control handles, 339–340 preloader template, 678 preloading content, 678 Presentation templates, 283 prevFrame() method, 737 primitives, Rectangle/Oval, 78 profiles provisioning (Apple), 731–732 publish profiles, 684 ProgressBar component, 570–571 projector files, 678 projectors, 698–699 properties 3-D, 185–186 ActionScript, 507–510 copying between property keyframes, 310–311 DisplayObjectContainer, 508–509 document, 48–50 layer, 144 of objects, 170–171, 422–426 in OOP, 420 Properties pane, 87 public (keyboard events), 474–475 text engine, 240 Properties panel coloring strokes with, 85–86 modifying components in, 553–554 overview, 29–30 tutorial, 36–37 property keyframes adding/removing, 313–314 basics, 92, 106 copying/pasting properties of, 115–117 copying properties between, 310–311 moving, 314–315 viewing/editing in timeline, 308–309 provisioning profiles (Apple), 731–732 public constants (MouseEvent class), 449 public properties (keyboard events), 474–475 publishing AIR applications, 715–720 iOS apps, 743–744 Index www.it-ebooks.info publishing 825 publishing animations Publish Settings window, 644–645 publishing animations as animated GIFs, 697–698 as compiled Flash files, 679–684 file choices, 677–679 frames as static image files, 690–697 JPEG files, 693–695 PNG files, 695–697 publish profiles, 684 as standalone projectors, 698–699 static GIFs, 691–693 as web pages, 684–689 pulsing loading text symbol, 678 Q QuickTime, 356 S R RadioButton components, 571–572 random() method, 660 Raw sound format, 676 Read Only text, 218 rectangles drawing with ActionScript, 622–625 Rectangle tool, 76–79 registering events, 444, 450 registration points (graphic symbols), 253, 254 removeChild() methods (DisplayObjectContainer), 510 removeEventListener() function, 478 Remove Frames command, 131 renaming layers, 141–144 reordering layers, 146 replace() method (strings), 590 repurposing symbols, 271 reshaping objects with Selection tool, 163–164 resizing graphics for multiplatform development, 762–763 stage (tutorial), 37–38 video clips, 390–392 Reverse Keyframes command, 112 reversing frames in frame span, 110 RGB and HSB colors, 199, 201, 356 rich Internet applications (RIAs), 408 robot animation project, 332–335 rollovers (mouse events), 449–452 root bones, 327 826 rotating bones, 333–335 objects, 176–177 objects in 3-D, 181–185 Rotation subpanel, 306 text in 3-D, 222–223 round rectangle shape (ActionScript), 624 rulers tool, 51 viewing, 104 runtime defined, 562 engine, 98 environment, 705 Sample File templates, 283 saturation (color), 198 saving custom Motion Presets, 298–299 Flash files, 354 scaling objects, 175–176 scenes creating, 529–530 vs. labeled frames, 525 overview, 529 renaming, 530–531 reorganizing, 531–532 Scene/Symbol panel, 663 targeting with ActionScript, 532–536 SCORM learning management system, 687 Script pane toolbar (ActionScript), 416–417 Script window (ActionScript), 418 ScrollPane component, 572–573 scrubbing, 41, 106, 642 segments defined, 62 Pen tool and, 68 Selectable text, 218 selecting bitmap colors with Magic Wand, 169–171 frames and keyframes, 99–100 graphic elements, 159–161 Lasso tool, 166–170 objects on stage, 61–63 overview, 157–159 Index www.it-ebooks.info parts of shapes/objects, 161–163 Selection tool basics, 61–62 moving/reshaping objects with, 163–164 overview, 159 Subselection tool, 164–165 self-signed certificates, 711–714 setTextFormat() method, 597–598 shapes creating drawings on (ActionScript), 631–632 cutting out irregular, 81–82 drawing, 53–54 drawing built-in (ActionScript), 622–625 drawing irregular (ActionScript), 625–626 moving with bones, 342–346 optimizing, 672–673 removing (ActionScript), 632–633 selecting parts of, 161–163 tools, 76–78 ungrouped, 162–164 shape tweens copying/pasting, 129–130 creating, 117–120 overview, 117 shape hints, 121–123 showing/hiding multiple layers, 138–141 SIMPLEBUTTON data type (ActionScript), 434 Simulator (mobile events), 737 single-line text containers, 229–230 sizing size reports, 649 text fields, 593 skewing objects, 178–179 text in 3-D, 222–223 skins (Flash video), 399 Slider component, 573–574 Smooth option Pencil tool, 67 Selection tool, 161 snake animation, 342–344 snapping feature, , 52 snippets, code, 735–736 sound clips adding to series of frames, 376–381 compressing, 385, 682–683 editing, 382–384 importing, 374–375 optimizing, 674–675 overview, 374 Sound Settings dialog box, 682 stock media, 382 using effectively, 379 Speech sound format, 676 spotlight effect (layers), 151–154 Spray Brush tool, 195–196 Spring properties (bones), 346–348 sprites creating drawings on (ActionScript), 631–632 defined, 617 Square Wave ease preset, 321–322 stacking objects, 185–189 stage changing size of, 37–38, 48–50 overview, 23–24 positioning with X/Y coordinates, 103 selecting objects on, 61–63 changing color of, 50–51 testing on, 640–641 standalone projectors, 678, 698–699 static frames basics, 92 inserting, 101 moving, 130 static image files, publishing, 690– 697 Static Text, 218 stock media, 382 storyboards, 44–46 Straighten option Pencil tool, 67 Selection tool, 161 straight lines converting segments to curves, 166 drawing with pen tool, 69 Streaming Service (Flash video), 396 Strength property (bones), 346–348 strings (ActionScript) adding line breaks to, 589–590 appendText() method, 588 basics, 432 converting to uppercase/lowercase, 590–591 Index www.it-ebooks.info strings (ActionScript) 827 ‌s trokes creating, 586 finding substrings, 589–590 joining, 586–588 overview, 585 replacing words/characters in, 590 string literals, 473, 587 string variables, 587 substrings, 589–590 strokes basics, 53–54 changing color of, 84–86 converting to fills, 189–190 creating, 63–65 defined, 29 subpanels, Properties, 30 Subselection tool, 62, 164–165 substrings, 589–590 swapChildren() methods (ActionScript), 507–508, 510 swapping tweened objects, 307–309 Swap Symbol dialog box, 258 swatches, color, 203–204 SWF files compiled, 679–684 embedding fonts in, 582–585 swipe to next/previous code snippet, 733–737 Switcher, Workspace, 20 switch() statements (ActionScript), 438 symbols button. See button symbols exchanging between documents, 259 graphic. See graphic symbols instances of, 447 linking with bones, 326–330 movie clip. See movie clip symbols organizing into folders, 281 overview, 248–249 repurposing, 271 reusable, 673 spray painting, 195–196 Symbol Properties dialog box, 484 turning bitmaps into, 366 tweening dimension properties of, 107–109 Symmetry Brush, 197–198 Syntax checker (debugging), 652–655 T 828 tap-ready iOS apps, 745–748 targeting scenes, 532–535 target platforms, 47 target property (ActionScript), 498, 499 targets, event, 444 templates Android accelerometer, 755–760 basics, 280–284 opening prebuilt, 283–285 predesigned, 52 preloader, 678 TestFlight website, 745 testing assigning iDevices for, 729 button instances, 276 iOS apps, 743–744 mobile events with Simulator, 737 videos, 402 testing animations code for tabbed window project, 464–468 download time, 646–651 frame-by-frame, 97–98 inside web pages, 644–647 multiple animations, 644 on stage vs. Flash Player, 640–641 strategies for, 637–640 Test Movie commands, 642–644 text adding to documents, 220–222 advanced formatting of, 230 animating without ActionScript, 233–239 appendText() method, 588 applying color gradients to, 225 changing color of, 224–226 Character subpanel, 240–242 choosing size of, 220 choosing type of, 217–218 containers, 228–233 controlling with ActionScript. See strings (ActionScript) engine properties, 240 events, 471–475 fonts. See fonts formatting with ActionScript, 596–600 with external CSS files, 605–606 with HTML and CSS, 600–606 Index www.it-ebooks.info hyperlinks, 225–228 importing from Illustrator, 357 from Photoshop, 360 moving in 3-D, 238–239 overview, 215–216 position/height/width of, 222 rotating/skewing/moving in 3-D, 222–223 TextArea component, 574–575 TextEvent, 475–476 TextFormat class, 596–600 TextInput component, 576 Text menu (Flash), 798–799 Text tool, 220–221 TLF vs. Classic, 216–218 typefaces and fonts, 219 text fields autosizing, 594–595 creating with ActionScript, 591–594 formatting backgrounds/borders of, 593–594 padding properties, 594–595 positioning/sizing, 593 TEXTFIELD data type (ActionScript), 434 TextFields class, 588 TileList component, 576–577 timeline looping part of, 537–540 overview, 24–25 programming ActionScript, 413 reading, 97 starting with ActionScript, 520–522 stop and go commands, 519–520 Timeline Navigation snippets, 747 viewing/editing property keyframes in, 308–309 TimerEvent animating drawings with, 627–629 basics, 476–478 Tinted Frames option, 119 TLF (Text Layout Framework) text 3-D Position and View subpanel, 240 Advanced Character subpanel, 242–243 advanced formatting functions, 230 vs. Classic Text, 216–218 Paragraph subpanel, 243 TLFTextField class, 591 types of, 218 toggle parameter (Button component), 560 toolbars, 25–27 Tools panel, 27–29 trace() statement (ActionScript) basics, 473 debugging with, 657–661 displaying strings with, 587 reporting on Display Lists with, 488–491 tracing bitmaps, 365–366 tracking, text, 230, 240 transformation points (graphic symbols), 253 transforming objects distorting, 179–181 envelope distortions, 180–181 flipping, 177, 178 overview, 174–175 rotating, 176–177 scaling, 175–176 skewing, 178–179 three-dimensionally, 182–184 Transform tool changing bone lengths with, 338 changing object dimensions with, 109 rotating symbol instances with, 338–339 translating objects (3-D), 184 transparency (color), 199, 201, 318–321 tutorials Motion Presets, 39–41 opening files, 35 playing animations, 41 Properties panel, 36–37 resizing stage, 37–38 Zoom tool, 38–40 tweens/tweening changing to frame-by-frame animations, 310 combining with bones, 332 defined, 40 easing, 320–322 editing tween spans, 307–310 motion tweens. See motion tweens orienting tweened objects to motion paths, 304–305 swapping tweened objects, 307–309 using filters in, 316 tweens/ tweening‌ Index 829 www.it-ebooks.info typefaces and fonts when to use, 95 workflow for common tweens, 312–313 typefaces and fonts, 219 U UDID identifiers for iDevices, 729 uint (unsigned integer) data type (ActionScript), 430 Undo command, 131 ungrouped shapes, 162–164 usability testing, 640 use count (symbols), 254 User Interface components Button, 560–561 CheckBox, 561–562 ColorPicker, 562–563 ComboBox, 563–564 DataGrid, 565–567 Label, 567 List, 567–569 NumericStepper, 569–570 overview, 559–560 ProgressBar, 570–571 RadioButton, 571–572 ScrollPane, 572–573 Slider, 573–574 TextArea, 574–575 TextInput, 576 TileList, 576–577 V Vanishing Point property (3-D), 185–186 variables (ActionScript) declarations, 485 defined, 435–436 panel, 662 string, 587 vector images, 365–366 verticalScrollPolicy setting, 572 vertical text containers, 229–230 videos, Flash adding cue points to, 392–394 compressing, 385 creating, 384–385 customizing FLVPlayback component, 403–404 deployment options, 395–396 830 on web, 402 editing programs, 384 encoding, 385–390, 395 file formats, 386 importing, 384 overview, 384 reducing size of files, 394–395 resizing/cropping, 390–392 skins, 399 viewing animations, 98 customizing views in Motion Editor, 316–317 property keyframes in timeline, 308–309 rulers, 104 tools for, 28–29 View menu Flash, 784–788 Flash Player, 651 Vine Fill tool, 197 virtual machines, 411 W watch folders (video), 388 web pages publishing animations as, 684–689 testing animations in, 644–647 websites, for downloading Adobe AIR, 720 Audacity, 383 Flash Player, 681 Java Development Kit (JDK), 755 OSMF Marketplace, 707 Red5 Flash Server, 396 WWDR intermediate certificate, 726 websites, for further information accessibility, 34 Adobe Player Distribution License, 699 AIR documentation, 715 Android developers site, 752 Android forums, 752 Apple developer accounts, 726 Fiat AIR app, 710 Flash expertise/tips, 773–774 Interactive Advertising Bureau, 52 iOS developer program, 724 TestFlight, 745 video-blogging, 384 Index www.it-ebooks.info Zoom tool (tutorial) while loops, 506 while() statements (ActionScript), 438–439 Window menu (Flash), 804–809 Windows, Microsoft starting Flash in, 15–16 work area (stage), 23 workspaces, Flash menu bar, 22–23 stage, 23–24 switching between, 20–22 timeline, 24–25 WWDR intermediate certificate, 726 X Xcode, 724 XFL file format, 354 XMP metadata, 683 X/Y coordinates, 103, 611–612 Z Zoom tool (tutorial), 38–40 Index www.it-ebooks.info 831 www.it-ebooks.info www.it-ebooks.info www.it-ebooks.info www.it-ebooks.info www.it-ebooks.info


Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.6
Linearized                      : No
Author                          : Chris Grover
Create Date                     : 2012:06:11 14:46:37-04:00
Modify Date                     : 2012:07:06 03:36:41+04:00
Subject                         : 
Www It-ebooks Info              : {0C23F91E-8B0B-458C-831D-C7768D737A44}
Has XFA                         : No
XMP Toolkit                     : Adobe XMP Core 5.2-c001 63.139439, 2010/09/27-13:37:26
Metadata Date                   : 2012:07:04 22:08:29+07:00
Creator Tool                    : Adobe InDesign CS5.5 (7.5.3)
Page Image Page Number          : 1, 2
Page Image Format               : JPEG, JPEG
Page Image Width                : 256, 256
Page Image Height               : 256, 256
Page Image                      : (Binary data 6866 bytes, use -b option to extract), (Binary data 10582 bytes, use -b option to extract)
Instance ID                     : uuid:7eb27a67-9b8c-48f0-bb61-aeb3a9c251cb
Original Document ID            : adobe:docid:indd:6ba06ba9-a90a-11de-8eca-f5057340363f
Document ID                     : xmp.did:7001E9C8082068118083AA2E33C7DD40
Rendition Class                 : proof:pdf
Derived From Instance ID        : xmp.iid:6E01E9C8082068118083AA2E33C7DD40
Derived From Document ID        : xmp.did:8CE4C085ED2168118083FF1FF5819123
Derived From Original Document ID: adobe:docid:indd:6ba06ba9-a90a-11de-8eca-f5057340363f
Derived From Rendition Class    : default
History Action                  : saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved, saved
History Instance ID             : xmp.iid:F1ABA21B4FA8DE119342CEBA9C88D7C0, xmp.iid:F2ABA21B4FA8DE119342CEBA9C88D7C0, xmp.iid:ACDB5B1265A8DE118F9DD851F6402380, xmp.iid:8C54772B69A8DE119999B119FBFF69A6, xmp.iid:9054772B69A8DE119999B119FBFF69A6, xmp.iid:EFA9BC8271A8DE11B3ADE3C3BB4B68BF, xmp.iid:FF7F11740720681192B0E3400E87FED6, xmp.iid:008011740720681192B0E3400E87FED6, xmp.iid:D07BA42109206811ACAFE036222F6B95, xmp.iid:D17BA42109206811ACAFE036222F6B95, xmp.iid:D27BA42109206811ACAFE036222F6B95, xmp.iid:D37BA42109206811ACAFE036222F6B95, xmp.iid:D47BA42109206811ACAFE036222F6B95, xmp.iid:D57BA42109206811ACAFE036222F6B95, xmp.iid:D67BA42109206811ACAFE036222F6B95, xmp.iid:DC7DC6610D206811ACAFE036222F6B95, xmp.iid:DD7DC6610D206811ACAFE036222F6B95, xmp.iid:DE7DC6610D206811ACAFE036222F6B95, xmp.iid:DF7DC6610D206811ACAFE036222F6B95, xmp.iid:E07DC6610D206811ACAFE036222F6B95, xmp.iid:E17DC6610D206811ACAFE036222F6B95, xmp.iid:E27DC6610D206811ACAFE036222F6B95, xmp.iid:E37DC6610D206811ACAFE036222F6B95, xmp.iid:E47DC6610D206811ACAFE036222F6B95, xmp.iid:E57DC6610D206811ACAFE036222F6B95, xmp.iid:E67DC6610D206811ACAFE036222F6B95, xmp.iid:EC8F0F5612206811ACAFE036222F6B95, xmp.iid:ED8F0F5612206811ACAFE036222F6B95, xmp.iid:EE8F0F5612206811ACAFE036222F6B95, xmp.iid:EF8F0F5612206811ACAFE036222F6B95, xmp.iid:F08F0F5612206811ACAFE036222F6B95, xmp.iid:F18F0F5612206811ACAFE036222F6B95, xmp.iid:F28F0F5612206811ACAFE036222F6B95, xmp.iid:F38F0F5612206811ACAFE036222F6B95, xmp.iid:F48F0F5612206811ACAFE036222F6B95, xmp.iid:F58F0F5612206811ACAFE036222F6B95, xmp.iid:F68F0F5612206811ACAFE036222F6B95, xmp.iid:D692D77213206811ACAFE036222F6B95, xmp.iid:D792D77213206811ACAFE036222F6B95, xmp.iid:D892D77213206811ACAFE036222F6B95, xmp.iid:D992D77213206811ACAFE036222F6B95, xmp.iid:DA92D77213206811ACAFE036222F6B95, xmp.iid:DB92D77213206811ACAFE036222F6B95, xmp.iid:DC92D77213206811ACAFE036222F6B95, xmp.iid:DD92D77213206811ACAFE036222F6B95, xmp.iid:DE92D77213206811ACAFE036222F6B95, xmp.iid:DF92D77213206811ACAFE036222F6B95, xmp.iid:B25B29EE14206811ACAFE036222F6B95, xmp.iid:B35B29EE14206811ACAFE036222F6B95, xmp.iid:B45B29EE14206811ACAFE036222F6B95, xmp.iid:B55B29EE14206811ACAFE036222F6B95, xmp.iid:B65B29EE14206811ACAFE036222F6B95, xmp.iid:B75B29EE14206811ACAFE036222F6B95, xmp.iid:B85B29EE14206811ACAFE036222F6B95, xmp.iid:B95B29EE14206811ACAFE036222F6B95, xmp.iid:BA5B29EE14206811ACAFE036222F6B95, xmp.iid:BB5B29EE14206811ACAFE036222F6B95, xmp.iid:BC5B29EE14206811ACAFE036222F6B95, xmp.iid:18A4211916206811ACAFE036222F6B95, xmp.iid:19A4211916206811ACAFE036222F6B95, xmp.iid:1AA4211916206811ACAFE036222F6B95, xmp.iid:1BA4211916206811ACAFE036222F6B95, xmp.iid:1CA4211916206811ACAFE036222F6B95, xmp.iid:1DA4211916206811ACAFE036222F6B95, xmp.iid:1EA4211916206811ACAFE036222F6B95, xmp.iid:1FA4211916206811ACAFE036222F6B95, xmp.iid:20A4211916206811ACAFE036222F6B95, xmp.iid:21A4211916206811ACAFE036222F6B95, xmp.iid:22A4211916206811ACAFE036222F6B95, xmp.iid:5EF1A65E17206811ACAFE036222F6B95, xmp.iid:5FF1A65E17206811ACAFE036222F6B95, xmp.iid:60F1A65E17206811ACAFE036222F6B95, xmp.iid:61F1A65E17206811ACAFE036222F6B95, xmp.iid:62F1A65E17206811ACAFE036222F6B95, xmp.iid:63F1A65E17206811ACAFE036222F6B95, xmp.iid:64F1A65E17206811ACAFE036222F6B95, xmp.iid:65F1A65E17206811ACAFE036222F6B95, xmp.iid:66F1A65E17206811ACAFE036222F6B95, xmp.iid:67F1A65E17206811ACAFE036222F6B95, xmp.iid:68F1A65E17206811ACAFE036222F6B95, xmp.iid:3A49B24B18206811ACAFE036222F6B95, xmp.iid:3B49B24B18206811ACAFE036222F6B95, xmp.iid:3C49B24B18206811ACAFE036222F6B95, xmp.iid:3D49B24B18206811ACAFE036222F6B95, xmp.iid:3E49B24B18206811ACAFE036222F6B95, xmp.iid:3F49B24B18206811ACAFE036222F6B95, xmp.iid:4049B24B18206811ACAFE036222F6B95, xmp.iid:4149B24B18206811ACAFE036222F6B95, xmp.iid:4249B24B18206811ACAFE036222F6B95, xmp.iid:4349B24B18206811ACAFE036222F6B95, xmp.iid:4449B24B18206811ACAFE036222F6B95, xmp.iid:1AEF2D9E19206811ACAFE036222F6B95, xmp.iid:1BEF2D9E19206811ACAFE036222F6B95, xmp.iid:1CEF2D9E19206811ACAFE036222F6B95, xmp.iid:1DEF2D9E19206811ACAFE036222F6B95, xmp.iid:1EEF2D9E19206811ACAFE036222F6B95, xmp.iid:1FEF2D9E19206811ACAFE036222F6B95, xmp.iid:20EF2D9E19206811ACAFE036222F6B95, xmp.iid:21EF2D9E19206811ACAFE036222F6B95, xmp.iid:7C4E10031E206811ACAFE036222F6B95, xmp.iid:7D4E10031E206811ACAFE036222F6B95, xmp.iid:BCC0B77382206811ACAFE036222F6B95, xmp.iid:03801174072068119109AB1FA2A55FAC, xmp.iid:04801174072068119109AB1FA2A55FAC, xmp.iid:8349B3275F2068119109AB1FA2A55FAC, xmp.iid:E3A3DCAD732068119109AB1FA2A55FAC, xmp.iid:E4A3DCAD732068119109AB1FA2A55FAC, xmp.iid:91D4B5B37B2068119109AB1FA2A55FAC, xmp.iid:92D4B5B37B2068119109AB1FA2A55FAC, xmp.iid:93D4B5B37B2068119109AB1FA2A55FAC, xmp.iid:94D4B5B37B2068119109AB1FA2A55FAC, xmp.iid:74A27FD17C2068119109AB1FA2A55FAC, xmp.iid:75A27FD17C2068119109AB1FA2A55FAC, xmp.iid:76A27FD17C2068119109AB1FA2A55FAC, xmp.iid:77A27FD17C2068119109AB1FA2A55FAC, xmp.iid:5BFD08D5822068119109AB1FA2A55FAC, xmp.iid:A630CEDA842068119109AB1FA2A55FAC, xmp.iid:AD30CEDA842068119109AB1FA2A55FAC, xmp.iid:F4B3634C0E20681194579043E0B56FF7, xmp.iid:F5B3634C0E20681194579043E0B56FF7, xmp.iid:F6B3634C0E20681194579043E0B56FF7, xmp.iid:FF7F117407206811A961E0E657ECFFC2, xmp.iid:0080117407206811A961E0E657ECFFC2, xmp.iid:8533F74531206811A961E0E657ECFFC2, xmp.iid:8633F74531206811A961E0E657ECFFC2, xmp.iid:E6A9AF2C33206811A961E0E657ECFFC2, xmp.iid:E7A9AF2C33206811A961E0E657ECFFC2, xmp.iid:E8A9AF2C33206811A961E0E657ECFFC2, xmp.iid:E9A9AF2C33206811A961E0E657ECFFC2, xmp.iid:FF7F11740720681192B0D754B380B5CF, xmp.iid:008011740720681192B0D754B380B5CF, xmp.iid:F7F06BBE102068118C14F8C4BAC1777B, xmp.iid:F8F06BBE102068118C14F8C4BAC1777B, xmp.iid:24A91D83122068118C14F8C4BAC1777B, xmp.iid:B4E4E256272068118C14F8C4BAC1777B, xmp.iid:BF99C0DD282068118C14F8C4BAC1777B, xmp.iid:6471CC072C2068118C14F8C4BAC1777B, xmp.iid:53EA90AF322068118C14F8C4BAC1777B, xmp.iid:9001393D332068118C14F8C4BAC1777B, xmp.iid:F3CF8E563B2068118C14F8C4BAC1777B, xmp.iid:B7317F4A3D2068118C14F8C4BAC1777B, xmp.iid:6449ACDB3F2068118C14F8C4BAC1777B, xmp.iid:B5E6F7EC3A2068118A6DA7063C8FA9A8, xmp.iid:35AF4C353E2068118A6DA7063C8FA9A8, xmp.iid:B4A8EE98402068118A6DA7063C8FA9A8, xmp.iid:95D7C4BC432068118A6DA7063C8FA9A8, xmp.iid:2A361936442068118A6DA7063C8FA9A8, xmp.iid:D885DB96482068118A6DA7063C8FA9A8, xmp.iid:50BB1429282068118A6DDE8C84D46BF7, xmp.iid:92E82288122068118A6DFDB0659E975D, xmp.iid:7519AB7F2B2068118A6DA9AFACC077BC, xmp.iid:66818A863D2068118A6DA9AFACC077BC, xmp.iid:A17CF903402068118A6DA9AFACC077BC, xmp.iid:DB18E05D442068118A6DA9AFACC077BC, xmp.iid:BF831F74072068118C14A81E151F37D7, xmp.iid:382E8CD40F2068118C14A81E151F37D7, xmp.iid:D9EDB623102068118C14A81E151F37D7, xmp.iid:778641011E2068118C14A81E151F37D7, xmp.iid:788641011E2068118C14A81E151F37D7, xmp.iid:1FBA3AD5232068118C14A81E151F37D7, xmp.iid:0CA03E84282068118C14A81E151F37D7, xmp.iid:DA41E8A3282068118C14A81E151F37D7, xmp.iid:C3821774072068118A6DB824B5764A87, xmp.iid:5C3A9FB50E2068118A6DB824B5764A87, xmp.iid:0DDF1674072068118A6DD071FB53B332, xmp.iid:8A1B3B95102068118A6DD071FB53B332, xmp.iid:B38C925A112068118A6DD071FB53B332, xmp.iid:01B18885202068118A6DD071FB53B332, xmp.iid:D6224E9F202068118A6DD071FB53B332, xmp.iid:ECCE1F7F262068118A6DD071FB53B332, xmp.iid:445F7EE6382068118A6DD071FB53B332, xmp.iid:75E04874072068118C14E5F208E15BBD, xmp.iid:6FA73274072068118C14ACCF53905FC3, xmp.iid:393F53C8182068118C14E02887E2478E, xmp.iid:555C85A81A2068118C14E02887E2478E, xmp.iid:F29DE5201B2068118C14E02887E2478E, xmp.iid:9154DD481C2068118C14E02887E2478E, xmp.iid:58ED91631D2068118C14E02887E2478E, xmp.iid:B00F07D1262068118C14E02887E2478E, xmp.iid:6DD42A74072068118A6DEB37D4ED2DF3, xmp.iid:A6C5C900262068118C149403DCAF1475, xmp.iid:FF98DB0B2B2068118C149403DCAF1475, xmp.iid:0099DB0B2B2068118C149403DCAF1475, xmp.iid:0199DB0B2B2068118C149403DCAF1475, xmp.iid:0299DB0B2B2068118C149403DCAF1475, xmp.iid:FF592E401E2068118A6DFA7415A53898, xmp.iid:DF5A879F112068118A6D9AAF7B55587C, xmp.iid:01801174072068118A6DAB4086F83A73, xmp.iid:7E9F3174072068118A6DAB4086F83A73, xmp.iid:6FB41674072068118C14ABDF2699A028, xmp.iid:63B11B74072068118A6DB42DEFCD36C9, xmp.iid:45C6A54957206811808390E8A55A4716, xmp.iid:46C6A54957206811808390E8A55A4716, xmp.iid:C6212901A4206811808390E8A55A4716, xmp.iid:CB47A4FFC7206811808390E8A55A4716, xmp.iid:B58E8771182068118083891C04CA30A5, xmp.iid:B68E8771182068118083891C04CA30A5, xmp.iid:90141C65562168118C14D355F4716D92, xmp.iid:3485D0E4B82168118C14D355F4716D92, xmp.iid:3585D0E4B82168118C14D355F4716D92, xmp.iid:01801174072068118C14E9A87426D803, xmp.iid:02801174072068118C14E9A87426D803, xmp.iid:03801174072068118C14E9A87426D803, xmp.iid:04801174072068118C14E9A87426D803, xmp.iid:ED7F117407206811871F84D4755A8F9E, xmp.iid:EE7F117407206811871F84D4755A8F9E, xmp.iid:F07F117407206811871F84D4755A8F9E, xmp.iid:F47F117407206811871F84D4755A8F9E, xmp.iid:F67F117407206811871F84D4755A8F9E, xmp.iid:D9EBDF4C49206811871F84D4755A8F9E, xmp.iid:DDEBDF4C49206811871F84D4755A8F9E, xmp.iid:DEEBDF4C49206811871F84D4755A8F9E, xmp.iid:E1EBDF4C49206811871F84D4755A8F9E, xmp.iid:E2EBDF4C49206811871F84D4755A8F9E, xmp.iid:6DBA65004E206811871F84D4755A8F9E, xmp.iid:6FBA65004E206811871F84D4755A8F9E, xmp.iid:70BA65004E206811871F84D4755A8F9E, xmp.iid:71BA65004E206811871F84D4755A8F9E, xmp.iid:72BA65004E206811871F84D4755A8F9E, xmp.iid:73BA65004E206811871F84D4755A8F9E, xmp.iid:74BA65004E206811871F84D4755A8F9E, xmp.iid:75BA65004E206811871F84D4755A8F9E, xmp.iid:CE9B3B5492206811871F84D4755A8F9E, xmp.iid:D29B3B5492206811871F84D4755A8F9E, xmp.iid:D69B3B5492206811871F84D4755A8F9E, xmp.iid:67EAD78E93206811871F84D4755A8F9E, xmp.iid:6BEAD78E93206811871F84D4755A8F9E, xmp.iid:CEAF35BDAA206811871F84D4755A8F9E, xmp.iid:D2AF35BDAA206811871F84D4755A8F9E, xmp.iid:D7AF35BDAA206811871F84D4755A8F9E, xmp.iid:D8AF35BDAA206811871F84D4755A8F9E, xmp.iid:81AB9298BC206811871F84D4755A8F9E, xmp.iid:85AB9298BC206811871F84D4755A8F9E, xmp.iid:86AB9298BC206811871F84D4755A8F9E, xmp.iid:87AB9298BC206811871F84D4755A8F9E, xmp.iid:88AB9298BC206811871F84D4755A8F9E, xmp.iid:3F28E407D2206811871F84D4755A8F9E, xmp.iid:4028E407D2206811871F84D4755A8F9E, xmp.iid:4128E407D2206811871F84D4755A8F9E, xmp.iid:4228E407D2206811871F84D4755A8F9E, xmp.iid:4328E407D2206811871F84D4755A8F9E, xmp.iid:4428E407D2206811871F84D4755A8F9E, xmp.iid:B8775B9DD9206811871F84D4755A8F9E, xmp.iid:F77F1174072068118083FF1FF5819123, xmp.iid:F87F1174072068118083FF1FF5819123, xmp.iid:F97F1174072068118083FF1FF5819123, xmp.iid:FA7F1174072068118083FF1FF5819123, xmp.iid:FB7F1174072068118083FF1FF5819123, xmp.iid:FC7F1174072068118083FF1FF5819123, xmp.iid:4E4FDABA252068118083FF1FF5819123, xmp.iid:534FDABA252068118083FF1FF5819123, xmp.iid:2F66FDA86F2068118083FF1FF5819123, xmp.iid:3466FDA86F2068118083FF1FF5819123, xmp.iid:3566FDA86F2068118083FF1FF5819123, xmp.iid:4BF260C5BD2068118083FF1FF5819123, xmp.iid:4EF260C5BD2068118083FF1FF5819123, xmp.iid:5A88AF4BE92068118083FF1FF5819123, xmp.iid:5C88AF4BE92068118083FF1FF5819123, xmp.iid:5E88AF4BE92068118083FF1FF5819123, xmp.iid:E7A471CA172168118083FF1FF5819123, xmp.iid:E9A471CA172168118083FF1FF5819123, xmp.iid:5431F50B2A2168118083FF1FF5819123, xmp.iid:5731F50B2A2168118083FF1FF5819123, xmp.iid:5A31F50B2A2168118083FF1FF5819123, xmp.iid:C7AC429E5D2168118083FF1FF5819123, xmp.iid:C9AC429E5D2168118083FF1FF5819123, xmp.iid:CAAC429E5D2168118083FF1FF5819123, xmp.iid:CFAC429E5D2168118083FF1FF5819123, xmp.iid:9B9AEFDD902168118083FF1FF5819123, xmp.iid:9E9AEFDD902168118083FF1FF5819123, xmp.iid:A09AEFDD902168118083FF1FF5819123, xmp.iid:A19AEFDD902168118083FF1FF5819123, xmp.iid:A29AEFDD902168118083FF1FF5819123, xmp.iid:A39AEFDD902168118083FF1FF5819123, xmp.iid:A49AEFDD902168118083FF1FF5819123, xmp.iid:1C9B35C1952168118083FF1FF5819123, xmp.iid:1E9B35C1952168118083FF1FF5819123, xmp.iid:1F9B35C1952168118083FF1FF5819123, xmp.iid:126B3B17D42168118083FF1FF5819123, xmp.iid:136B3B17D42168118083FF1FF5819123, xmp.iid:196B3B17D42168118083FF1FF5819123, xmp.iid:3CBF9975DD2168118083FF1FF5819123, xmp.iid:3DBF9975DD2168118083FF1FF5819123, xmp.iid:40BF9975DD2168118083FF1FF5819123, xmp.iid:41BF9975DD2168118083FF1FF5819123, xmp.iid:7425C048E42168118083FF1FF5819123, xmp.iid:85E4C085ED2168118083FF1FF5819123, xmp.iid:86E4C085ED2168118083FF1FF5819123, xmp.iid:8AE4C085ED2168118083FF1FF5819123, xmp.iid:8CE4C085ED2168118083FF1FF5819123, xmp.iid:20989F79EF2168118083FF1FF5819123, xmp.iid:22989F79EF2168118083FF1FF5819123, xmp.iid:23989F79EF2168118083FF1FF5819123, xmp.iid:703AE632F22168118083FF1FF5819123, xmp.iid:723AE632F22168118083FF1FF5819123, xmp.iid:733AE632F22168118083FF1FF5819123, xmp.iid:743AE632F22168118083FF1FF5819123, xmp.iid:753AE632F22168118083FF1FF5819123, xmp.iid:6FC6CE79F32168118083FF1FF5819123, xmp.iid:36ED81940D2068118C14C3E01125A3F0, xmp.iid:43C583F70D2068118C14C3E01125A3F0, xmp.iid:C914FD23F72068118C14A00FE9F38A38, xmp.iid:CD14FD23F72068118C14A00FE9F38A38, xmp.iid:305D0BAFFF2068118C14A00FE9F38A38, xmp.iid:EE565F07002168118C14A00FE9F38A38, xmp.iid:F4565F07002168118C14A00FE9F38A38, xmp.iid:30B568A0002168118C14A00FE9F38A38, xmp.iid:31B568A0002168118C14A00FE9F38A38, xmp.iid:F3AB6232042168118C14A00FE9F38A38, xmp.iid:A70A053D0D2168118C14A00FE9F38A38, xmp.iid:D085F75D262168118C14A00FE9F38A38, xmp.iid:31B35DCC262168118C14A00FE9F38A38, xmp.iid:4A398428272168118C14A00FE9F38A38, xmp.iid:E39205393F2168118C14A00FE9F38A38, xmp.iid:EA9205393F2168118C14A00FE9F38A38, xmp.iid:EB9205393F2168118C14A00FE9F38A38, xmp.iid:17264C02412168118C14A00FE9F38A38, xmp.iid:18264C02412168118C14A00FE9F38A38, xmp.iid:9A890057412168118C14A00FE9F38A38, xmp.iid:08801174072068118C14F45E04BB16F8, xmp.iid:06801174072068118083939C1E512B7E, xmp.iid:FC7F1174072068118083A245DAFE29DF, xmp.iid:C8839B84072068118083A245DAFE29DF, xmp.iid:CD839B84072068118083A245DAFE29DF, xmp.iid:9BEE56B2072068118083A245DAFE29DF, xmp.iid:9DEE56B2072068118083A245DAFE29DF, xmp.iid:FE7F1174072068118083DFE76965C82C, xmp.iid:F87F1174072068118A6DF2B52F8DC68E, xmp.iid:02801174072068118C1490DD4737A8A6, xmp.iid:03801174072068118C1490DD4737A8A6, xmp.iid:FA7F1174072068118C14A8C6EF296177, xmp.iid:FE7F1174072068118C14A8C6EF296177, xmp.iid:FB7F1174072068118083AA2E33C7DD40, xmp.iid:6E01E9C8082068118083AA2E33C7DD40, xmp.iid:7001E9C8082068118083AA2E33C7DD40, xmp.iid:4CE0808C0E226811808383FD557A042B, xmp.iid:4DE0808C0E226811808383FD557A042B, xmp.iid:76B57D712F95E1118A69DFA547F0E6DB, xmp.iid:77B57D712F95E1118A69DFA547F0E6DB, xmp.iid:78B57D712F95E1118A69DFA547F0E6DB, xmp.iid:72FD10C03495E1118A69DFA547F0E6DB, xmp.iid:73FD10C03495E1118A69DFA547F0E6DB, xmp.iid:74FD10C03495E1118A69DFA547F0E6DB, xmp.iid:76FD10C03495E1118A69DFA547F0E6DB, xmp.iid:775D478AD399E1119E9C8AE8A105B389, xmp.iid:FFCF348E092068118C14D5A763744F7E, xmp.iid:884E2828112068118C14D5A763744F7E, xmp.iid:8652A23F112068118C14D5A763744F7E, xmp.iid:70ED348C112068118C14D5A763744F7E, xmp.iid:FB7F1174072068118083B9F5AF30F6EB, xmp.iid:77EBDF160A2068118083B9F5AF30F6EB, xmp.iid:BB64DAE80A2068118083B9F5AF30F6EB, xmp.iid:1FE820B30D2068118083B9F5AF30F6EB, xmp.iid:39148CBE0D2068118083B9F5AF30F6EB, xmp.iid:CBE6BBF90D2068118083B9F5AF30F6EB, xmp.iid:4EFE1E150E2068118083B9F5AF30F6EB, xmp.iid:5B0B2F240E2068118083B9F5AF30F6EB, xmp.iid:9F4BD7650F2068118083B9F5AF30F6EB, xmp.iid:8A21E3942B9EE111AD0E8218CD17856A, xmp.iid:5BF0295BBEA0E111AD0E8218CD17856A, xmp.iid:151FE825D9A1E111B1A4DE5D2EDB4386, xmp.iid:436785E63EA2E111B1A4DE5D2EDB4386, xmp.iid:158EFA996EA3E111A3C5B9954A6DA5FD, xmp.iid:EDB3A88F5A2068118083AB8D15DE7D71, xmp.iid:763D85B8272068118083ACDFB8396A46, xmp.iid:00D8C24E282068118083ACDFB8396A46, xmp.iid:D4EFF4A7282068118083ACDFB8396A46, xmp.iid:D9EFF4A7282068118083ACDFB8396A46, xmp.iid:EDA48C5305A4E111B5C9C1AE23CAA591, xmp.iid:31FAB7F407A4E111B5C9C1AE23CAA591, xmp.iid:36FAB7F407A4E111B5C9C1AE23CAA591, xmp.iid:DA56943408A4E111B5C9C1AE23CAA591, xmp.iid:DF56943408A4E111B5C9C1AE23CAA591, xmp.iid:67ECF57708A4E111B5C9C1AE23CAA591, xmp.iid:6CECF57708A4E111B5C9C1AE23CAA591, xmp.iid:062DE5F208A4E111B5C9C1AE23CAA591, xmp.iid:0B2DE5F208A4E111B5C9C1AE23CAA591, xmp.iid:F963EF1C09A4E111B5C9C1AE23CAA591, xmp.iid:FE63EF1C09A4E111B5C9C1AE23CAA591, xmp.iid:0364EF1C09A4E111B5C9C1AE23CAA591, xmp.iid:79FA052F0AA4E111B5C9C1AE23CAA591, xmp.iid:7EFA052F0AA4E111B5C9C1AE23CAA591, xmp.iid:D467E1F20AA4E111B5C9C1AE23CAA591, xmp.iid:D967E1F20AA4E111B5C9C1AE23CAA591, xmp.iid:FFA291260BA4E111B5C9C1AE23CAA591, xmp.iid:04A391260BA4E111B5C9C1AE23CAA591, xmp.iid:FD820E5515A4E111B5C9C1AE23CAA591, xmp.iid:8750978F01A5E111B5C9C1AE23CAA591, xmp.iid:FD7F1174072068118083E1DF09B9BB10, xmp.iid:05801174072068118083E65AB1DFC4EF, xmp.iid:85E68382072068118A6D9A91BDCA0418, xmp.iid:A5C73C65102068118A6D9A91BDCA0418, xmp.iid:ABC73C65102068118A6D9A91BDCA0418, xmp.iid:C1CD6DEA0B2068118A6DF8EF4D5A7DB8, xmp.iid:704D6348B62068118A6DF8EF4D5A7DB8, xmp.iid:BBDC2E901A2168118A6DF8EF4D5A7DB8, xmp.iid:FE7F1174072068118083EA73804450A4, xmp.iid:FAF0451C082068118083EA73804450A4, xmp.iid:DBE3F2290D2068118083EA73804450A4, xmp.iid:DCE3F2290D2068118083EA73804450A4, xmp.iid:E7ED0899162268118083854B695B7379
History When                    : 2009:09:23 08:40:58-06:00, 2009:09:23 08:41-06:00, 2009:09:23 11:18:12-06:00, 2009:09:23 11:47:32-06:00, 2009:09:23 12:30:14-06:00, 2009:09:23 13:17-06:00, 2009:09:24 12:39:29-04:00, 2009:09:24 12:39:29-04:00, 2009:09:26 12:26:01-04:00, 2009:09:26 12:26:46-04:00, 2009:09:26 12:29:34-04:00, 2009:09:26 12:29:44-04:00, 2009:09:26 12:31:51-04:00, 2009:09:26 12:32:23-04:00, 2009:09:26 12:33:30-04:00, 2009:09:26 12:33:58-04:00, 2009:09:26 12:45:01-04:00, 2009:09:26 12:45:26-04:00, 2009:09:26 12:46:42-04:00, 2009:09:26 12:52:12-04:00, 2009:09:26 12:56:41-04:00, 2009:09:26 12:56:47-04:00, 2009:09:26 12:59:04-04:00, 2009:09:26 12:59:16-04:00, 2009:09:26 12:59:24-04:00, 2009:09:26 13:02:16-04:00, 2009:09:26 13:09:26-04:00, 2009:09:26 13:09:47-04:00, 2009:09:26 13:09:59-04:00, 2009:09:26 13:10:27-04:00, 2009:09:26 13:10:46-04:00, 2009:09:26 13:11:55-04:00, 2009:09:26 13:12:02-04:00, 2009:09:26 13:12:54-04:00, 2009:09:26 13:14:27-04:00, 2009:09:26 13:14:38-04:00, 2009:09:26 13:15:09-04:00, 2009:09:26 13:17:24-04:00, 2009:09:26 13:17:43-04:00, 2009:09:26 13:17:45-04:00, 2009:09:26 13:17:58-04:00, 2009:09:26 13:21:29-04:00, 2009:09:26 13:21:31-04:00, 2009:09:26 13:22:17-04:00, 2009:09:26 13:25:09-04:00, 2009:09:26 13:26:10-04:00, 2009:09:26 13:26:38-04:00, 2009:09:26 13:28-04:00, 2009:09:26 13:29:20-04:00, 2009:09:26 13:29:44-04:00, 2009:09:26 13:32:23-04:00, 2009:09:26 13:33:15-04:00, 2009:09:26 13:33:25-04:00, 2009:09:26 13:34:06-04:00, 2009:09:26 13:34:55-04:00, 2009:09:26 13:35:43-04:00, 2009:09:26 13:36:03-04:00, 2009:09:26 13:36:09-04:00, 2009:09:26 13:36:22-04:00, 2009:09:26 13:36:26-04:00, 2009:09:26 13:37:19-04:00, 2009:09:26 13:37:24-04:00, 2009:09:26 13:38:03-04:00, 2009:09:26 13:40:23-04:00, 2009:09:26 13:41:09-04:00, 2009:09:26 13:41:10-04:00, 2009:09:26 13:41:55-04:00, 2009:09:26 13:44:15-04:00, 2009:09:26 13:44:37-04:00, 2009:09:26 13:45:28-04:00, 2009:09:26 13:46:47-04:00, 2009:09:26 13:47:28-04:00, 2009:09:26 13:47:51-04:00, 2009:09:26 13:48:16-04:00, 2009:09:26 13:48:27-04:00, 2009:09:26 13:48:43-04:00, 2009:09:26 13:48:57-04:00, 2009:09:26 13:49:01-04:00, 2009:09:26 13:50:52-04:00, 2009:09:26 13:51:21-04:00, 2009:09:26 13:52:06-04:00, 2009:09:26 13:52:24-04:00, 2009:09:26 13:52:54-04:00, 2009:09:26 13:53:29-04:00, 2009:09:26 13:53:38-04:00, 2009:09:26 13:53:48-04:00, 2009:09:26 13:54:18-04:00, 2009:09:26 13:54:32-04:00, 2009:09:26 13:55-04:00, 2009:09:26 13:55:51-04:00, 2009:09:26 13:56:03-04:00, 2009:09:26 14:01:33-04:00, 2009:09:26 14:01:40-04:00, 2009:09:26 14:02:03-04:00, 2009:09:26 14:02:18-04:00, 2009:09:26 14:02:40-04:00, 2009:09:26 14:02:56-04:00, 2009:09:26 14:03:07-04:00, 2009:09:26 14:03:17-04:00, 2009:09:26 14:43:53-04:00, 2009:09:26 14:43:57-04:00, 2009:09:27 02:32:02-04:00, 2009:09:27 13:15:43-04:00, 2009:09:27 13:15:56-04:00, 2009:09:27 23:35:59-04:00, 2009:09:28 01:00:01-04:00, 2009:09:28 01:00:10-04:00, 2009:09:28 01:44:13-04:00, 2009:09:28 01:45:13-04:00, 2009:09:28 01:45:28-04:00, 2009:09:28 01:45:34-04:00, 2009:09:28 01:47:14-04:00, 2009:09:28 01:48:39-04:00, 2009:09:28 01:50:40-04:00, 2009:09:28 01:52:07-04:00, 2009:09:28 02:43:52-04:00, 2009:09:28 02:45:45-04:00, 2009:09:28 02:57:47-04:00, 2009:09:28 12:37:46-04:00, 2009:09:28 12:38:12-04:00, 2009:09:28 12:39:03-04:00, 2009:09:28 14:19:24-04:00, 2009:09:28 14:19:24-04:00, 2009:09:28 18:08:14-04:00, 2009:09:28 18:08:14-04:00, 2009:09:28 18:45:59-04:00, 2009:09:28 18:45:59-04:00, 2009:09:28 18:46:42-04:00, 2009:09:28 18:46:42-04:00, 2009:09:29 08:09:51-04:00, 2009:09:29 08:09:51-04:00, 2011:06:13 11:58:37-07:00, 2011:06:13 11:58:37-07:00, 2011:06:13 12:11:16-07:00, 2011:06:13 14:40:22-07:00, 2011:06:13 14:51:18-07:00, 2011:06:13 15:13:57-07:00, 2011:06:13 16:01:35-07:00, 2011:06:13 16:05:33-07:00, 2011:06:13 17:03:32-07:00, 2011:06:13 17:17:30-07:00, 2011:06:13 17:35:53-07:00, 2011:06:14 15:42:21-07:00, 2011:06:14 16:05:51-07:00, 2011:06:14 16:22:57-07:00, 2011:06:14 16:45:26-07:00, 2011:06:14 16:48:49-07:00, 2011:06:14 17:20:10-07:00, 2011:06:16 16:53:51-07:00, 2011:06:17 15:32:21-07:00, 2011:06:20 13:57:48-07:00, 2011:06:20 16:06:51-07:00, 2011:06:20 16:24:40-07:00, 2011:06:20 16:55:49-07:00, 2011:06:22 11:19:13-07:00, 2011:06:22 12:19:11-07:00, 2011:06:22 12:21:24-07:00, 2011:06:22 14:00:40-07:00, 2011:06:22 14:42:23-07:00, 2011:06:22 14:42:23-07:00, 2011:06:22 15:15:55-07:00, 2011:06:22 15:16:48-07:00, 2011:06:22 16:23:49-07:00, 2011:06:22 17:15:45-07:00, 2011:06:23 10:47:12-07:00, 2011:06:23 11:52:33-07:00, 2011:06:23 11:58:04-07:00, 2011:06:23 13:46:39-07:00, 2011:06:23 13:47:22-07:00, 2011:06:23 15:06:02-07:00, 2011:06:23 16:41:10-07:00, 2011:06:24 13:45:43-07:00, 2011:06:24 14:03:51-07:00, 2011:06:30 14:48:21-07:00, 2011:06:30 15:01:47-07:00, 2011:06:30 15:05:09-07:00, 2011:06:30 15:13:25-07:00, 2011:06:30 15:21:20-07:00, 2011:06:30 16:28:49-07:00, 2011:07:05 17:12:34-07:00, 2011:07:19 14:52:28-07:00, 2011:07:19 14:52:28-07:00, 2011:07:19 14:53:02-07:00, 2011:07:19 14:53:02-07:00, 2011:07:19 14:56:31-07:00, 2011:07:21 17:17:30-07:00, 2011:07:22 12:10:49-07:00, 2011:08:04 17:25:26-07:00, 2011:08:04 17:25:26-07:00, 2011:08:11 11:26:23-07:00, 2011:08:25 14:32:38-07:00, 2011:09:12 21:05:28-04:00, 2011:09:12 21:05:28-04:00, 2011:09:13 12:42:20-04:00, 2011:09:13 17:00-04:00, 2011:09:14 16:04:51-04:00, 2011:09:14 16:04:51-04:00, 2011:09:19 19:16-04:00, 2011:09:20 17:11:58-04:00, 2011:09:20 17:11:58-04:00, 2011:09:20 17:47:19-04:00, 2011:09:20 17:50:02-04:00, 2011:09:20 18:22:40-04:00, 2011:09:20 18:33:12-04:00, 2011:09:21 16:06:07-04:00, 2011:09:21 16:16:33-04:00, 2011:09:22 13:23:29-04:00, 2011:09:22 16:07:47-04:00, 2011:09:22 16:13:14-04:00, 2011:09:22 16:33:48-04:00, 2011:09:22 17:03:12-04:00, 2011:09:22 17:03:12-04:00, 2011:09:22 17:04:33-04:00, 2011:09:22 17:04:33-04:00, 2011:09:22 17:07:27-04:00, 2011:09:22 17:09:25-04:00, 2011:09:22 17:09:25-04:00, 2011:09:22 17:14:57-04:00, 2011:09:22 17:27:32-04:00, 2011:09:22 17:52:42-04:00, 2011:09:22 18:12:26-04:00, 2011:09:22 23:57:16-04:00, 2011:09:23 08:03:30-04:00, 2011:09:23 08:10:01-04:00, 2011:09:23 08:10:28-04:00, 2011:09:23 08:12:18-04:00, 2011:09:23 13:03:37-04:00, 2011:09:23 13:17:16-04:00, 2011:09:23 14:44:05-04:00, 2011:09:23 14:55:07-04:00, 2011:09:23 14:55:07-04:00, 2011:09:23 15:25:06-04:00, 2011:09:23 16:07:35-04:00, 2011:09:23 21:59:20-04:00, 2011:09:23 21:59:20-04:00, 2011:09:23 22:19:01-04:00, 2011:09:23 22:41:52-04:00, 2011:09:23 23:19:21-04:00, 2011:09:23 23:29:47-04:00, 2011:09:23 23:29:47-04:00, 2011:09:23 23:30:32-04:00, 2011:09:23 23:34:14-04:00, 2011:09:23 23:36:09-04:00, 2011:09:26 12:01:58-04:00, 2011:09:26 15:03:57-04:00, 2011:09:26 15:06:22-04:00, 2011:09:26 15:15:51-04:00, 2011:09:26 15:16:08-04:00, 2011:09:26 15:23:17-04:00, 2011:09:26 15:38:37-04:00, 2011:09:26 15:41:51-04:00, 2011:09:27 12:45:16-04:00, 2011:09:27 12:45:16-04:00, 2011:09:27 12:46:50-04:00, 2011:09:27 17:02:29-04:00, 2011:09:27 17:23:18-04:00, 2011:09:27 22:17:50-04:00, 2011:09:27 22:28:44-04:00, 2011:09:28 12:56:30-04:00, 2011:09:28 16:03:15-04:00, 2011:09:28 16:10:57-04:00, 2011:09:29 10:42:28-04:00, 2011:09:29 10:59:33-04:00, 2011:09:29 11:07:01-04:00, 2011:09:29 11:21:20-04:00, 2011:09:29 11:36:27-04:00, 2011:09:29 12:13:24-04:00, 2011:09:29 12:15:19-04:00, 2011:09:29 17:28:12-04:00, 2011:09:29 17:32:08-04:00, 2011:09:29 17:33:08-04:00, 2011:09:29 17:33:15-04:00, 2011:09:29 17:33:15-04:00, 2011:09:29 17:33:32-04:00, 2011:09:29 17:33:32-04:00, 2011:09:29 18:04:10-04:00, 2011:09:29 18:04:19-04:00, 2011:09:29 18:04:19-04:00, 2011:09:30 14:24:08-04:00, 2011:09:30 14:24:08-04:00, 2011:09:30 14:32:35-04:00, 2011:09:30 14:32:44-04:00, 2011:09:30 14:32:44-04:00, 2011:09:30 14:35:24-04:00, 2011:09:30 14:35:24-04:00, 2011:09:30 16:27:06-04:00, 2011:09:30 16:27:43-04:00, 2011:09:30 16:27:43-04:00, 2011:09:30 16:35:23-04:00, 2011:09:30 16:35:23-04:00, 2011:09:30 16:53:46-04:00, 2011:09:30 16:56:32-04:00, 2011:09:30 16:59:16-04:00, 2011:09:30 17:01:12-04:00, 2011:09:30 17:01:41-04:00, 2011:09:30 17:01:41-04:00, 2011:09:30 17:03:42-04:00, 2011:09:30 17:03:42-04:00, 2011:09:30 17:13:51-04:00, 2011:10:04 09:43:11-04:00, 2011:10:04 09:45:54-04:00, 2011:10:06 10:56:18-04:00, 2011:10:06 10:56:21-04:00, 2011:10:06 11:57:53-04:00, 2011:10:06 12:01:17-04:00, 2011:10:06 12:04:08-04:00, 2011:10:06 12:05:48-04:00, 2011:10:06 12:05:48-04:00, 2011:10:06 13:31:54-04:00, 2011:10:06 13:35:09-04:00, 2011:10:06 16:34:25-04:00, 2011:10:06 16:37:26-04:00, 2011:10:06 16:40:01-04:00, 2011:10:07 09:15:08-04:00, 2011:10:07 09:27:54-04:00, 2011:10:07 09:27:54-04:00, 2011:10:07 09:30:16-04:00, 2011:10:07 09:30:16-04:00, 2011:10:07 09:32:31-04:00, 2011:10:07 10:06:24-04:00, 2011:10:07 10:24:37-04:00, 2011:10:07 10:26:32-04:00, 2011:10:07 10:26:58-04:00, 2011:10:07 10:28:06-04:00, 2011:10:07 10:28:14-04:00, 2011:10:07 10:28:46-04:00, 2011:10:07 10:34:56-04:00, 2011:10:07 10:36:44-04:00, 2011:10:07 10:42:54-04:00, 2011:10:07 10:42:54-04:00, 2011:10:07 10:45:45-04:00, 2011:10:07 10:46:25-04:00, 2011:10:07 10:58:27-04:00, 2011:10:07 11:12:24-04:00, 2011:10:07 11:12:24-04:00, 2011:12:07 13:28:40-05:00, 2011:12:07 13:28:40-05:00, 2012:05:03 11:25:10-04:00, 2012:05:03 11:25:10-04:00, 2012:05:03 11:28:47-04:00, 2012:05:03 11:29:19-04:00, 2012:05:03 11:33:49-04:00, 2012:05:03 11:37:13-04:00, 2012:05:03 11:41:19-04:00, 2012:05:09 08:41:42-04:00, 2012:05:11 18:37:07-04:00, 2012:05:11 18:39:19-04:00, 2012:05:11 18:39:57-04:00, 2012:05:11 18:42:05-04:00, 2012:05:11 18:48-04:00, 2012:05:11 19:06:52-04:00, 2012:05:11 19:13:59-04:00, 2012:05:11 19:32:52-04:00, 2012:05:11 19:34:30-04:00, 2012:05:11 19:35:04-04:00, 2012:05:11 19:35:27-04:00, 2012:05:11 19:35:52-04:00, 2012:05:11 19:44:54-04:00, 2012:05:14 18:16:21-07:00, 2012:05:18 00:52:03-07:00, 2012:05:19 10:36:21-07:00, 2012:05:19 22:44:43-07:00, 2012:05:21 10:58:42-07:00, 2012:05:21 15:11:04-04:00, 2012:05:21 15:40:37-04:00, 2012:05:21 15:44:49-04:00, 2012:05:21 15:47:19-04:00, 2012:05:21 15:47:32-04:00, 2012:05:22 08:10:59-04:00, 2012:05:22 08:16:27-04:00, 2012:05:22 08:17:44-04:00, 2012:05:22 08:18:14-04:00, 2012:05:22 08:19:09-04:00, 2012:05:22 08:20:07-04:00, 2012:05:22 08:22:07-04:00, 2012:05:22 08:23:33-04:00, 2012:05:22 08:24:17-04:00, 2012:05:22 08:24:44-04:00, 2012:05:22 08:25:05-04:00, 2012:05:22 08:30:56-04:00, 2012:05:22 08:32:24-04:00, 2012:05:22 08:35:28-04:00, 2012:05:22 08:37:52-04:00, 2012:05:22 08:38:32-04:00, 2012:05:22 08:39:19-04:00, 2012:05:22 08:39:42-04:00, 2012:05:22 09:52:12-04:00, 2012:05:23 14:03:12-04:00, 2012:05:25 16:42:19-04:00, 2012:05:29 17:09:44-04:00, 2012:05:31 10:35:29-04:00, 2012:05:31 11:39:05-04:00, 2012:05:31 11:39:36-04:00, 2012:05:31 14:25:19-04:00, 2012:05:31 14:27:26-04:00, 2012:06:01 13:42:30-04:00, 2012:06:08 13:26:05-04:00, 2012:06:08 13:29:28-04:00, 2012:06:08 14:05:41-04:00, 2012:06:08 14:05:41-04:00, 2012:06:11 11:07:41-04:00
History Software Agent          : Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 6.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.0, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5, Adobe InDesign 7.5
History Changed                 : /, /metadata, /, /, /, /, /metadata, /;/metadata, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /metadata, /;/metadata, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /, /metadata, /;/metadata, /metadata, /;/metadata, /metadata, /;/metadata, /metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /metadata, /, /;/metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /metadata, /metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /metadata, /;/metadata, /metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /;/metadata, /metadata, /;/metadata
Doc Change Count                : 6263
Format                          : application/pdf
Title                           : Flash CS6: The Missing Manual
Creator                         : Chris Grover
Producer                        : Adobe PDF Library 9.9
Trapped                         : False
Page Layout                     : SinglePage
Page Mode                       : UseOutlines
Page Count                      : 850
EXIF Metadata provided by
EXIF.tools

Navigation menu