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.
Find more inspiration, events, and resources on the new Adobe Community
Explore Now