Ich versuche, zwei Kreise um einen Punkt zu machen und fülle zwischen diesen Punkten und höre auf einen Klick zwischen den Kreisen - actionscript-3, circle, addeventlistener

Ich versuche etwas für ein Spiel zu machenHerstellung. Wenn jemand auf den Movieclip klickt, möchte ich, dass er einen inneren Kreis und einen äußeren Kreis zeichnet. Ich möchte zwischen den Kreisen mit einer undurchsichtigen Farbe füllen (lila im Bild), so dass die Leute im Grunde einen großen, dicken Kreis um den Filmclip herum sehen können, aber nicht den Filmclip berühren, sondern prüfen müssen, ob der Mausklick zwischen den beiden Kreisen stattfindet nur.

Das Bild unten zeigt was ich meine. Die Sache ist die Dicke des lila Bit muss einstellbar sein (nicht im Spiel als solches), wenn Sie auf 1 MovieClip die Dicke des lila Bit kann 10 Pixel sein, ein anderer Clip kann 50 sein. Offensichtlich für einen Klick größer prüfen als innerer Kreis x und weniger als äußerer Kreis arbeitet nur auf einer geraden Linie gegenüber dem Clip, sobald Sie nach oben oder unten bewegen das funktioniert nicht so gut. Jede Hilfe wird sehr geschätzt, wie ich nicht scheinen, dies zu erarbeiten. Ich habe versucht, 2 Kreise zu zeichnen und habe auch versucht, 2 MovieClip-Kreise zu verwenden, aber es kann nicht funktionieren.

Anscheinend kann ich hier keine Bilder hochladen. Der einfachste Weg ist, an ein Zeichen ohne Eingabe zu denken, ohne dass die Zeile / durch die Mitte geht. Der Mittelpunkt ist der MovieClip, der innere Teil des roten Kreises der innere Kreis und der äußere der äußere Kreis, aber zu keinem Zeitpunkt berührt das Rot den MovieClip

Antworten:

2 für die Antwort № 1

Ich würde die Entfernung von der Mitte von messendie Kreise zum Mausklickpunkt. Dann muss nur überprüft werden, ob der Abstand größer als der innere Kreisradius und kleiner als der äußere Kreisradius ist.

Etwas in dieser Richtung:

var clickPoint:Point = new Point(mouseX, mouseY);
var centerPoint:Point = new Point(circleMC.x circleMC.y);
var dist:Number = Point.distance(clickPoint, centerPoint);

if(dist > innerRadius && dist < outerRadius){
trace("the click happened between circles
}

Am beliebtesten