Actionscript 3 多HitTestObject ActionScript 3.0

Actionscript 3 多HitTestObject ActionScript 3.0,actionscript-3,hittest,Actionscript 3,Hittest,我一直在开发AS3中的视频游戏。我有一个数组来绘制一个包含道路、火力、终点门等的游戏场。然后,我添加一个由玩家通过鼠标控制的MovieClip,并尝试检查与道路MovieClip的碰撞 然而,我不工作。。。它从不跟踪“IN”。我在我的代码中找不到任何错误-但你永远无法确定。。。 你能帮我解决这个问题吗 谢谢大家 代码如下: Declarations: public class Player extends MovieClip { public var play

我一直在开发AS3中的视频游戏。我有一个数组来绘制一个包含道路、火力、终点门等的游戏场。然后,我添加一个由玩家通过鼠标控制的MovieClip,并尝试检查与道路MovieClip的碰撞

然而,我不工作。。。它从不跟踪“IN”。我在我的代码中找不到任何错误-但你永远无法确定。。。 你能帮我解决这个问题吗

谢谢大家

代码如下:

 Declarations:
    public class  Player extends MovieClip
    {
        public var player:MovieClip;
        public var road:MovieClip;
        public var finish:MovieClip;
        public var fire:MovieClip;
        public var sting:MovieClip;

        public var map:Array = new Array();
阵列初始化:

/* 1 ROAD
         * 2 FINISH
         * 3 FIRE
         * 4 STRING
         */

        public function Player():void
        {
            map = [ [ 1, 1, 3, 3, 3, 3, 3, 3, 1, 1 ],
                    [ 1, 1, 3, 4, 4, 4, 4, 3, 1, 1 ],
                    [ 1, 1, 3, 4, 4, 4, 4, 3, 1, 1 ],
                    [ 1, 1, 3, 3, 3, 3, 3, 3, 1, 1 ],
                    [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 ],
                    [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 2 ],
                    [ 1, 1, 3, 3, 3, 3, 3, 3, 1, 1 ],
                    [ 1, 1, 3, 4, 4, 4, 4, 3, 1, 1 ],
                    [ 1, 1, 3, 4, 4, 4, 4, 3, 1, 1 ],
                    [ 1, 1, 3, 3, 3, 3, 3, 3, 1, 1 ]
                  ];
            // 10 x 10 array
添加hitTest功能:

addEventListener(  Event.ENTER_FRAME, playerHitTest );
public function playerHitTest( e:Event ):void
{
    if ( player.hitTestObject( road ) )
    {

        trace("IN");
    }
}
和测试功能:

addEventListener(  Event.ENTER_FRAME, playerHitTest );
public function playerHitTest( e:Event ):void
{
    if ( player.hitTestObject( road ) )
    {

        trace("IN");
    }
}
PS:如果我做了条件
!player.hitTestObject(road)
,它始终跟踪“IN”


再次感谢

这里没有足够的代码来准确查看发生了什么,但很明显,命中测试将失败,因为您只检查一个道路对象,但根据地图数组,应该有许多道路对象

您将需要一个数组来存储道路对象:

var roadArray:Array = [];
无论在何处创建道路对象,都应将其插入该阵列:

roadArray.push(road);
然后,在执行hitTest时,必须在整个阵列中循环,并检查每个道路对象是否存在碰撞:

public function playerHitTest( e:Event ):void
{
    for each(var road in roadArray)
    {
        if ( player.hitTestObject( road ) )
        {    
            trace("IN");
        }
    }
}