Welcome to the big list of errors.
TypeError: Error #1009: Cannot access a property or method of a null object reference
ActionScript 3 Error #1009 is an AS3 that you can get for many anecdotal reasons. This error basically means that you are trying to reference something that isn’t there yet. That something can be a variable, data from the server, or even a movieClip or other display instance. So if you try and make a call to something and are getting this error simply look at what you are trying to reference and ask yourself is it there yet.
Don’t bang your head against the wall any longer. Here I explain one of the most un-obvious ways to get this error.
One reason that you will get AS3 Error #1009 is because you are trying to access a movieClip that isn’t instantiated yet. For example you try and reference a movieClip named loader_mc that is inside another movieClip. you are referencing it from a class that you created. Each time you run the test the movie you get the Run-Time Error #1009. You look inside your movieClip and see that the loader_mc is right where you want it. It is on frame 10 inside your animated moveiClip. That is when it dawns on you that the call to loader_mc happens when it is instantiated. Simply, put loader_mc on frame 1 and change it’s alpha to 0 and then the movieClip will be instantiated when the call from your custom class is made.
Another reason for this error is simply incorrect targeting. If you target parent.bob and the correct reference is parent.parent.bob then you will get this error as well.
Fix 1 :
Make sure the the reference is instantiated before it is called. This means that the script is run after the object is loaded or the frame in the animation has been reached etc…
Fix 2 :
Check your targeting
Thanks and Happy Flashing
————————————————————————
TypeError: Error #1010: A term is undefined and has no properties.
What this error means is that you are trying to access a property or an item in an array that isn’t there.
Bad Code 1:
for (var i:uint=0; i<=internalArray.length; i++) {
if (internalArray[i].length > 10){
trace(internalArray[i].length);
}
}
Good Code 1:
The above example will throw the error because you are trying to access 1 extra element on the end of your array. Just remove the final loop by removing the “=” sign in the comparison.
for (var i:uint=0; i; i++) {
if (internalArray[i].length > 10){
trace(internalArray[i].length);
}
}
Bad Code 2:
for (var i:uint=0; i
if (internalArray[i].length > 10){
trace(internalArray[i].bob);
}
}
Good Example 2:
The above example will not work because the property bob has not been defined anywhere in the code. You can remedy this by removing the reference to “bob” or by declaring what the “bob” property for each item in the array.
for (var i:uint=0; i
if (internalArray[i].length > 10){
trace(internalArray[i]);
}
}
————————————————————————
ActionScript Error #1013: The private attribute may be used only on class property definitions.
Description:
This ActionScript Error justs means that you have used the access control modifier ‘private’ in the wrong spot. There are four access control modifiers – public, private, internal, and protected. Each of these specify how the method or variable is accessed. Each access control modifier has it’s own error but they all mean the same thing. Access control modifiers need to be used in the right place. The ‘internal’ and ‘public’ can only be used inside a ‘package’ and ‘private’ and ‘protected’ can only be used on classes.
Fix:
Make sure to only use the ‘private’ access control modifier to define a method or variable within the class itself and not within a method(function).
Bad Code:
package{public class MySize {public function Connection():void{private var size:uint = 40;trace(size);}}}
Good Code:
package{public class MySize {private var size:uint = 40;public function Connection():void{trace(size);}}}
or
package{public class MySize {public function Connection():void{var size:uint = 40;trace(size);}}}
Related ActionScript Errors – AS3 Error 1114, AS3 Error 1115 , AS3 Error 1150
This ActionScript Error is a quick one. I hope this helps you solve it.
As always Happy Flashing
————————————————————————
TypeError: Error #1016: Descendants operator (..) not supported on type Array.
This error comes from trying to use the double dots with an Array or Object rather than on an XML string. This error could also be invoked when you accidentally hit the “.” one extra time.
Bad Example:
trace(“withLength”+withLength..string)
Good Example:
trace(“withLength”+withLength.string)
As always – Happy Flashing
————————————————————————
ActionScript Error #1024: Overriding a function that is not marked for override.
Description:
AS3 error 1024 means that Flash or Flex already has a function by that name.
Fix:
To solve Flex/Flash Error 1024 all you need to do is either correctly name the function something besides a reserved function in Flex/Flash or properly override the function. The example below shows how to solve issue number one. Notice that the good code solves Error 1024 because it doesn’t use the same name as a function that already exists in ActionScript.
Bad Code 1:
function nextFrame (e:MouseEvent):void
{
this.nextFrame();
}
Good Code 1:
function onNextFrame (e:MouseEvent):void
{
this.nextFrame();
}
This should help you resolve Flash / Flex Error #1024
Thanks and Happy Flashing
————————————————————————
ActionScript Error #1026: Constructor functions must be instance methods.
Description:
You will get Flash / Flex Error 1026 if you have assigned the constructor of a class to be static. What you most likely wanted to do was create a static method within your class that can be called directly from the class itself rather than from an instance of the class. You are probably trying to create something like the Math.round() method within the Math class. This is a static method and can be called directly from the class.
Fix:
Remove the keyword ‘static’ from the constructor function within your class.
Bad Code:
public class MyStaticMethod
{
public static function MyStaticMethod()
{
public static function theRealStaticMethod (inputString):int
Good Code:
public class MyStaticMethod
{
public function MyStaticMethod()
{
public static function theRealStaticMethod (inputString):int
I hope that you didn’t bang your head against the wall with AS3 Error 1026. It is a simple ActionScript Error to fix with a strange description.
————————————————————————
ActionScript Error #1053: Accessor types must match.
Description:
This is a great error that has absolutely no documentation. This is what Adobe has to say about it.
Notice how the right side of the image doesn’t have any text at all. It is simply left blank. To understand this error you need to understand what an ‘Accessor’ is. An ‘Accessor’ is a ‘Getter’ that accompanies a ‘Setter’. The reason it is called an ‘Accessor’ is because it accesses the variable set using a ‘Setter’.
So what does that mean for you. This error means that the Getter(Accessor) is not set as the same Type as the Setter.
Fix:
Make sure that whatever you return in the ‘Getter’ is the same ‘Type’ as what is set in the ‘Setter’.
Bad Code:
function get sClickable():String {
return _clickable.toString();
}
function set sClickable(myClickable:Boolean):void {
this._clickable=myClickable;
}
Good Code:
public function get sClickable():Boolean {
return _clickable;
}
public function set sClickable(myClickable:Boolean):void {
this._clickable=myClickable;
}
So now you know how to solve ActionScript Error #1053.
As Always Happy Flashing.
————————————————————————
Error #1061: Call to a possibly undefined method lineStyle through a reference with static type flash.display:Sprite.
————————————————————————
ArgumentError: Error #1063: Argument count mismatch on com.cjm::DrawLines/::onEnterFrame(). Expected 0, got 1.
This is an easy one it means that you got an argument passed to your function yet you did not specify that one was coming. So you did this “function Bob ()” instead of “function Bob (myEvent:Event)” This error is common when dealing with Events.
————————————————————————
ActionScript Error #1065: Variable MyClassName is not defined.
Description:
This ActionScript error simply means that you forgot to declare your class as public.
Fix:
Add public before the name of your class.
Bad Code:
class MyClassName extends MovieClip
Good Code:
public class MyClassName extends MovieClip
Good luck trouble shooting ActionScript Error #1065 and,
As always Happy Flashing
————————————————————————
Error #1078: Label must be a simple identifier.
Fix:
One reason you will get this error is because of mistyping the semicolon with a colon at the end of the line. This error can be resolved by correctly typing a semicolon.
Bad Code
myText.border = false:
Good Code :
myText.border = false;
————————————————————————
ActionScript Error #1084: Syntax error: expecting rightbrace before end of program.
Error 1084 is the general error number for syntax errors. ActionScript Error #1084 can be any number of errors. I will keep this one up to date with all the variations I find and how to fix them.
AS3 Error 1084: Syntax error: expecting rightbrace before end of program
This is a very easy one. This error just means that you are most likely missing a right brace. Or you have nested code improperly.
Bad Code:
package com.cjm
{
class CoolClass {
function CoolClass () {
trace(“Something cool”)
}
}
Good Code:
package com.cjm
{
class CoolClass {
function CoolClass () {
trace(“Something cool”)
}
}
}
Please make note of the third bracket at the end of the good code.
ActionScript Error #1084: Syntax error: expecting colon before semicolon.
You will most likely get this error if you are using a ternary statement and you forget to use a colon, forgot the last part of your ternary, or you replace the colon with a semicolon. This is illustrated in the following example:
Bad Code:
me.myType == “keys” ? trace(keys);
or
me.myType == “keys” ? trace(keys) ; trace(defs);
Good Code:
me.myType == “keys” ? trace(keys) : trace(defs);
Flash/Flex Error #1084: Syntax error: expecting identifier before leftbrace.
Description:
This Flash/Flex Error is reported when you left out the name of your class. The ‘identifier‘ that it is looking for is the name of your class.
Fix:
You will see in the code below that you just need to add in the name of your class and the error will go away.
Bad Code:
package com.cjm.somepackage {
public class {
}
}
Good Code:
package com.cjm.somepackage {
public class MyClass {
}
}
AS3 Error #1084 will rear it’s many heads according to the particular syntax error at the moment. I will post every variation of this error that I can find.
————————————————————————
TypeError: Error #1085: The element type “name” must be terminated by the matching end-tag “</key>”.
Description:
Here is another easy AS3 error. This Flash Error means that your XML is not valid because the end tag either does not match the opening tag or that the tag is simply missing. When it says “The element type” it is talking about the XML element. In my case this would be <name>. *Note: This AS3 error is similar to ActionScript Error #1100
Solution:
Check your spelling and make sure that you have properly nested tags.
Bad Code 1
var dogXML:XML = new XML();
dogXML =
<dog>
<name>Fido</namer>
</dog>
Bad Code 2
var dogXML:XML = new XML();
dogXML =
<dog>
<name>Fido
</dog>
</name>
Good Code
var dogXML:XML = new XML();
dogXML =
<dog>
<name>Fido</name>
</dog>
I hope this helps you solve ActionScript Error #1085
As Always Happy Flashing
————————————————————————
ActionScript Error #1094: Syntax error: A string literal must be terminated before the line break.
Description:
Error 1094 is a simple and fairly well described ActionScript Error. This error will appear when you have left off the closing single quote marks in a particular line. This is very closely related to AS3 Error 1095 which will help you out when you improperly use double quotes. You will most likely get AS3 syntax error 1083 and syntax error 1084 after this this one. These can most likely be ignored and will go away once the 1094 error is taken care of
Fix:
End the string properly by putting double quotes in the proper place
Bad Code:
trace(‘This is missing a single quote + someVar);
Good Code:
trace(‘This is not missing a single quote’+ someVar);
Related ActionScript Errors – AS3 Error 1095, AS3 Error 1084
This ActionScript Error is a quick one. I hope this helps you solve it.
As always Happy Flashing
————————————————————————
ActionScript Error #1095: Syntax error: A string literal must be terminated before the line break.
Description:
Error 1095 is a simple and fairly well described ActionScript Error. This error will appear when you have left off the closing double quote marks in a particular line. This is very closely related to AS3 Error #1094 which will help you out when you improperly use single quotes. You will most likely get AS3 syntax error 1083 and syntax error 1084 after this this one. These can most likely be ignored and will go away once the 1095 Error is taken care of
Fix:
End the string properly by putting double quotes in the proper place
Bad Code:
trace(“This is missing a double quote + someVar);
Good Code:
trace(“This is not missing a double quote”+ someVar);
Related ActionScript Errors – AS3 Error #1094, AS3 Error 1084
This ActionScript Error is a quick one. I hope this helps you solve it.
As always Happy Flashing
————————————————————————
Error #1100: Syntax error: XML does not have matching begin and end tags.
Description:
Here is another easy AS3 error. This Flex/Flash Error means that your XML is not valid because the end tag is simply missing. *Note: This AS3 error is similar to ActionScript Error #1085
Solution:
Close that end tag.
Bad Code 1
var dogXML:XML = new XML();
dogXML =
<dog>
<name>Fido
</dog>
Good Code
var dogXML:XML = new XML();
dogXML =
<dog>
<name>Fido</name>
</dog>
I hope this helps you solve ActionScript Error #1100
As Always Happy Flashing
————————————————————————
ActionScript Error #1114: The public attribute can only be used inside a package. Description:
This ActionScript Error justs means that you have used the access control modifier ‘public’ in the wrong spot. There are four access control modifiers – public, private, internal, and protected. Each of these specify how the method or variable is accessed. Each access control modifier has it’s own error but they all mean the same thing. Access control modifiers need to be used in the right place. The ‘internal’ and ‘public’ can only be used inside a ‘package’ and ‘private’ and ‘protected’ can only be used on classes.
Fix:
Make sure to only use the ‘public’ access control modifier to define a method or variable within a package and not inside the class itself nor within a method(function).
Bad Code:
package{public class MySize {public function Connection():void{public var bgColor:uint = 0xFFCC00;trace(bgColor);}}}
Good Code:
package{public class MySize {public var bgColor:uint = 0xFFCC00;public function Connection():void{trace(bgColor);}}}
or
package{public class MySize {public function Connection():void{var bgColor:uint = 0xFFCC00;trace(bgColor);}}}
Related ActionScript Errors – AS3 Error 1013, AS3 Error 1115 , AS3 Error 1150
This ActionScript Error is a quick one. I hope this helps you solve it.
As always Happy Flashing
————————————————————————
ActionScript Error #1115: The internal attribute can only be used inside a package. Description:
This ActionScript Error justs means that you have used the access control modifier ‘internal’ in the wrong spot. There are four access control modifiers – public, private, internal, and protected. Each of these specify how the method or variable is accessed. Each access control modifier has it’s own error but they all mean the same thing. Access control modifiers need to be used in the right place. The ‘internal’ and ‘public’ can only be used inside a ‘package’ and ‘private’ and ‘protected’ can only be used on classes.
Fix:
Make sure to only use the ‘internal’ access control modifier to define a class, method or variable within a package and not inside the class itself nor within a method(function).
Bad Code:
package{public class MySize {public function Connection():void{internal var bgColor:uint = 0xFFCC00;trace(bgColor);}}}
Good Code:
package{internal class MySize {public var bgColor:uint = 0xFFCC00;public function Connection():void{trace(bgColor);}}}
Related ActionScript Errors – AS3 Error 1013, AS3 Error 1114, AS3 Error 1150
This ActionScript Error is a quick one. I hope this helps you solve it.
As always Happy Flashing
————————————————————————
ActionScript Error #1116: A user-defined namespace attribute can only be used at the top level of a class definition.
Description:
This ActionScript error will pop-up when a namespace is declared anywhere besides the class definition. What is a class definition you ask? It is simply the code that says names the class – something like ‘public class MyClass’
After the class is defined you are allowed to create custom(or ‘user-defined’) namespace on that level. Anywhere else in the code is not legal. This ActionScript Error is closely related to the Flash/Flex error #1114.
This AS3 error may also just be a typo. you may have typed something like ‘publi class’ rather than ‘public class’ or ‘prvate function’ rather than ‘private function’
Fix:
Either fix the misspelling in your code or place the ‘user-defined namespace’ inside the class definition. The second code example shows a namespace to separate cars and animals. Notice how the bad example nested the ‘user-defined namespace’ inside the constructor function.
Bad Code 1:
package com.cjm.somepackage
{
publi class MyClass {
publi function MyClass() {}
}
}
Good Code 1:
package com.cjm.somepackage
{
public class MyClass {
public function MyClass() {}
}
}
Bad Code 2:
package
{
public class MyClass
{
public namespace Cars;
public namespace Animals;public function MyClass() {
Animals var Jaguar:String = “A large cat chiefly of South America”;
Cars var jaguar:String = “A large car chiefly driven in North America”;
}Cars function run():void {
trace(“At $30/mile”);
}Animals function run():void {
trace(“On four legs”);
}
}
}
Good Code 2:
package
{
public class MyClass
{
public namespace Cars;
public namespace Animals;
Animals var Jaguar:String = “A large cat chiefly of South America”;
Cars var jaguar:String = “A large car chiefly driven in North America”;public function MyClass() {
}Cars function run():void {
trace(“At $30/mile”);
}Animals function run():void {
trace(“On four legs”);
}
}
}
Adobe has a great explanation of how to use namespaces as well as Collin Moock in Essential ActionScript 3 in Chapter 17
As always Happy Flashing
————————————————————————
ActionScript Error #1118: Implicit coercion of a value with static type Object to a possibly unrelated type flash.display:DisplayObject
ActionScript Error #1118 can be caused by working with the Display Object. What happens is that as soon as you put a MovieClip, Sprite, etc… into the DisplayObject Flash/Flex thinks that any parent is of Type DisplayObject. Even though you know perfectly well that the object that contains your Sprite is another Sprite or MovieClip Flex and Flash don’t know it. You may have encountered this Flex/Flash Error when you tried to call this.parent
from within a Sprite or Flash MovieClip after using addChild()
(among others) to display or modify the display of a MovieClip/Sprite on the stage. The compiler doesn’t keep track of the Type that the parent is so when you call parent the compiler is confused. Instead it assigns the Type DisplayObject. Your code should still keep working even if you get this error, but there is a reason why the compiler gives you this error. I will show you how to get around this error and how to prevent yourself from getting this error in the future. This AS3 Error can happen any time that you are using any of the following methods:
addChild();
Adds a child DisplayObject instance to this DisplayObjectContainer instance.addChildAt();
Adds a child DisplayObject instance to this DisplayObjectContainer instance.contains()
: Determines whether a display object is a child of a DisplayObjectContainer.getChildAt()
; Returns the child display object instance that exists at the specified index.getChildByName()
: Retrieves a display object by name.getChildIndex()
: Returns the index position of a display object.setChildIndex()
: Changes the position of a child display object.<code>swap
Children(): Swaps the front-to-back order of two display objects.<code>swap
ChildrenAt(): Swaps the front-to-back order of two display objects, specified by their index values.
Another reason you may get this ActionScript3 Error is by having an external class that is assigned to an object at runtime. Because the class is not predetermined therefore the compiler chokes.
AS3 Error #1118 Solution. You can resolve AS3 Error #1118 by doing one of three things. The first and most highly suggested is to change the way you code. Think from an outside-in perspective when coding rather than an inside-out mentality. The second is to cast the object as the proper Type which explicitly tells the compiler the type of the parent. The third is to just turn off verbose comments in your settings. I don’t suggest doing this last fix as it could lead to many more headaches and is horrible when working with a team.
AS3 Error 1118: Fix #1 – Object Oriented Scripting. Code with an outside-in perspective. This means that instead of the child telling the parent what to do the parent tells the child what to do. This may become tricky if you are completing an animation and need an event to happen when the inner movieClip reaches a certain frame. It is still possible and I may post a tutorial on how to do this with Flash in the near future. But this post is not the right place for it. You can pick up Essential ActionsCript 3 by Collin Moock for a great reference and starting point.
AS3 Error 1118: Fix #2 – Cast the object as the type that you know it is. If you know that it is a MovieClip then tell Flash that it is a MovieClip. You do this by Casting the object as shown below.
Bad Code:
this.parent.doSomething();
Good Code:
MovieClip(this.parent).doSomething();
or
(this.parent as MovieClip).doSomething();
AS3 Error 1118: Fix #3 – *Warning* This method will solve the problem temporarily and allow you to publish your code BUT it will cause you many headaches later. You will not get any warnings or error messages and this is a bad thing I Promise! If you are going to proceed down this path make sure to recheck these boxes after you are done publishing your one problem movie. With that much said, The way you do this is to turn off Strict (Verbose) Error Messages in your preferences as shown below.
Go to File >> Publish Settings >> Click on the “Flash” tab >> Next to “ActionScript version:” click the “Settings…”
Thanks and as always Happy Flashing,
Curtis J. Morley
————————————————————————
Error #1119:
Access of possibly undefined property buttonText through a reference with static type flash.display:SimpleButton
or
Error #1119: Access of possibly undefined property someProperty through a reference with static type flash.display:DisplayObject.
Description:
This means that you are trying to change dynamic text nested inside a button. This is a simple fix. Just change the button to a movieClip.
Another more prevalent reason that you will get ActionScript Error #1119 is because the the new way Flash/flex handles parent objects has changed. In AS2 parent.myVar would work just fine. In ActionScript3 the compiler doesn’t know what the parent is unless specifically typed or casted instead it chalks everything up to DisplayObjectContainer. This means that it doesn’t know that the ‘parent’ is a MovieClip. The reason for this is because you can now change the object from one displayObject to another easily at compile time. You could change the parent object from a MovieClip to SimpleButton at compile time.
You also want to check your syntax to make sure that you have dynamically targeted an object correctly. For example, if you are trying to use AS3 to target a series of movieClips dynamically and each of the names start with ‘card’ and have a sequential value as well then you must use the code in Fix3 to prevent AS3 Error #1119. Fix #4 is similar to Fix 3 but Fix 4 is specific to the DisplayObject.
Fix 1:
You need to cast the parent as the type that you want or you need.
myTextField.text = MovieClip(this.parent).someVar
or
myTextField.text = (this.parent as MovieClip).someVar
One of the best explanations of casting for this error is written up by Josh Tynjala go visit his blog called “Why doesn’t the ‘parent’ property work the same in ActionScript 3”
.
Fix 2:
Rather than looking outside the movie for the variable you can push the variable into the child movieClip and then access it within itself. For example if I have a movieClip named bob that is inside of a clip named joe then I would have Joe push the variable into bob and bob would access it within himself and not need to ask his parent for the variable because he already has it.
From Joe
bob.someVar = “This is the variable”;
From Bob
myTextField.text = someVar;
Fix 3:
Bad Code:
this.card[i].id = “something”;
Good Code:
this[“card”+i].id = “something;
Fix 4:
The good code below uses a direct reference to the object that holds the property someProperty. Whereas the Bad Code example is trying to access the property through a reference through the displayObject. Because the displayObject doesn’t have the property it cannot change it.
Bad Code:
this.getChildByName(‘card’+_setClicksCounter).someProperty = true;
Good Code:
this[“card”+_setClicksCounter].someProperty = true;
Fix 5:
1119: Access of possibly undefined property nestedMovieClip through a reference with static type Class.
This is easy to fix. It just means that you are trying to access a nested object within the class statement rather than from within the Class. The problem is that the keyword “this” in the first example doesn’t references the Class itself rather the object the Class is linked to.
Bad Code:
package com.cjm.sound
{
public class SoundControl extends MovieClip
{
var _progwidth:uint = this.progBar.width;
public function SoundControl (url=null):void
{
doSomething();
}}}
Good Code:
package com.cjm.sound
{
import flash.display.MovieClip;
public class SoundControl extends MovieClip
{
var _progwidth:uint;
public function SoundControl ():void
{
_progwidth = this.progBar.width;
}}}
As always – Happy Flashing
Error #1119: Access of possibly undefined property transform through a reference with static type flash.display:Graphics.
graphics.transform.colorTransform = new ColorTransform(1, 1, 1, 1, rOffset, 0, bOffset, 0);
Error #1119:Access of possibly undefined property buttonText through a reference with static type flash.display:SimpleButtonFix:
This means that you are trying to change dynamic text nested inside a button. This is a simple fix. Just change the button to a movieClip.
————————————————————————
Error 1136: Incorrect number of arguments. Expected 1.
————————————————————————
ActionScript Error #1150: The protected attribute may be used only on class property definitions.
Description:
This ActionScript Error justs means that you have used the access control modifier ‘protected’ in the wrong spot. There are four access control modifiers – public, private, internal, and protected. Each of these specify how the method or variable is accessed. Each access control modifier has it’s own error but they all mean the same thing. Access control modifiers need to be used in the right place. The ‘internal’ and ‘public’ can only be used inside a ‘package’ and ‘private’ and ‘protected’ can only be used on classes.
Fix:
Make sure to only use the ‘protected’ access control modifier to define a method or variable within the class itself and not within a method(function).
Bad Code:
package{public class MySize {public function Connection():void{protected var borderSize:uint = 0;trace(size);}}}
Good Code:
package{public class MySize {private var size:uint = 40;protected function Connection():void{trace(size);}}}
Related ActionScript Errors – AS3 Error 1013, AS3 Error 1114, AS3 Error 1115
This ActionScript Error is a quick one. I hope this helps you solve it.
As always Happy Flashing
————————————————————————
ActionScript Error #1151: A conflict exists with definition progBar in namespace internal.
ActionScript 3 Error #1151
Description:
AS3 error 1151 is an easy one. This means that within your ActionScript class(namespace internal) there is already a variable or function by that name.
Fix:
To solve Flex/Flash Error 11151 just hit CTRL-F(Apple-F) and search for that term that has a conflict and change it to something appropriate. You may have been building a particle system or working with an X or Y variable and forgot to change one of them so that they both read exactly the same. The example below shows what I mean and how to solve the issue.
Bad Code 1:
public class Particle extends Sprite
{
public var xVelocity:Number;
public var xVelocity:Number;
Good Code 1:
public class Particle extends Sprite
{
public var xVelocity:Number;
public var yVelocity:Number;
This should help you resolve Flash / Flex Error #1151
Thanks and as always Happy Flashing
Curtis J. Morley
Related Error(s) : ActionScript Error #1024
————————————————————————
Error #1168: Illegal assignment to function setTextFormat.
Description:
This is another easy one. It just means that you incorrectly assigned the using an ‘=’ sign rather than within parenthesis.
Fix:
Assign the format within parenthesis not with an ‘=’ sign
Bad Code:
var myText:TextField = new TextField();
var myFrmt:TextFormat = new TextFormat();
myFrmt.color = 0x336699;
myFrmt.font = “Franklin Gothic Book”;
myText.text = “Flash is fun – Happy Flashing Everyone”;
myText.setTextFormat = myFrmt;
this.addChild(myText);
Good Code:
var myText:TextField = new TextField();
var myFrmt:TextFormat = new TextFormat();
myFrmt.color = 0x336699;
myFrmt.font = “Franklin Gothic Book”;
myText.text = “Flash is fun – Happy Flashing Everyone”;
myText.setTextFormat(myFrmt);
this.addChild(myText);
And this is how you resolve Error #1168: Illegal assignment to function setTextFormat.
————————————————————————
ActionScript Error: #1172
Description:
This error is encountered when Flash/Flex cannot find your Class.
Fix:
Make sure that the targeting is correct.
Bad Code:
import com.cjm.everseString;
or
import com.cjm.reverseString;
Good Code:
import com.cjm.ReverseString;
So now you know how to fix AS3 Error 1172
————————————————————————
Error #1502: A script has executed for longer than the default timeout period of 15 seconds.
Problem:
You have entered the realm of “Flash Infinite Loop” or at least a really long loop. This is very common when running loops, especially do…while loops. The timeout is now set to 15 seconds (see image below).
Fix:
Make sure that you are not executing a loop that will never break out. Those poor loops running in circles for all of us Flashers/Flexers.
*******************Warning*******************
The Bad Code below will send your Flex/Flash into and infinite loop and will potentially crash your Development Tool. DO NOT COPY and PASTE the BAD CODE EXAMPLES BELOW.
Bad Code:
var myLength:int = 2;
for (var i:int = 0; i < myLength ; i–);
trace(i);
}
Good Code:
var myLength:int = 2;
for (var i:int = 0; i < myLength ; i++);
trace(i);
}
The code examples above have the var i starting with a number that is smaller than the number it is trying to iterate to. This code basically says as long as i is smaller than myLength then loop and each time I loop make i even smaller.
Bad Code:
*********This code crashed my Flash multiple times.*******
var myArray:Array = [“joe”, “bob”,”pam”];
var randNum:int = Math.round(Math.random()*myArray.length-1);
var curNum:int = 1;
do {
trace(randNum);
} while (randNum == curNum);
The key to using do…while loops in Flash is to make sure that the variable that you are validating against is changed inside the loop itself. Unless the variable that you are validating against changes within the loop itself it will loop forever. This example of a do…while loop is valid but will very likely put Flash into an infinite loop because the likelihood that the number will be 1 is very high, especially considering that the code is rounding and the number 1 is the middle digit of the three. This loop can execute quickly if Flash happens to choose another number or it can loop infinitely. The reason you might be doing this kind of loop is because you want to pull things out of an array, xml, or some other list and don’t want to get duplicates. A better way to do this is to either use the splice() methods in Flash or Flex or if you don’t want to affect the original array you can slice() out a duplicate without the curNum value and then the value will never be repeated because it no longer exists in the items that you are evaluating against. That way you know for sure the item that you don’t want repeated is gone.
There are many other ways to run into an infinite loop. These are just a couple. Feel free to post any questions you have in the comments section and I will answer them promptly.
Thanks and Happy Flashing.
————————————————————————
Error #2044: Unhandled skinError:. text=[IOErrorEvent type=”ioError” bubbles=false cancelable=false eventPhase=2 text=”Error #2036: Load Never Completed. URL: http://curtismorley.com/someURL/SkinUnderAllNoCaption.swf”]
Description:
Here is a combo meal deal of errors that you may get if you are using one of the basic video component skins in Flash. Flash needs to know where the file is and how it interacts with the video you are playing. The reason you will get this error is because the skin didn’t load and so Flash is trying to wrap this video skin around your video unsuccessfully which produces ActionScript Error 2044. I have always seen ActionScript 3 error 2044 coupled with ActionScript Error #2036 which says that the load of the skin never completed. I get this error because of the way wordpress handles includes.
Fix:
Put the file on the server and link to the file in the Flash Authoring Environment.
Step 1:
Convert your video into an FLV with either Flash itself or with the bundled Flash Video Encoder.
Step 2:
Import the video and go through the wizard provided. Make sure that you choose the skin you would eventually want to control your video. In the screenshot below I chose the SkinUnderAllNoCaption skin. This step is critical because it is necessary to have Flash auto generate a swf of the skin for you.
Step 3:
Save your file and you check the folder that your main swf is located in. You should find another file with the name of the skin you chose. In my case the file is called ‘SkinUnderAllNoCaption.swf’.
Step 4:
FTP the ‘skin’ swf to your server.
Step 5:
Open up your Flash file and select the video. Then go to the component ‘Parameters’ palette ad 2x click the ‘skin’ option as shown in the image below.
Step 6:
Choose the last ‘Skin’ option called ‘Custom Skin URL’ and then enter the URL of the skin swf into this field and click ok.
Step 7:
Don’t panic. The skin will most likely not display in the authoring environment. Hit <CTRL> + <ENTER> on your keyboard to test your movie and you will see the same lovely component that you had originally. The two files below show the file before testing your movie and after.
Step 8:
Upload your swf file to the server in the same place as your skin swf and enjoy.
Troubleshooting:
Make sure that you have a crossdomain.xml file on your server to prevent other ActionScript Errors.
You can see this in action at my post about ‘How I Made History’
Now you have a step-by-step description of how to deal with ActionScript Error #2044
As always – Happy Flashing
————————————————————————ActionScript Error #2148:
SecurityError: Error #2148: SWF file file:///C:/Documents and Settings/UserProfile/Desktop/flexstore/bin-release/flexstore.swf cannot access local resource myFile.swf. Only local-with-filesystem and trusted local SWF files may access local resources.
Description:
ActionScript Error #2148 can be caused by a number of reasons. If you are using Flex please keep in mind that the bin directory is a special directory that the Flash player allows SWFs ( and other files ) to load from as long as the file is stored in this directory. It will also allow a loaded swf to access network resources (a remote HTTPService call for example). If these files are placed anywhere besides the bin directory, the Flash Player prevents the file from accessing any external resources. You can allow for external access by changing the settings within the FlashPlayer or within Flex. These solutions are listed below
Fix 1 :
If you’re loading in XML or other files from a remote sever that isn’t hosting the SWF too, make sure you create a crossdomain.xml policy, and put it on the root of your webserver. If you haven’t heard about a cross domain policy or need help creating a crossdomain.xml file click the link and I will show you hhow to create a crossdomain.xml file. View my tutorial on How to Create a crossdomain.xml file and visit the links on the bottom of the page to learn more.
XML Code:
<?xml version=”1.0″?>
<!DOCTYPE cross-domain-policySYSTEM “http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd”>
<cross-domain-policy>
<allow-access-from domain=”www.curtismorley.com” />
<allow-access-from domain=”curtismorley.com” />
</cross-domain-policy>
Fix 2:
Within ActionScript you are now able to specify the cross domain access from within the code. I won’t get into the guts if this one but if you want to learn more view the Flash / Flex documentation or Adobe LiveDocs – Security Chapter or get Joey Lott’s book ActionScript 3 Cookbook By adding this code oyu will get rid of ActionScript Error #2148 If you are using https:// you will need to use allowInsecureDomain() as shown below. If you are using a local file make sure to target it correctly(i.e. c:\myFolder).
ActionScript Code:
flash.system.Security.allowDomain(“http://www.curtismorley.com”);
flash.system.Security.allowInsecureDomain(“http://www.curtismorley.com”);
Fix 3:
One hack to get rid of ActionScript Error 2148 is to add these arguments to the compiler (via Properties – Flex Compiler) : -use-network=false . Beware though this will effectively change your cross-domain security.
Good Code:
-use-network=false
Fix 4:
Make sure your Global Security Settings in Flash Player allows local access to the directory your SWF/XML is running from. At the Global Security Settings in Flash Player click on Edit locations >> Add location and then either type in the new location your SWF is at (i.e. c:\myFolder) or browse for the file or folder. Shut down Flash/ Flex and all instances of the Flash Player(including browsers), and then try again. This will eliminate this ActionScript Error #2148. This solution only works for you on your computer. If you cahnge computers or change locations on the web please refer back to Fix 1.
And now you know 2 ways to fix and 2 ways to circumvent ActionScript Error #2418: Security Error
————————————————————————
ActionScript Warning: 3551: Appending text to a TextField using += is many times slower than using the TextField.appendText() method.
ActionScript Error Description:
I love this ActionScript Warning. This is not technically an ActionScript Error instead it is a warning that helps you code better. It is very clear and easily deciphered. This states that you should not use the old way to add text to a text field but rather use the new TextField.appendText() method. This improves performance dramatically and will prevent the user from getting the 15 sec. timeout. (Error #1502: A script has executed for longer than the default timeout period of 15 seconds.)
Fix:
Use TextField.appendText() instead of +=.
Bad Code:
var something:String = “Happy “;
var somethingElse:String = “Birthday”;
myTF_txt.text = something;
myTF_txt.text += somethingElse;
Good Code:
var something:String = “Happy “;
var somethingElse:String = “Birthday”;
myTF_txt.text = something;
myTF_txt.appendText(somethingElse);
ActionScript Warning #3551 is simple and easy (the way that all ActionScript errors/ warnings should be)
As always – Happy Flashing
————————————————————————
Warning: 3553: Function value used where type void was expected. Possibly the parentheses () are missing after this function reference.
Description:
This is one of the best descriptions that I have seen for a Flash Error. This Flex/Flash Error is actually just a Flex/ Flash Warning actually. This error/warning means exactly what it says. You just forgot the parentheses () when you tried to make a method call.
Fix:
Add the Parenthesis
Bad Code:
var myTime:Timer = new Timer(1000, 3);
myTime.start;
or
var myDate:Date = new Date();
myDate.getDate;
Good Code:
var myTime:Timer = new Timer(1000, 3);
myTime.start();
or
var myDate:Date = new Date();
myDate.getDate();
As always Happy Flashing
————————————————————————
Flex 2/ Flash CS3 Warning / Error #3590: String used where a Boolean value was expected. The expression will be type coerced to Boolean.
Description:
This is a ActionScript error is more of a warning than a true AS3 error. It will be displayed in strict mode and simply means that you have quotes around your Boolean value. Even though you may get this AS3 error it won’t prevent Flex or Flash from compiling nor ActinoScript code. It will convert it for you though. Thanks Flash for doing that for us.
Fix:
Make sure that your boolean (true or false is not inside quotes).
Bad Code:
myObject.visible = “false”;
Good Code:
myObject.visible = false;
This one is pretty easy and straight forward.
As always – Happy Flashing
————————————————————————
Warning: 3596: Duplicate variable definition.
Description:
You are using the same variable and Flex/Flash doesn’t like it. This ActionScript compile error is closely related to AS3 error 1021.
Fix:
Change the name of one instance or take your unnest your loop.
Bad Code:
for (var i:int=0; i < keys.length; i++)
{
Code
Code
Code
Code
for (var i:int=0; i < keys.length; i++)
{
Code
Code
Code
Code
}
}
Good Code:
for (var i:int=0; i < keys.length; i++)
{
Code
Code
Code
Code
for (var j:int=0; j < keys.length; j++)
{
myArray[i][j];
}
}
or
for (var i:int=0; i < keys.length; i++)
{
Code
Code
Code
Code
}
for (var i:int=0; i < keys.length; i++){
More Code
More Code
More Code
More Code
}
Once Again – Happy Flashing
————————————————————————
ActionScript Error #5000: The class ‘com.cjm.MyObj’ must subclass ‘flash.display.MovieClip’ since it is linked to a library symbol of that type.
Description:
This little error will pop up when you have used the linkage in your library and have not targeted the Class properly.
Fix:
Make sure that in your custom ActionScript Class that you have imported the MovieClip Class properly.
Bad Example:
package com.cjm{
public class MyObj extends MovieClip {
Good Example:
package com.cjm
{
import flash.display.MovieClip
public class MyObj extends MovieClip {
So import those classes properly to fix ActionScript Error #5000 and Happy Flashing
————————————————————————
ActionScript Error #5001: The name of package ‘com.cjm’ does not reflect the location of this file. Please change the package definition’s name inside this file, or move the file
Description:
This ActionScript error is a very common one especially if you haven’t defined a good package and class structure. The simple answer is that you misspelled something in your package description or you saved the class in the wrong folder. (See example 1)
Another reason that you can get this error in Flash is because you have a Document Class and you have specified the classpath in the “Document class:” field and you have something different typed in your package. You might say well that is not possible. If your default classpath is defined in the AS3 setting then the file will compile and the class will work properly if you remove the classpath all together out of your package. This is not recommended because it is not good practice. Please review the example2 below.
Solution:
Check your paths in the package, class and ‘Document Class’.
Example 1
Bad Code
package com.ckm
{
}
Good Code
package com.cjm
{
}
Example 2
Good Code – Bad “Document class:” definition
package com.cjm
{
public class MyDocClass
{
public function MyDocClass()
{
}}}
Good Code – Good “Document class:” definition
package com.cjm
{
public class MyDocClass
{
public function MyDocClass()
{
}}}
And those are two ways to resolve ActionScript Error #5001
As Always – Happy Flashing
————————————————————————
Unnumbered Errors
“C:\Program Files\Mozilla Firefox\plugins\NPSWF32.dll
Flex Builder cannot locate the required version of the Flash Player. You may need to install Flash Player 9.0 or reinstall Flex Builder. Do you want to try to run your application with the current version?
Are you running your Flex Application and continually getting the error below?
Description:
This error is not a critical error and if you click on the Yes button the application will most likely run the way the you expect it. The reason this happened may have been because you recently did an express install or just an upgrade to your Flash Player.
Solution:
To get rid of this window constantly popping up you need to do one of the following:
- Reinstall the Flash Player
Follow this link and reinstall the Flash Player. Get the latest Flash Player Debug Version
This may or may not solve the issue. - Put the missing file in the folder that Flex is expecting.
As you can tell Flex is looking for the dll in the folderC:\Program Files\Mozilla Firefox\plugins
but if you look in that folder I would wager that the fileNPSWF32.dll
is not there. Where you will find the file is in the following folderC:\Windows\System32\Macromed\Flash
. Simply do a copy and paste from the Macromed\Flash folder into the Firefox\plugins folder and you will eliminate the error. - Point Flex to another browser.
If the above method doesn’t work (which it should) then you can use IE as your default browser. The way you change your default browser in Flex is by going to the menu and clicking Window >> Preferences. This will pop-up the Flex preferences window. From within the Flex preferences window select General >> Web Browser and then change the Browser from Firefox to IE as shown in the image below.
- Last resort reinstall Flex.
Below are two links to help you trouble shoot.
Get the latest Flash Player Debug Version
Find out what version you have.
As always Happy Flashing
P.S. I tried the solution on the Adobe Live Docs of updating the patch in Flex and this did nothing.
Happy Flashing
Pingback: Flash « LG
Pingback: Adobe Flash « LG
Pingback: curtismorley.com » Search Engine Optimization Example
Pingback: curtismorley.com » 31 posts in 31 days all in May