Actionscript 3 命中测试点条件

Actionscript 3 命中测试点条件,actionscript-3,flash,Actionscript 3,Flash,当我选择的所有对象都在正确的位置时,我尝试使用hitTestPoint语法来启动计时器。当它们被拖过来并在附近释放时,它们都会捕捉到正确的位置。不幸的是,我的计时器无法启动。我不明白为什么它不会启动。我的flash教授也不知道。我会很快回来看看这个问题,希望我已经给了你们实现这一目标所需要的一切 addEventListener(Event.ENTER_FRAME,completion); function completion(event:Event):void { if (EYEO

当我选择的所有对象都在正确的位置时,我尝试使用hitTestPoint语法来启动计时器。当它们被拖过来并在附近释放时,它们都会捕捉到正确的位置。不幸的是,我的计时器无法启动。我不明白为什么它不会启动。我的flash教授也不知道。我会很快回来看看这个问题,希望我已经给了你们实现这一目标所需要的一切

addEventListener(Event.ENTER_FRAME,completion);
function completion(event:Event):void
{

    if (EYEOVERLEFT_MC.hitTestPoint(EYELEFT_MC.x,EYELEFT_MC.y) && 
        EYEOVERRIGHT_MC.hitTestPoint(EYERIGHT_MC.x,EYERIGHT_MC.y) && 
        NOSEOVER_MC.hitTestPoint(NOSEUNDER_MC.x,NOSEUNDER_MC.y) &&
        LOCKOVER_MC.hitTestPoint(LOCKUNDER_MC.x,LOCKUNDER_MC.y) &&
        ROSEOVER_MC.hitTestPoint(ROSEUNDER_MC.x,ROSEUNDER_MC.y) &&
        CHAINOVER_MC.hitTestPoint(CHAINUNDER_MC.x,CHAINUNDER_MC.y) &&
        LEAFOVER_MC.hitTestPoint(LEAFUNDER_MC.x,LEAFUNDER_MC.y)){

        var timer:Timer = new Timer(1000,2);
            timer.addEventListener(TimerEvent.TIMER_COMPLETE, timerComplete);
            timer.start();
            trace("Timer Start");
        }

        function timerComplete(e:TimerEvent):void
        {
            trace("Timer Finished");
        }

        removeEventListener(Event.ENTER_FRAME,completion);
        nextFrame();
    }
}

答案很简单-您只是没有在
if
语句中进行正确的检查-并非所有检查都是正确的

因此,您需要检查每个(使用多个if语句)并查看问题出在哪里。有些情况不正常,这可能是您的其他逻辑(移动这些东西)的结果

我们帮不了你,所以如果你害怕的话,继续挖下去

p、 美国。 让代码保持良好的格式和设计是很好的。不要用大写


编辑:为什么要移动到下一帧?我不确定这对计时器是否合适:)

是什么阻止了您的代码无休止地创建计时器?您的
completion
函数将为每一帧调用。如果该条件满足一次,那么在随后的每一帧都会满足该条件,并且会创建计时器。您的代码示例也是一团糟。你应该把它清理干净,以确保括号匹配。谢谢你,波波夫先生,我为我粗俗的编码向大家道歉。你是在建议我在所有条件句之间拼接一个“if”函数吗?这是故障排除还是必要代码的一部分。这是故障排除和调试的必要条件,但通常最好不要有这么长的if语句,因为它很难阅读、很难维护,而且正如您所看到的那样-很难调试:)如果您能创建一个帮助函数,这样您就可以只执行:
if(hits(eyeooverleft,eyeoleft))就好了{
-看起来更容易,对吗?