AS3 Compiler Error# 1021: Duplicate function definition.

AS3 Compiler Error# 1021: Duplicate function definition..

AS3 Error 1023 Description:

This ActionScript error is the most terse error that AS3 has provided us.  It is nothing like AS3 Warning 1090 It popped up, rearing it’s ugly head like a teenager on Halloween. In most cases this error has more to do with AS3 Error 1021 than it does with an incompatible override.  Sometimes it realy does mean that you have an override that is incompatible but many times it just means that you have a function that is named the same as

Flex / Flash Error #1021 Fix:

Do exactly what the message says use an event listener instead of the onRelease event that was common in AS2.

Bad Code 1:

function bob () {
}

function bob () {
}

Good Code 1:

function bob () {
}

function jim () {
}

Bad Code 2:

var myArray:Array = [1,2,3];

function myArray () {
}

Good Code 2:

var myArray:Array = [1,2,3];

function myArrayFunction () {
}

Related Errors:

AS3 Error 3596
AS3
Compiler Error 1023
AS3 Error 1023 (Different error same number.  This one has nothing to do with error 1021)

This should help you resolve Flex / Flash Warning #1021

Thanks and as always Happy Flashing

Curtis J. Morley

ActionScript Warning 1090: Migration issue: The onRelease event handler is not triggered automatically by Flash Player at run time in ActionScript 3.0. You must first register this handler for the event using addEventListener ( ‘click’, callback_handler).

AS3 Warning: 1090: Migration issue: The onRelease event handler is not triggered automatically by Flash Player at run time in ActionScript 3.0.  You must first register this handler for the event using addEventListener ( ‘click’, callback_handler).

AS3 Warning 1090 Description:

So the other day I opened some AS2 files that I use for teaching Flash Arrays at UVU.  I changed a few things in the file and tested my movie.  That is when Warning 1090 popped up and I realized that I had missed a few things.  AS3 Warning1090 is the most comprehensive and complete error message that I have ever encountered in Flash or Flex.  Not only does it give a really clear description but it tells you how to solve the issue.  Kudos Flash programmers/writers.  Jen DeHaan  if this is you – Nice Job!

P.S.  This will also happen with onEnterFrame, onPress, onMouseMove, etc…  I have only included one example here but it applies to all cases.

Flex / Flash Error #1090 Fix:

Do exactly what the message says use an event listener instead of the onRelease event that was common in AS2.

Bad Code:

joinArray_btn.onRelease = function () {
//Do Something
}

Good Code:

joinArray_btn.addEventListener(MouseEvent.CLICK, joinArray);

function joinArray() {
//Do Something
}

Related Errors:

AS3 Warning 1058

This should help you resolve Flex / Flash Warning #1090

Thanks and as always Happy Flashing

Curtis J. Morley

Flex / Flash Error 1042: The this keyword can not be used in static methods. It can only be used in instance methods, function closures, and global code.

ActionScript 3 Error: 1042: The this keyword can not be used in static methods. It can only be used in instance methods, function closures, and global code.ActionScript 3 Error #1042

AS3 Error 1042 Description:

AS3 Error1042 is actually a really helpful error.  It is simple in that it states that you will not be able to access something called “this” at the point in the code you are trying to access it.  In other words, you can’t put “this” directly inside the package or the class.  It can go in any of the functions that are within the Class but no higher.

It makes sense.  If you think about trying to access “this” from inside the package or from inside the class definition then you should understand why.  Packages are used only to show Flash/Flex where to find the code so there is no “this” in a file structure.  Also at the Class definition level this doesn’t exist either because the Class hasn’t yet run the constructor to make a “this”.

Flex / Flash Error #1042 Fix:

Remove the reference to the “this” keyword in your package or Class.

Bad Code:

package com.cjm.teaching{
import flash.display.MovieClip;
trace(this);
public class Ball extends MovieClip {
public function Ball():void {
}
}
}

or

package com.cjm.errors{
import flash.display.MovieClip;
public class MyClass extends MovieClip {
trace(this);
public function MyClass():void {
}
}
}

Good Code:

package com.cjm.errors{
import flash.display.MovieClip;
public class MyClass extends MovieClip {
public function MyClass():void {
trace(this);
}
}
}

Related Errors:

If the reference to “this” is at the package level you will also get AS3 Error 5000

This should help you resolve Flex / Flash Error #1042

Thanks and as always Happy Flashing

Curtis J. Morley

Teaching Flash again at UVU

Utah Valley University For everyone that has wanted help with their Flash now is your chance to get it. If you have ever said, “Man! I wish I could just ask Curtis this question in person.” sign up for DGM 2870 at the newest University in the Nation, UVU. The class is going to focus on ActionScript Fundamentals and will have a syllabus that looks something like this. I started teaching over 8 years ago and was the first person to teach Flash in Utah. I spent most of my time teaching at UVU (then UVSC) and had a little stint with SLCC (Salt Lake Community College) and then a few years teaching in the Masters of Information Systems at the Largest Private University in the nation, Brigham Young University.

Flash CS3 IconNow I am back to my roots. I am excited to start teaching College Flash again. I will cover ActionScript Fundamentals using the book by Rich Shupe. Arrays, External AS, functions, conditionals, interactivity, usability, Object Oriented Programming, and mobile will be taught. I will be using GoCourse as my LMS/Content Creation Tool/ Grading system for enhanced learning for my students and easier teaching for me.

Super Smash BrothersThe class is extremely fun. It is also a lot of work but the reward is fantastic. I don’t know if it is quite as fun as Super Smash Brothers Melee Theory and Practice taught by Brian Mazur, Mike Blejer and Quentin Jones at Oberlin College (Don’t believe me? Click the link and scroll to the bottom under “Physical Activities and Games”) they also list Stilting as a 1 credit course.

Stilt JumpingAlthough we wont be walking on stilts or playing Nintendo for 2 hours we will learn how to create kick-butt applications, games, widgets, mobile applications, and websites with ActionScript. So go to UVU.edu and sign up today for the night class (7:30-8:45 p.m.).

Flash Error #1180: Call to a possibly undefined method myCustomClass.

ActionScript 3 Error: 1180: Call to a possibly undefined method CustomClass.

ActionScript 3 Error #1180 Description:

One reason for this this error is because you are using the name of the variable that you are assigning to the Class rather than the Class itself.  Adobe also states that this error will only display when “Strict Mode” is turned on.

Flex / Flash Error #1180 Fix:

Make sure that when you instantiate the Object that you are using the Class name and not the variable name.

Bad Code:

var myCustomClass:CustomClass = new myCustomClass();

Good Code:

var myCustomClass:CustomClass = new CustomClass();

Links:

http://www.flashcomguru.com/index.cfm/2007/4/17/Flex-Builder-2-to-write-AS3-code-for-Flash

This should help you resolve Flex / Flash Error #1180

Thanks and as always Happy Flashing

Curtis J. Morley

ActionScript 3 Error: 1038: Target of break statement was not found.

ActionScript 3 Error: 1038: Target of break statement was not found.

ActionScript 3 Error #1038 Description:
A break statement is used only with loops. They will not work in if statements. This is directly from the documentation:

Appears within a loop (for, for..in, for each..in, do..while, or while) or within a block of statements associated with a particular case in a switch statement. When used in a loop, the break statement instructs Flash to skip the rest of the loop body, stop the looping action, and execute the statement following the loop statement. When used in a switch, the break statement instructs Flash to skip the rest of the statements in that case block and jump to the first statement that follows the enclosing switch statement.

In nested loops, break only skips the rest of the immediate loop and does not break out of the entire series of nested loops. To break out of an entire series of nested loops, use label or try..catch..finally.

The break statement can have an optional label that must match an outer labeled statement. Use of a label that does not match the label of an outer statement is a syntax error. Labeled break statements can be used to break out of multiple levels of nested loop statements, switch statements, or block statements. For an example, see the entry for the label statement.

Pay attention to the last two paragraphs if you want to break all the way out of a function/method rather than just the loop that the break statement is inside then you need to use label. A very handy but seldom used method

Flex / Flash Error #1038 Fix:
Make sure that your break statement is within a valid loop such as for, while, switch statements, etc… Another alternative is to use a return statement without any parameters. Warning: Using return will break out of the function entirely and will not execute any code after the if statement. return is typically used as the last line of code in a function.

Bad Code:

if (totalScore < 10)
{
finalMsg = “Sorry!<br /> You need more practice”;
break;
}
else if (totalScore < 20)
{
finalMsg = “Congratulations!<br /> You kept yourself and others safe”;
break;
}

Good Code:

if (totalScore < 10)
{
finalMsg = “Sorry!<br /> You need more practice”;
return;
}
else if (totalScore < 20)
{
finalMsg = “Congratulations!<br /> You kept yourself and others safe”;
//break can be removed to get rid of the error;
}

This should help you resolve Flex / Flash Warning #1038

Thanks and as always Happy Flashing

Curtis J. Morley

ActionScript 3 Error #1061

ActionScript 3 Error #1061: Call to a possibly undefined method addEvent through a reference with static type flash.utils:Timer.

ActionScript 3 Error #1061 Description:
AS3 error 1061 appears when you have misspelled a property or function and have not assigned a value to it. If you haven’t properly typed the Object to begin with you will get AS3 Error 1069. See the examples below. AS3 error 1061 is actually pretty nice to work with because it tells you exactly which method/property didn’t work and it tells you which object it didn’t work on.

Flash / Flex Error 1061 Fix:
Find the object listed in the error and then check the spelling after the dot.

Bad Code 1:

var t:Timer = new Timer(1000, 60);
t.addEvent(TimerEvent.TIMER, Tick);

Good Code 1:

var t:Timer = new Timer(1000, 60);
t.addEventListener(TimerEvent.TIMER, Tick);

Related ActionScript Error(s):
Flash / Flex Error 1069
– You will get AS3 Error 1069 instead of 1061 if you don’t properly type your object before referencing a property on it. For example var t:Timer = new Timer(1000, 60);
t.addEvent(TimerEvent.TIMER, Tick); will give error 1061 but var t = new Timer(1000, 60);
t.addEvent(TimerEvent.TIMER, Tick); will give Error 1069.
Flash / Flex Error 1119
The dreaded AS 3 Error 1119
Flash / Flex Error 1056
– This is the error you will get if you try and call a property with a misspelled name in the same way as calling a property with a misspelled name.

ReferenceError: Error #1069: Property addEvent not found on flash.utils.Timer and there is no default value

ReferenceError: Error #1069: Property addEvent not found on flash.utils.Timer and there is no default value.

ActionScript 3 Error #1069 Description:
AS3 error 1069 appears when you have misspelled a property or function and have not assigned a value to it. If you have properly typed the Object to begin with you will get AS3 Error 1061. See the examples below. AS3 error 1069 is actually pretty nice to work with because it tells you exactly which method/property didn’t work and it tells you which object it didn’t work on.

Flash / Flex Error 1069 Fix:
Find the object listed in the error and then check the spelling after the dot.

Bad Code 1:

var t = new Timer(1000, 60);
t.addEvent(TimerEvent.TIMER, Tick);

Good Code 1:

var t = new Timer(1000, 60);
t.addEventListener(TimerEvent.TIMER, Tick);

This should help you resolve Flex / Flash Error #1069

Thanks and as always Happy Flashing

Curtis J. Morley

Related ActionScript Error(s):
Flash / Flex Error 1061
– You will get AS3 Error 1069 instead of 1061 if you don’t properly type your object before referencing a property on it. For example var t:Timer = new Timer(1000, 60);
t.addEvent(TimerEvent.TIMER, Tick); will give error 1061 but var t = new Timer(1000, 60);
t.addEvent(TimerEvent.TIMER, Tick); will give Error 1069.
Flash / Flex Error 1119
Flash / Flex Error 1056
– This is the error you will get if you try and call a method with a misspelled name in the same way as calling a property with a misspelled name.

AS3 Warning: 1102: null used where a int value was expected.

ActionScript 3 Warning: 1102: null used where a int value was expected.

ActionScript 3 Warning#1102 Description:
This warning is pretty good at describing what is happening but is needs to add a little to explain why. This error will appear when you try and force a variable to be a certain Type within a predefined function. For example if you have a variable like _minute below

Flex / Flash Warning1102 Fix:
Find where you are using null and make sure that you are using the proper value

Bad Code:

var TargetDate:Date = new Date(_year, _month, _date, _hour, _minute=null);

or

var TargetDate:Date = new Date(_year, _month, _date, _hour, _minute=”10″);

or

var TargetDate:Date = new Date(_year, _month, _date, _hour, _minute=false);

Good Code:

var TargetDate:Date = new Date(_year, _month, _date, _hour, _minute=10);

Warning:
You will not get this error with the code below even though it seems like the same as the code above. The smart folks at Adobe put in logic that will accommodate for numbers-as-strings and also boolean which will result in the number 0.  The AS3 Warning will will only show when you assign an non-permitted variable within the parameters of a method call. The code below will output a valid date. Direct assignment in quotes will be translated into a valid Number not an int. False shows up as 0 in the date.

var TargetDate:Date = new Date(_year, _month, _date, false, 10“);

Related AS3 Error:
AS3 Error 1067

This should help you resolve Flex / Flash Warning #1102

Thanks and as always Happy Flashing

Curtis J. Morley

New Info added to AS3 Error 1067

Check out the new info I posted on AS3 Error #1067

It is highly related to AS3 Warning 1102

Thanks,

Curtis J. Morley