Copy link to clipboard
Copied
I am currently getting an error in my code and I'm not sure why.
Here's the error:
TypeError: Error #1010: A term is undefined and has no properties.
at BallGame_fla::MainTimeline/testEnemyHit()
at BallGame_fla::MainTimeline/eFrame()
Here's the code:
import flash.events.KeyboardEvent;
import flash.events.Event;
var xvel = 0;
var yvel = 0;
var dude = BG.ball;
var GRAV = 1;
var FRIC = .6;
var onground = false;
var downarr = new Array(-10,0,10);
var vertarr = new Array(-20,-30);
var uparr = new Array(-3,0,3);
var enemies = new Array();
var ldown = false;
var rdown = false;
var jdown = false;
this.addEventListener(Event.ENTER_FRAME,eFrame);
stage.addEventListener(KeyboardEvent.KEY_DOWN, kDown);
stage.addEventListener(KeyboardEvent.KEY_UP, kUp);
function kDown(e:KeyboardEvent)
{
var code=e.keyCode;
if (code==37)
{
ldown = true;
}
if (code==39)
{
rdown = true;
}
if (code==38)
{
if(!jdown && onground)
{
runJump();
}
jdown = true;
}
}
function runJump()
{
onground = false;
yvel = -12;
}
function kUp (e:KeyboardEvent)
{
var code = e.keyCode;
if (code==37)
{
ldown=false;
}
if (code==39)
{
rdown = false;
}
if (code==38)
{
jdown=false;
}
}
function controls()
{
if (!dude.hit)
{
if(rdown)
{
xvel+=3;
dude.scaleX=0.6
}
if(ldown)
{
xvel-=3;
dude.scaleX=-0.6
}
}
else
{
dude.hitcv++;
if (dude.hitcv>=20)
dude.visible=!dude.visible
{
dude.hit=false;
dude.hitcv=0;
dude.visible=true;
}
}
}
function centerWindow()
{
var newx = -dude.x + 275;
BG.x = newx
var newy = -dude.y + 300;
BG.y = newy
if (BG.x<-550)
{
BG.x = -550;
}
if (BG.x>0)
{
BG.x = 0
}
}
function testEnemyHit(dude)
{
for (var i=0;i<enemies.length;i++)
{
var e=enemies;
if (e.guts.hitbox.hitTestObject(dude.guts.hitbox)&&!e.dead)
{
dude.hit=true;
dude.hitcv=0;
if (dude.x<e.x)
{
dude.scaleX=1;
xvel=-5;
}
else
{
dude.scaleX=-1
xvel+=5;
}
yvel=-8
dude.y=e.y-50
yvel=-10;
e.yvel=-10;
onground=true;
killEnemy(e);
}
}
}
function Border(d)
{
if (dude.x<0)
{
dude.x=0
}
if (dude.x>1000)
{
dude.x=1000
}
}
function phys()
{
dude.x+=xvel;
dude.y+=yvel;
xvel*=FRIC;
yvel+=GRAV;
dude.virtx = dude.x+BG.x;
dude.virty = dude.y+BG.y;
Border(dude)
upPush(dude)
downPush(dude)
leftPush(dude)
rightPush(dude)
upPushCloud(dude)
if (yvel>14)
{
yvel=14
}
if (yvel>1)
{
onground=false;
}
if (yvel>0)
{
testEnemyHit(dude);
}
}
function killEnemy(e)
{
for (var i=0;i<enemies.length;i++)
{
var ee=enemies
if(ee==e)
{
e.dead=true;
e.guts.gotoAndStop("dead");
}
}
}
function upPush(d)
{
d.virtx=d.x+BG.x;
d.virty=d.y+BG.y;
for(var i=0; i<downarr.length; i++)
{
var num = downarr;
var tx = d.virtx+num;
var ty = d.virty;
while (BG.ground.hitTestPoint(tx,ty,true))
{
onground = true;
d.virty--;
ty--;
d.y--;
yvel=0;
}
}
}
function rightPush(d)
{
d.virtx=d.x+BG.x+xvel;
d.virty=d.y+BG.y;
for(var i=0; i<vertarr.length;i++)
{
var num=vertarr
var tx=d.virtx+21;
var ty=d.virty+num;
while(BG.ground.hitTestPoint(tx,ty,true))
{
onground=true;
d.virtx--;
d.x--;
tx--;
xvel=0;
}
}
}
function leftPush(d)
{
d.virtx=d.x+BG.x+xvel;
d.virty=d.y+BG.y;
for(var i=0; i<vertarr.length;i++)
{
var num=vertarr
var tx=d.virtx-21;
var ty=d.virty+num;
while(BG.ground.hitTestPoint(tx,ty,true))
{
onground=true;
d.virtx++;
d.x++;
tx++;
xvel=0;
}
}
}
function downPush(d)
{
d.virtx=d.x+BG.x;
d.virty=d.y+BG.y;
for(var i=0; i<uparr.length;i++)
{
var num=uparr
var tx=d.virtx+num;
var ty=d.virty-40;
while(BG.ground.hitTestPoint(tx,ty,true))
{
onground=true;
d.virtx++;
d.x++;
tx++;
yvel=0;
}
}
}
function upPushCloud(d)
{
if (yvel>0)
{
d.virtx=d.x+BG.x;
d.virty=d.y+BG.y;
for(var i=0; i<downarr.length;i++)
{
var num=downarr;
var tx=d.virtx+num;
var ty=d.virty;
while(BG.cloudBG.hitTestPoint(tx,ty,true))
{
onground=true;
d.virty--;
ty--;
d.y--;
yvel=0;
}
}
}
}
function addEnemy(ref)
{
enemies.push(ref);
xvel
yvel
ref.sp=Math.random()*3+2;
ref.dir=Math.floor(Math.random()*2);
if (ref.dir==0)
{
ref.dir=-1;
ref.scaleX=-1;
}
}
function eFrame(e:Event)
{
moveEnemies();
testEnemyHit(dude);
phys();
controls();
centerWindow();
}
function moveEnemies()
{
for (var i=0; i<enemies.length; i++)
{
var e=enemies
if(!e.dead)
{
e.x+=e.xvel
e.xvel*=FRIC
e.y+=e.yvel
e.yvel+=GRAV
upPushEnemy(e);
upPushCloudEnemy(e);
leftPushEnemy(e);
rightPushEnemy(e);
checkEdgeRight(e);
checkEdgeLeft(e);
}
else
{
chkEnemyOffScreen(e);
}
}
}
function chkEnemyOffScreen(e)
{
if(e.y>650)
{
removeEnemy(e);
}
}
function removeEnemy(e)
{
for(var i=0;i<enemies.length;i++)
{
var ee=enemies
if(ee==e)
{
enemies.splice(i,1);
BG.removeChild(e);
return;
}
}
}
function leftPushEnemy(e)
{
e.virty=e.y+BG.y;
e.virtx=e.x+BG.x;
while (BG.ground.hitTestPoint(e.virtx-20,e.virty-20,true))
{
e.x++;
e.virtx++;
e.xvel=0;
e.dir=1;
e.scaleX=1;
}
}
function rightPushEnemy(e)
{
e.virty=e.y+BG.y;
e.virtx=e.x+BG.x;
while (BG.ground.hitTestPoint(e.virtx-20,e.virty-20,true))
{
e.x--;
e.virtx--;
e.xvel=0;
e.dir=-1;
e.scaleX=-1;
}
}
function checkEdgeRight(e)
{
e.virty=e.y+BG.y;
e.virtx=e.x+BG.y;
if(e.dir==1)
{
if(!BG.ground.hitTestPoint(e.virtx+20,e.virty+10,true) && !BG.cloudBG.hitTestPoint(e.virtx+20,e.virty+10,true))
{
e.dir=-1;
e.scaleX=-1;
}
}
}
function checkEdgeLeft(e)
{
e.virty=e.y+BG.y;
e.virtx=e.x+BG.y;
if(e.dir==-1)
{
if(!BG.ground.hitTestPoint(e.virtx-20,e.virty+10,true) && !BG.cloudBG.hitTestPoint(e.virtx-20,e.virty+10,true))
{
e.dir=1;
e.scaleX=1;
}
}
}
function upPushEnemy(e)
{
e.virty=e.y+BG.y
e.virtx=BG.x+e.x
while(BG.ground.hitTestPoint(e.virtx,e.virty,true))
{
e.y--;
e.virty--;
e.yvel=0;
}
}
function upPushCloudEnemy(e)
{
e.virty=e.y+BG.y;
e.virtx=e.x+BG.x;
while(BG.cloudBG.hitTestPoint(e.virtx,e.virty,true))
{
e.y--;
e.virty--;
e.yvel=0;
}
}
Thanks
Copy link to clipboard
Copied
Try commenting out sections of code until you can narrow down where the error comes from.
Copy link to clipboard
Copied
or click file>publish settings>tick 'permit debugging'>retest.
the problematic line number (ie, the one trying to reference an undefined object) will be in the (more verbose) error message.