Actionscript 3 testHitObject返回了一个不正确的";“真的”;前几帧上的值

Actionscript 3 testHitObject返回了一个不正确的";“真的”;前几帧上的值,actionscript-3,flash-cs6,hittest,Actionscript 3,Flash Cs6,Hittest,我似乎缩小了我的问题范围。在我使用removeChild()函数后,发生的情况是敌人的实例仍然存在。只是现在我因为某种原因看不见它。它的x和y属性等于0。因此,如果我将飞船移动到x=0,它将有一个“隐形”敌人与之碰撞。所以我认为我的问题是我没有正确地删除实例?如果没有,你能帮我吗 if I add the else statement I do receive the "not hit" in my output window, so it looks like the statement on

我似乎缩小了我的问题范围。在我使用removeChild()函数后,发生的情况是敌人的实例仍然存在。只是现在我因为某种原因看不见它。它的x和y属性等于0。因此,如果我将飞船移动到x=0,它将有一个“隐形”敌人与之碰撞。所以我认为我的问题是我没有正确地删除实例?如果没有,你能帮我吗

if I add the else statement I do receive the "not hit" in my output window, so it looks like the statement only returns true on the first few frames, when it is supposed to return false. Now my problem is that the code wants to remove child objects before they've even been created. I just want to achieve basic collision detection between the enemy and the bullet so that i can remove both children when an enemy is shot. Please keep in mind that there will be multiple enemies and bullets on the stage at a given time.
`
    `    <pre>


 var BulletsArr:Array = new Array();
    var EnemysArray:Array = new Array();

    for(i = 0; i < 5; i++)
    {
        BulletsArr[i] = new Bullet();
    }

    for(i = 0; i < 5; i++)
    {
        EnemysArray[i] = new Enemy();
        //EnemysArray[i].x = 2000; //Fix
        //EnemysArray[i].y = 2000; //Fix
    }

    stage.addChild(Ship);

    Ship.addEventListener(Event.ENTER_FRAME, fnEnterFrame);

    function fnEnterFrame(event:Event)
    {
      txtScore.text = "Score: " + score;
    //Make Ship follow cursor
        Ship.x = stage.mouseX;

        //Boundries
        if (Ship.x > 500)
        {
            Ship.x = 550 - 50;
        }

        if (Ship.x <= 0)
        {
            Ship.x = 0 ;
        }

            for(var i = 0; i < 5; i++){
            for(var p = 0; p < 5; p++)
            {
                if(BulletsArr[i].hitTestObject(EnemysArray[p]))
                {
                    remove(BulletsArr[i]);
                    removeChild(EnemysArray[p]);
                }

    for(i = 0; i < 5; i++)
         {  
            BulletsArr[i].y -= 15;
         }

    for(i = 0; i < 5; i++)
         {  
            EnemysArray[i].y += 5;
         }

    for(var z = 0; z < 5; z++)
            {
               if(Ship.hitTestObject(EnemysArray[z])
                 {
                    Ship.parent.removeChild(Ship);
                    EnemysArray[z].parent.removeChild(EnemysArray[z]);
                    trace("Game over");
                 }

            }
for(i = 0; i < 5; i++)
{ 
var found:Boolean = false;
    for(var p = 0; p < 5; p++)
    {
        if(BulletsArr[i].hitTestObject(EnemysArray[p]))
        {
            BulletsArr[i].parent.removeChild(BulletsArr[i]);
            BulletsArr[i] = new Bullet();


            EnemysArray[p].parent.removeChild(EnemysArray[p]);
            EnemysArray[p] = new Enemy();
            //EnemysArray[p].x = 2000;//fix
            //EnemysArray[p].y = 2000;//fix

            score += 50;

            found = true;
            break;
        }

        if(found)
        {
            break;
        }
    }   
            }
        }

    var count_Enemys:int = 0;
    var Timer_3_sec:Timer = new Timer(3000, 0);
    Timer_3_sec.start();

    Timer_3_sec.addEventListener(TimerEvent.TIMER,spawn_ship);

    function spawn_ship(Event:TimerEvent):void
    {
       if(count_Enemys >= 5)
    {
        count_Enemys = 0;       
        EnemysArray[count_Enemys].x = fl_GenerateRandomNumber(450) + 70;
        EnemysArray[count_Enemys].y = 0 - fl_GenerateRandomNumber(250) - 100;
        addChild(EnemysArray[count_Enemys]);
        count_Enemys++;
    }
    else
    {       
        EnemysArray[count_Enemys].x = fl_GenerateRandomNumber(450) + 70;
        EnemysArray[count_Enemys].y = 0 - fl_GenerateRandomNumber(250) - 100;
        addChild(EnemysArray[count_Enemys]);
        count_Enemys++;
    }
}
        `</code>
var BulletsArr:Array=new Array(); var EnemysArray:Array=new Array(); 对于(i=0;i<5;i++) { BulletsArr[i]=新项目符号(); } 对于(i=0;i<5;i++) { 敌人阵列[i]=新敌人(); //EnemysArray[i].x=2000;//修复 //EnemysArray[i].y=2000;//修复 } 舞台:addChild(船); Ship.addEventListener(Event.ENTER\u FRAME,fEnterFrame); 函数FnterFrame(事件:事件) { txtScore.text=“分数:”+分数; //使船舶跟随光标 Ship.x=stage.mouseX; //边界 如果(装运x>500) { 船舶x=550-50; } 如果(装运x=5) { 计数敌人=0; EneysArray[count_Eneys].x=fl_GeneratorDomainNumber(450)+70; EneysArray[count_Eneys].y=0-fl_GeneratorDomainNumber(250)-100; addChild(EneysArray[count_Eneys]); 计数敌人++; } 其他的 { EneysArray[count_Eneys].x=fl_GeneratorDomainNumber(450)+70; EneysArray[count_Eneys].y=0-fl_GeneratorDomainNumber(250)-100; addChild(EneysArray[count_Eneys]); 计数敌人++; } } `

这里涉及的代码肯定比您包含的几行代码多得多?这并没有提供太多的信息。除了该方法不能弥补命中之外,没有任何东西可以从代码中扣除。该方法永远不会返回不正确的值,编码器(在本例中是您)总是错误地输入该方法。您正在谈论的代码被注释掉。请以与您使用的完全相同的方式发布代码。请把剩下的代码也贴出来。