2016-04-06 11 views
-1

Ich arbeite an einem Projekt, bei dem ein Objekt wie ein Quadrat verschwinden soll, wenn die Koordinaten mit denen eines anderen Objekts übereinstimmen. Das erste Quadrat sollte auf dem zweiten Quadrat platziert werden, und das erste Quadrat ist kleiner als das zweite Quadrat.Objekt vom Bildschirm durch Koordinaten entfernen

Hier ist der Code:

public function weg(e:Event):void 
    { 
    if (b.x < a.x && b.y < a.y && b.x + 60 > a.x + 50 && b.y + 60 > a.y + 50) 
     { 
      removeChild(a); 
     } 
    } 

Die +50 von der Breite und Höhe kommt von Quadrat 1 (a) und die +60 kommt von der Breite und Höhe der quadratischen 2 (b).

Ich kann nicht scheinen, die Lösung für das Problem zu finden. Kann mir jemand helfen?

+0

Nur wenn die Koordinaten * genau * gleich sind wie bei einem anderen Objekt? Warum die '- 50' dann? Welches Verhalten gibt Ihnen dieser Code und * genau * welches Verhalten erwarten Sie? – Aaron

Antwort

0

Die Koordinaten von square1 können nicht größer sein als square1 (zuerst if query) und andererseits kleiner als square2 - 50 (second if query). Das wird also niemals wahr sein.

Wenn Sie überprüfen wollen, ob die Koordinaten die gleiche nur Gebrauch sind:

public function check():void 
{ 
    if (square1.x == square2.x && sqaure1.y == square2.y) 
    { 
     removeChild(square1); 
    } 
} 
0

ein Objekt wie ein Quadrat sollte verschwinden, wenn die Koordinaten der gleiche wie ein anderes Objekt sind.

Wenn dies wahr ist, dass Sie brauchen einfach:

if (square1.x == square2.x && square1.y == square2.y) { 
    removeChild(square1); 
} 

jedoch der Code, den Sie geschrieben verwendet ein Offset von -50. Sie erklären nicht, was Sie mit diesem Wert versuchen (es funktioniert nicht, weil x1 > x2 && x1 < x2 - 50 ist unmöglich), so dass ich nur rate, aber vielleicht möchten Sie Überlappung Quadrate entfernen? Sie können tun, dass eine Reihe von Möglichkeiten, hier ist eine:

if (square1.getBounds(this).intersects(square2.getBounds(this))) { 
    removeChild(square1); 
} 

Oder vielleicht möchten Sie Quadrate entfernen, die in einem gewissen Abstand voneinander sind. Sie könnten das so tun:

if (Point.distance(new Point(square1.x, square1.y), new Point(square2.x, square2.y)) < 50) { 
    removeChild(square1); 
} 

Oder vielleicht meinst du etwas anderes. Bitte aktualisieren Sie Ihre Frage, wenn dies der Fall ist.

Verwandte Themen