Actionscript 3 将脚本放入movieclip时跳转函数出错

Actionscript 3 将脚本放入movieclip时跳转函数出错,actionscript-3,movieclip,Actionscript 3,Movieclip,我的platformer引擎的跳转函数有问题。我已经将所有的命中测试转移到了这个级别的各个平台上,所以我不必为每个平台写东西。问题是,只有第一部加入舞台的电影才能跳上舞台。其他人只是让球员下沉通过地板,如果向上被按住(因为他们应该-因为他不应该在那里,没有什么可以阻止他)。 所以问题是跳转检查在第二个块上没有正确注册。这是代码(很抱歉,MovieClip(父级)过多) var playerRef:MovieClip=MovieClip(父).player; stage.addEventListe

我的platformer引擎的跳转函数有问题。我已经将所有的命中测试转移到了这个级别的各个平台上,所以我不必为每个平台写东西。问题是,只有第一部加入舞台的电影才能跳上舞台。其他人只是让球员下沉通过地板,如果向上被按住(因为他们应该-因为他不应该在那里,没有什么可以阻止他)。 所以问题是跳转检查在第二个块上没有正确注册。这是代码(很抱歉,MovieClip(父级)过多)

var playerRef:MovieClip=MovieClip(父).player;
stage.addEventListener(Event.ENTER_FRAME,hitUpdate);
功能更新(e:事件):无效{
if(playerRef.hitTestPoint(playerRef.x,this.y-(playerRef.height/2))&&playerRef.x+playerRef.width>this.x&&playerRef.xthis.x&&playerRef.xthis.y&&playerRef.ythis.y和&playerRef.y
跳转函数的运行方式如下:

stage.addEventListener(Event.ENTER_FRAME, updates);
function updates(e:Event):void{

    player.y += downMomentum;

    if(!groundTouch && downMomentum < downMomCap){
        downMomentum += gravity;
    }
    if(downMomentum > downMomCap){
        downMomentum = downMomCap;
    }

    if(upDown && !jumping && groundTouch){
        jumping = true;
        jumpTimer.reset();
        jumpTimer.start();
    }
}

jumpTimer.addEventListener(TimerEvent.TIMER, jumpTick);
function jumpTick(e:TimerEvent):void{
    if(downMomentum*-1 < downMomCap){
        downMomentum  -= jumpProg * jumpIncrement;
    }else{
        downMomentum = downMomCap * -1;
    }
    jumpProg -= 1;
}

jumpTimer.addEventListener(TimerEvent.TIMER_COMPLETE, jumpDone);
function jumpDone(e:TimerEvent):void{
    jumpTimer.stop();
    jumping = false;
    jumpProg = 5;
}
stage.addEventListener(Event.ENTER\u FRAME,更新);
功能更新(e:事件):无效{
player.y+=向下动量;
如果(!触地和向下动量向下动量){
向下动量=向下动量上限;
}
if(上下跳跃和触地){
跳跃=正确;
jumpTimer.reset();
jumpTimer.start();
}
}
jumpTimer.addEventListener(TimerEvent.TIMER,jumpTick);
函数jumpTick(e:TimerEvent):无效{
if(向下动量*-1<向下动量上限){
向下动量-=跳跃进度*跳跃增量;
}否则{
向下动量=向下动量上限*-1;
}
jumpProg-=1;
}
jumpTimer.addEventListener(TimerEvent.TIMER\u完成,jumpDone);
函数jumpDone(e:TimerEvent):无效{
jumpTimer.stop();
跳跃=错误;
jumpProg=5;
}

我只是找不到解决办法,尽管我怀疑这与它如何检查触摸平台的玩家有关

你有
MovieClip(家长)。播放器
到处都是,这让你的代码看起来很难看。尝试创建一个引用播放器的局部变量,这样可以使内容更具可读性。例如-
var playa:MovieClip=MovieClip(父级)。播放器为MovieClip
实际上这是一个非常好的主意。谢谢,我已经替换了主帖子中的代码
stage.addEventListener(Event.ENTER_FRAME, updates);
function updates(e:Event):void{

    player.y += downMomentum;

    if(!groundTouch && downMomentum < downMomCap){
        downMomentum += gravity;
    }
    if(downMomentum > downMomCap){
        downMomentum = downMomCap;
    }

    if(upDown && !jumping && groundTouch){
        jumping = true;
        jumpTimer.reset();
        jumpTimer.start();
    }
}

jumpTimer.addEventListener(TimerEvent.TIMER, jumpTick);
function jumpTick(e:TimerEvent):void{
    if(downMomentum*-1 < downMomCap){
        downMomentum  -= jumpProg * jumpIncrement;
    }else{
        downMomentum = downMomCap * -1;
    }
    jumpProg -= 1;
}

jumpTimer.addEventListener(TimerEvent.TIMER_COMPLETE, jumpDone);
function jumpDone(e:TimerEvent):void{
    jumpTimer.stop();
    jumping = false;
    jumpProg = 5;
}