1
我遇到問題。我使用摩擦進行了移動,並且在第一次運行時緩解了代碼運行的困難,但是在第一次運行之後無法正常運行。我已添加跟蹤命令進行調試,並在第一次運行後返回NaN。緩解運動時獲得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;
}
}
}
你可以添加一些代碼,關於vx的聲明,並將其作爲局部變量或全局使用 –
我沒有看到關於'vx'的代碼有什麼問題......也許問題在於你的其他地方在說'vx = null'? – Pier
在將'vxInitial'的值賦給'vx'之前,你初始化了'vxInitial'嗎?試試'public var vxInitial:Number = 0'; //這是稍後初始化的',並且對於vyInitial是一樣的。 – Vesper