0

私はこれが可能であるべきだと知っており、Imは私のコードにかなり自信を持っています。別の関数から動的に入力される2つの配列があります。各配列からの2つのスプライトが相互作用すると、それらは関数をトリガーする必要がありますが、現時点では、それらは互いにすれ違うだけです。

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 に答える