0

我知道这应该是可能的,而且我对我的代码非常有信心。我有两个从另一个函数动态填充的数组。当每个数组中的两个精灵交互时,它们应该触发一个函数,但此时它们只是滑过彼此。

public function mixGender ():void
{
    for (var gi:int = 0; gi < firstSpriteArray.length; gi++)
    {
        var sprite1 = firstSpriteArray[gi];
        for (var pi:uint = 0; pi < secondSpriteArray.length; pi++)
        {
            var sprite2:pinkSprite = secondSpriteArray[pi];
            var dist = getDistance(sprite1.x,sprite1.y,sprite2.x,sprite2.y);
            if (dist < 28)
            {
                /*and if they are within touching range calls a function.*/
                function ();
            }
        }
    }
}

一定有一些明显的我失踪了。有什么提示吗?

4

1 回答 1

1

试一试:

public function mixGender():void
{
    // Method constants
    var radius:int = 28;

    // Collisions
    for each(var a:Sprite in firstSpriteArray)
    {
        for each(var b:Sprite in secondSpriteArray)
        {
            // Measure distance
            var d:Number = Point.distance(
                new Point(a.x, a.y),
                new Point(b.x, b.y)
            );

            if(d < radius)
            {
                trace('collision');
            }
        }
    }
}

在时间线上使用此代码进行一些测试:

var firstSpriteArray:Array = [new Sprite()];
var secondSpriteArray:Array = [new Sprite()];

mixGender(); // collision

firstSpriteArray[0].x = 29;
mixGender(); // nothing
于 2011-09-26T07:39:41.597 回答