首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从运动中放松时获得NaN

从运动中放松时获得NaN
EN

Stack Overflow用户
提问于 2013-10-12 14:04:52
回答 1查看 57关注 0票数 1

我有个问题。在第一次运行的时候,我做了一些摩擦动作,轻松地运行了代码,但是在第一次运行后没有正常运行。我添加了要调试的跟踪命令,并且在第一次运行vx值后返回NaN。

leftPressed是一个布尔型

righPressed是一个布尔型

vx是x的速度

摩擦是缓和的速度。

代码语言:javascript
复制
    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;

下面是所使用的代码:包括工作正常的跳跃轻松代码。

代码语言:javascript
复制
        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;
                }
            }
        }
EN

回答 1

Stack Overflow用户

发布于 2013-10-13 07:51:57

看来这一行:

代码语言:javascript
复制
if (vx == 0)
{
    vx = vxInitial;
}

不会被第一次调用,因为vx最初等于0.4 (不是零)。但是,在第一次运行期间,vx设置为零:

代码语言:javascript
复制
if (vx < 0)
{
     lastMove = "No Move";
     trace("lastMove Right");
     vx = 0;
}

因此,下一次运行vx时,vx设置为vxInitial的值,该值似乎没有值:

代码语言:javascript
复制
public var vxInitial:Number;//This is initialised later (Is it?)

设置vxInitial,它不应该出错。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19335072

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档