Ich habe Probleme mit Rechtecken, die sich von ihren zugewiesenen Positionen bewegen, wenn ich nur ihre Breite verringern möchte. Ein Spiel, an dem ich gerade arbeite, simuliert einen Sprengstoff mit einer Zündschnur. Die Sicherung nimmt in der Größe ab, wenn eine Uhr auf 0 herunter zählt. Ich denke, das Problem hat mit lokalen Koordinaten im Vergleich zu globalen Koordinaten zu tun, aber ich bin mir nicht sicher, wie ich das Problem beheben soll. Hier ist ein Code:Wie man verhindert, dass sich ein Rect aus seiner Position bewegt, wenn die Breite abnimmt
//fuse
_fuse = new Sprite();
_fuse.graphics.beginFill(0x000000);
_fuse.graphics.drawRect(630, 340, (_fuseCounter/_fuseWidth) * 120, 20);
_fuse.graphics.endFill();
Und hier ist, wo ich seine Breite jedes Rahmens verringern:
//decrease fuse to give the player a visual of urgency.
_fuseCounter--;
_fuse.width = (_fuseCounter/ _fuseWidth) * 120;
Nirgendwo in meinem Code hat die x-Position der Sicherung ändern. Abgesehen von diesem einen Problem funktioniert das Rect genau so, wie ich es möchte. Jede Hilfe mit diesem Problem wird geschätzt.
Wenn Sie die Größe eines Anzeigeobjekts ändern, ändert sich die Größe basierend auf dem Registrierungspunkt des Rechtecks. Wenn Sie die Größe von links nach rechts ändern möchten, setzen Sie den Registrierungspunkt links von der Grafik (setzen Sie "0" in das dritte Argument von 'drawRect()'). – Marty
@Marty Wallace dies löste das Problem nicht ganz, aber ich lernte etwas kritisches darüber, wie die Sprites tatsächlich gezeichnet werden. Vielen Dank! – King