我有个问题。在第一次运行的时候,我做了一些摩擦动作,轻松地运行了代码,但是在第一次运行后没有正常运行。我添加了要调试的跟踪命令,并且在第一次运行vx值后返回NaN。
leftPressed是一个布尔型
righPressed是一个布尔型
vx是x的速度
摩擦是缓和的速度。
public var vy:Number = 30;
public var vyInitial:Number;//This is initialised later
public var gravity:Number = 2.0;
public var vx:Number = 0.4;
public var vxInitial:Number;//This is initialised later
public var friction:Number = 0.4;下面是所使用的代码:包括工作正常的跳跃轻松代码。
if (leftPressed)
{
if (vx == 0)
{
vx = vxInitial;
}
char.x -= vx;
lastMove = "Left";
}
else if (rightPressed)
{
if (vx == 0)
{
vx = vxInitial;
}
char.x += vx;
lastMove = "Right";
}
else if (rightPressed == false && leftPressed == false)
{
if (lastMove == "Right" && rightPressed == false && leftPressed == false)
{
vx -= friction;
trace(vx);
if (vx < 0)
{
lastMove = "No Move";
trace("lastMove Right");
vx = 0;
}
else if (vx > 0)
{
trace("moving left");
char.x += vx;
}
}
else if (lastMove == "Left" && rightPressed == false && leftPressed == false)
{
vx -= friction;
trace(vx);
if (vx < 0)
{
lastMove = "No Move";
trace("lastMove Left");
vx = 0;
}
else if (vx > 0)
{
trace("moving LEft");
char.x -= vx;
}
}
}发布于 2013-10-13 07:51:57
看来这一行:
if (vx == 0)
{
vx = vxInitial;
}不会被第一次调用,因为vx最初等于0.4 (不是零)。但是,在第一次运行期间,vx设置为零:
if (vx < 0)
{
lastMove = "No Move";
trace("lastMove Right");
vx = 0;
}因此,下一次运行vx时,vx设置为vxInitial的值,该值似乎没有值:
public var vxInitial:Number;//This is initialised later (Is it?)设置vxInitial,它不应该出错。
https://stackoverflow.com/questions/19335072
复制相似问题