hi guys,
here i found a glitch, here is my code as it executes the character flies in decreasing y direction, & its motion along x-axis is jerky.
var t:int=0;
var wal:Array;
wal=new Array();
var man:Object;
var newAnimstate:String=“stand”;
var gravity:Number=.0009;
var lastTime:int;
createman();
stage.addEventListener(Event.ENTER_FRAME,gameloop);
function createman()
{
man=new Object();
man.mc=rect.man;
man.dx=0.0;
man.dy=0.0;
man.jump=false;
man.inAir=false;
man.jumpspeed=.8;
man.walkspeed=.6;
man.animstate=“stand”;
man.direction=1;
man.moveRight=false;
man.moveLeft=false;
man.walkAnimation = new Array(0,1,2,3,4,5,6,7,8,9);
man.width=53.0;
man.height=95.3;
man.animstep=0;
man.scaleX=.08;
man.scaleY=.08;
man.x=-31.5;
man.y=22;
var labels:Array=man.mc.currentLabels;
for (var i:uint = 0; i < labels.length; i++)
{
var label:FrameLabel = labels*;
trace("frame " + label.frame + ": " + label.name);
}
}
stage.addEventListener(KeyboardEvent.KEY_DOWN, down);
stage.addEventListener(KeyboardEvent.KEY_UP, up);
function down(event:KeyboardEvent)
{
if(event.keyCode==37)
{man.moveLeft=true;
}
else if(event.keyCode==39)
{man.moveRight=true;
}
else if(event.keyCode==32)
{
if (!man.inAir)
man.jump=true;
}
}
function up(event:KeyboardEvent)
{
if(event.keyCode==37)
{man.moveLeft=false;}
else if(event.keyCode==39)
{man.moveRight=false;}
count();
function count()
{ for (var a:int=0; a<this.rect.numChildren; a++)
{
var mc:Object=this.rect.getChildAt(a);
if (mc is wall)
{
var floorwall:Object=new Object();
floorwall.topside=mc.y;
floorwall.bottomside=mc.y+mc.height;
floorwall.leftside=mc.x;
floorwall.rightside=mc.x+mc.width;
wal[t]=floorwall;
t++;
}
}
}
function moveman(Char:Object, timediff:int)
{
var vertical:Number=Char.dy + gravitytimediff;
if (vertical>15)
vertical=15.0;
Char.dy+= timediffgravity;
var horizontalDist:Number=0;
var newDirection:int=Char.direction;
if (Char.moveLeft)
{
horizontalDist=-Char.walkspeed * timediff;
newAnimstate=“walk”;
newDirection=-1;
}
else if(Char.moveRight)
{
horizontalDist=Char.walkspeed*timediff;
newAnimstate="walk";
newDirection=1;
}
if(Char.jump)
{
Char.jump=false;
vertical=-Char.jumpspeed;
newAnimstate="jump";
}
var newY:Number= Char.mc.y + vertical;
var newX:Number= Char.mc.x+ horizontalDist;
Char.hitWallLeft=false;
Char.hitWallRight=false;
Char.inAir=true;
for (var j:int=0;j<wal.length; j++)
{
if ((Char.mc.x+Char.width/2 >wal[j].leftside) &&
(Char.mc.xChar.width/2<wal[j].rightside))
{ if ((Char.mc.y <= wal[j].topside)&(newY>wal[j].topside))
{
newY=wal[j].topside-Char.width/10;
Char.inAir=false;
Char.dy=.5;
break;
}
}
}
for (var j:int=0; j<wal.length; j++)
{
if((newY>wal[j].topside) && (newY-Char.height<wal[j].bottomside))
{
if (( (Char.mc.x- Char.width/2) >=wal[j].rightside) &&
((newX-Char.width/2 )<= wal[j].rightside))
{
newX=wal[j].rightside + Char.width/2;
Char.hitWallLeft=true;
break;
}
else if (((Char.mc.x+Char.width/2)<=wal[j].leftside) &&
(newX +Char.width/2>=wal[j].leftside))
{
newX=wal[j].leftside-Char.width/2;
Char.hitWallRight=true;
break;
}
}
}
Char.mc.x=newX;
Char.mc.y=newY;
if (Char.inAir)
{
newAnimstate="jump";
}
else if(!Char.inAir)
{
newAnimstate="walk";
}
Char.animstate=newAnimstate;
if (Char.animstate == "walk")
{
Char.animstep += timediff/60;
trace(Char.animstep);
if (Char.animstep > Char.walkAnimation.length)
{
Char.animstep = 0;
}
}
else
{
Char.mc.gotoAndStop(Char.animstate);
Char.mc.gotoAndStop(Char.walkAnimation[Math.floor(Char.animstep)]);
}
if (newDirection != Char.direction)
{
Char.direction = newDirection;
Char.mc.scaleX =-.08;
}
}
function gameloop(event:Event)
{
if (lastTime==0)
lastTime=getTimer();
var timeDiff:int=lastTime-getTimer();
lastTime+=timeDiff;
moveman(man,timeDiff);
}