Ich habe meine eigene Schaltfläche, die einfach von Sprite erweitert. Es kann 3 verschiedene Text ein- und ausblenden mit einem Timer. In meiner Zeichenfunktion zeichne ich zuerst ein Rechteck mit dem Sprites-Grafikobjekt, das den Hintergrund der Schaltfläche darstellt.AS3 zieht größer Sprite als ich gesetzt habe (Padding/Marge?)
Ich habe eine Funktion hinzugefügt, um die Breite der Schaltfläche festzulegen. Diese Eigenschaft wird zum Zeichnen des Rechtecks verwendet. Ich weiß, dass die Größe der Sprites nach der Rechteckzeichnung aktualisiert wird. Aber aus irgendeinem Grund ist die Breite des Sprites immer größer als die, die ich über meine "setButtonWidth" -Funktion eingestellt habe.
Jetzt habe ich ein einfaches Sprite, das als ein Knopf fungiert, der einen graphics.drawRectangle Teil hat, der ein einfaches rect zeichnet. mit sagen wir 500 px Breite. Aber wenn ich die Breite dieses Knopfes aufspüre, ist es immer ungefähr 10% mehr. Woher kommen diese 10%?
Ich las über den Aufruf von validateNow(). Dies gilt jedoch nur für Labels oder Checkboxen. Aus irgendeinem Grund kann ich nicht auf die Bibliothek für Label zugreifen. Dies muss irgendwie mit TextFields funktionieren. Aber wie?
// this function is part of MyButtonClass.as file
function drawButton()
{
this.graphics.clear();
this.graphics.beginFill(currentBackColor);
this.graphics.drawRoundRect(0, 0, int(this.buttonWidth)+20, 30, 10, 10);
this.graphics.endFill();
}
// this code is in main action code frame
// the buttonWidth is set this way
stage.addEventListener(Event.RESIZE, updateBtn);
function updateBtn(event:Event)
{
// access the container in which the buttons are in like ...
for(var i = 0; i < buttonContainer.numChildren; i++) {
var btn = buttonContainer.getChildAt(i) as MyButtonClass;
// MyButtonClass is the class which extends from Sprite drawing my button
// and using buttonWidth to draw the backgrounds width.
btn.setButtonWidth((stage.stageWidth/2) - 20);
// i set half of stageWidth because i have two columns with a list of buttons
// after setButtonWidth is called in MyButtonClass, the draw function is called
// which does the graphics stuff above.
}
}
this.buttonWidth ist auf 500. Es gibt nichts besonderes an diesem Sprite getan ist. Keine Kinder hinzugefügt werden, nur dieses Zeichen Zeug. Aber das setzt die Breite des Sprites auf 550 oder so.
Sie sicher sind, dass die Schaltfläche Breite tatsächlich 500px breit ist und Sie nicht die Breite des Rahmens/Text fehlt Felder/niedriger Alpha-Gehalt? – Marty
Vorsicht, wie 'this.buttonWidth' eingestellt ist? All dieser Code ist, dass die Breite aus einer Variablen namens "ButtonWidth" + 20 Pixel berechnet wird, bezweifle ich, dass dies die Probleme verursacht, die Sie haben. – Daniel
Wie ist 'buttonWidth' eingestellt? Was ist der Typ von 'buttonWidth' und was nutzt typecasting mit' int'? – Diode