Read Foundation Game Design with ActionScript 3.0, Second Edition Online
Authors: Rex van der Spuy
But Flash Builder doesn't just leave you with vague error messages; it points to where in your code it thinks the problem is. If you look at the left side of your editor window, you'll see a small red circle with an X through it. Flash Builder thinks the problem lies in that line of code.
Figure 1-35
shows an example.
Figure 1-35.
Flash Builder will point to the line of code with the possible error.
Note: If you have a small problem that isn't too serious but you should probably fix, Flash Builder with let you know with a triangular, yellow warning sign. This won't prevent the program from running properly, but it could lead to bigger problems later down the line if you don't fix it.
The line that Flash Builder highlights is an important clue! However, it can be very misleading because Flash Builder only tells you the point at which it stopped being able to understand your code. Usually the real the problem is at a point which is
just before this spot
.
This can be confusing! Here's a more concrete example: imagine you're walking through the woods, trip on the root of a tree, and bump your head on a rock. Flash Builder will point to the rock as the problem. But you know that the real problem is the root of the tree.
Take a good look at
Figure 1-35
and compare it with the final code you wrote in the previous section. Does it look like there's anything wrong with the line that Flash Builder is pointing to? No, it's perfectly fine.
But take a look at the line just before it. This is what it looks like:
public function HelloWorld(
Do you notice something wrong? Yes! The closing parenthesis is missing. The line should look like this:
public function HelloWorld()
These kinds of simple mistakes are very easy to make, especially when you're just learning how to program and all of this is completely unfamiliar to you.
But Flash Builder didn't tell you that this was the problem. It pointed you to the rock that it bumped its head on, not the tree root that tripped it up. But it did give you an idea of where to look. If you fixed this code and debugged the program again, it would run perfectly and all the error messages would disappear.
Unfortunately, the compiler doesn't know what you intend your code to do; it can only tell you what it expects and what it doesn't understand. If you're lucky, it precisely pinpoints the problem. But more often than not, it will just be able to give you a general idea of where to look and what to look for. It's a bit like a two-year-old yelping with pain and pointing to his big toe. You know where the problem is, but whether it's a thumbtack, a bee sting, or just another way of saying, “The last time I did this you gave me some chocolate,” the remedy will depend on experience, skeptical investigation, and a thoughtful diagnosis. It's up to you to intelligently analyze what you think the error is telling you and what you might have to fix or change to get your program running properly.
If you're not sure where the problem with your program lies, ask yourself whether one or more of these might be the issue:
import
,package
, andfunction
) a blue or purple color? If one of them isn't, that's a clear indication that you might have spelled or capitalized it incorrectly.And here are some more general pointers that you should always keep in mind while debugging your programs:
Except for a few exceptional cases, this is the last discussion of debugging issues in any detail in this book. You'll be on your own from here on out, but the sooner you gain practice debugging your own code, the better. Experience counts for everything in this realm, and there is no better whetstone upon which to sharpen your skills as a programmer than a tricky debugging problem.
Also, get used to the Problems window—you'll be seeing a lot of it! It will become your closest ally in finding and tracking down problems.
This section lists some common error messages that you might see in your first attempts at debugging, with suggestions as to what the problem could be.
1087: Syntax error: extra characters found after end of program.
You probably forgot to open or close one of the curly braces.1116: A user-defined namespace attribute can only be used at the top level of a class definition.
You misspelled a keyword in the class definition. Maybe you spelled “public” as “pulbic.”1071: Syntax error: expected a definition keyword (such as function) after attribute public, not clas.
You spelled the word “class” as “clas.” This error will often be displayed when you misspell a keyword.1084: Syntax error: expecting leftbrace before exteds
.1017: The definition of base class Sprie was not found.
You misspelled the word “Sprite.”1017: The definition of base class Sprite was not found.
You misspelled one of the words, such as “flash” or “display” in this line of code:import flash.display.Sprite;
You might also have left out one of the dots between the words.1114: The public attribute can only be used inside a package.
You probably misspelled the word “package.”1153: A constructor can only be declared public.
You misspelled the word “public” in the constructor method.1071: Syntax error: expected a definition keyword (such as function) after attribute public, not functon.
You misspelled the word “function.”A file found in a source-path ‘HelloWorld– must have the same name as the class definition
inside the file ‘HeloWorld’.
You misspelled “HelloWorld” as “HeloWorld” in the class definition.1008: return value for function ‘HeloWorld’ has no type declaration.
You misspelled “HelloWorld” as “HeloWorld” in the constructor method.1084: Syntax error: expecting identifier before leftbrace.
You forgot to close a parenthesis.1180: Call to a possibly undefined method trae.
You misspelled “trace” as “trae.”1084: Syntax error: expecting rightparen before semicolon.
You forgot to close a parenthesis.Don't let these error messages scare you! You'll soon get a feeling for what they're trying to tell you, and by carefully checking your code you'll always be able to find the source of the problem.
If you're unsure about any of the code in this book, you can download the original source files that I wrote and check your work against mine. You can download them from the book's download page atwww.apress.com
. Open the folder for the chapter you are working on, and you'll find the folders and files organized exactly as I've described them in this book. You can open any of the individual files directly in Flash Builder or open the whole folder as a Flash Builder project.
To open the source files as a project, select File
Import Flash Builder project from the main menu. A new dialogue box will open, asking whether you want to import a file or a project folder. Select project folder and click Finish. The project will be imported into Flash Builder, and you can then run and debug it, just as you can run and debug your own programs.
If the project folder you're trying to import has the same name as a project currently open in Flash Builder, rename the project folder before you import it.
Flash Builder is a complex bit of software that contains many more features than you'll probably ever need. Let's take quick look at some of the most useful.
The ActionScript editing window has a few advanced features which, unfortunately for beginners, can result in some frustrating quirks if you're not aware of them. They could cause your work to seem to disappear or not run properly. However, with a bit more experience, you'll actually find these features extremely helpful.
First, the Editing window allows you to
collapse
your code. Look at the very left side of the window and you'll see small minus signs. There's a minus sign next to each block of code. If you click one of those minus signs, the block of code collapses into a single line. It looks like your code has disappeared completely, but it hasn't. Click the new plus sign next to the code block, and your code appears again. This is useful if you're working on a very long program and want to temporarily hide bits of code so that they don't distract you from other bits you're working on.
Figure 1-36
illustrates this.